Assignment for Graduate Students

Graduate students taking this course should do this assignment, in addition to the other course work.

Adding a Second Simultaneous View to Your System

Your Java system (from Assignment 5) displays a graphical view of the vehicles or other items you have developed. Add a second panel to your window that displays the same data (taken from your same data model objects) in a different format and allows the user to interact with it. When the user interacts with either view or with any other widget that changes the state of the vehicles or other data, the updated information should be reflected in both views. (Think of the way that word processing programs can simultaneously display and update the same document in page view and outline view, in two separate windows.)

For example, for your second view, you could provide a collection of widgets that represent the state of each vehicle (and allow the user to change them); an editable outline view or other editable text format; a 3D view; or another approach that you devise.

In any event, the states of the vehicles and of the simulation as a whole should continue to stored in one place (your data model), and both views should render themselves using the same central data.

Note: When you submit using provide, this assignment is named ag

Program Design and Practices

(The rest of this still applies from previous assignments)

Your program design should exploit the features of object-oriented programming (encapsulation of code and data, support for abstract data types, polymorphism/overloading, inheritance). In particular, object-oriented programming provides us a good way to handle the various data needed in callback routines. You should use objects to encapsulate each interactive widget with the routines and data you need to use it.

You should provide an object for each interactive widget or small group of widgets you create. That object should hold anything you need to remember about the widget from one callback to another, all the data pertinent only to the command for that widget or that you need to operate this control, (including, in most cases, a pointer to the map or other outside object to perform the actual action the user requested), and the widget's own listener callback routines.

If you have several widgets that share some behavior or properties, you should organize your objects into an appropriate inheritance hierarchy.

You will have other data that must be accessed by several widgets, particularly shared information about the state of the program or global information about the state of the user interface. Provide additional classes and objects for holding this kind of information.

Remember to trigger your drawing to repaint itself explicitly whenever one of your commands causes a change that should be reflected on the screen. And remember that the way to change the screen is first to change the data stored your classes and then to trigger the repaint.

You should follow these general Java programming practices:

And, finally, on your Java programs, for uniformity, please name your Java class that has your main program in it Main, in file

Design Documentation

In addition to your program, submit documentation about the design of your system in these forms:

Submit this documentation electronically in text form. Include it as part of the readme file that you submit with your assignment.