![]() ![]() | full document |
|
Over the years experienced programmers tend to use the same techniques to solve similar
problems. Only recently have attempts been made to catalog some of the more common
approaches to these problems. These approaches are commonly referred to as design
patterns. A design pattern names and explains important and recurring designs
in object-oriented systems. One such pattern, that is commonly used in Graphical
User Interfaces (GUI), is the model-view-controller (MVC) design
pattern. In this pattern, the program is logically divided into three objects:
model, view, and the controller. The model is
the application, the view provides a visual representation of the model,
and the controller defines the way the user interface reacts to user input.
The MVC pattern is illustrated in Figure 1.

The main motivation for the MVC pattern is to separate the logic of the program from its view. In this way, if someone decides to change the graphical user interface, the only component that needs to be modified is the view. It is also possible to have multiple views that use the same model.
In this lab, you will be working with a program that consists of four classes: Lotto, LottoGUI, LottoLogic, and BallBox. The LottoGUI class does the work of the view and the controller from the MVC model, and LottoLogic does the work of the model. BallBox is a class that provides the ability to generate a stream of random numbers. Figure 2 illustrates how these classes interact to make up the Lotto program. For those of you who are interested in building simple GUI based applications, LottoGUI contains most of the basic code that you will need to develop a GUI on your own.

Programs that use graphical interfaces are not controlled in the same way as a standard
program. The part of the program that is in control is the GUI. The GUI
generates events that trigger the appropriate action within a model. For example in
the lotto program, when the GUI senses that a user has
pressed a numbered
button, it will call the buttonPressed() method in a
LottoLogic
object. So the Lotto program does not determine when buttonPressed() is
invoked, the user does. The Lotto program is driven by events external to the
program as opposed to by logic within the main program. This type of programming is
referred to as event-driven programming.
The
LottoLogic
class contains three methods that are meant to be called by the
GUI in response to external events. These methods are: draw, reset,
and buttonPressed. Your task in this lab is to complete these three

Copyright RIT 2003
$Id: writeup.xml,v 1.6 2003/10/07 18:43:37 cs1 Exp $