Every time I read an article or book about UML “Use Cases” I cringe a little bit. Every author says something like “Jacobson left the definition of a Use Case too open,” and then they try to work through some elaborate scheme of what a Use Case means to them. IMHO, the best use case definition was created in the early 1980s, long before Jacobson mentioned the term.
Every once in a while when something hits you, you really remember it; it stands out in your mind as an “Aha” moment. One of those moments for me was when I saw a particular “Model/View/Controller” (MVC) diagram, and the light bulb went on. This diagram made the MVC pattern very simple, and I’ve never forgotten it.
After writing several recent Model View Controller (MVC) pattern articles (A Model View Controller diagram, Model View Controller definitions), I thought it might help to share a real-world implementation of an MVC design. To that end, I'd like to share some information from a Java/Swing GUI application I wrote several years ago to help me in my work with Function Point Analysis (FPA).
Just a quick note that over the last few days I finished a major re-work of my old Java and Object Oriented Programming (OOP) training material. I used variations of this Java/OOP training material with several classes I taught from 1998 through about 2005.
I still need to make a few more changes to improve the material, but this big change involved reformatting the training material (courseware) into much longer pages that are easier to read, and improving the appearance of the pages.
Model View Controller pattern FAQ: Can you provide some examples and definitions of MVC objects?
Earlier today I shared a Model View Controller (MVC) diagram that I think really simplifies the MVC design pattern. It lays out the interaction rules between MVC elements, i.e., which objects can communicate with each other in a proper MVC design.
MVC Controller - our MainController class
As its name implies, the MainController is the main controller/coordinator of our MVC application. It creates the other controllers, and in many ways then turns control over to these other controllers. One of the controllers it creates is the ProcessController.
MVC - Handling data-changing events
Whenever the user adds, edits, or deletes data, such as our Process data, all the proper GUI components need to be notified of this event so they can properly update their displays. In this application, when a user adds a new Process, this means that we need to update our MainProcessTable. We implement this as follows:
Several years ago I taught classes on Java programming and Object-Oriented Analysis and Design (OOA/OOD). After using Java training material from other companies for a little while (and being unhappy with their quality and high fees), I decided to write my own Java course material.
Today I'm glad to announce that I'm giving this Java and OOA/OOD training material (150+ pages) away for free -- no registration required. (I always hate it when I have to "register" to get something free, so you'll find no registration forms here.)
As I started to mention in another blog post, your Java code will be more flexible when you learn to return more-general object references. In most cases other developers only need to see your interface, not your implementation. Put another way, does it matter to anyone else if you used a LinkedList or an ArrayList? If it doesn't matter, then return a List, or perhaps even a Collection.