CSC 121A Project 1 - Spring 2005

[Course home page] [Java API Documentation]

Stage 1: Pick a group

The first group project for this semester will involve writing an interactive drawing program. The program only needs to support a very simple user interface- it does not need to be very fancy. (However, once you get the basic functionality working you are welcome to use your imagination to improve the interface.)

The first step of the project is to form groups of three or four people each. You should have your group identified by Wednesday, January 26, 2005.

The basic interface you will need to support is shown in the figure below.

Stage 2: Design

Due: Wednesday, Feb 9, in class

The second stage of this project is to engage in the design of your application. In order to do so, you should get together in your group and discuss in detail all the functionality that you expect the program to support. You should include sketches of the user interface (which may be just the picture above). Discuss things such as: what shapes will be available for drawing? How exactly will the user draw a shape? How will the user specify a color for the shape? What colors will be available? What would the "Undo" button and "Clear" buttons do? Will the shape be saved to a file when the program exits and then loaded again at startup? All the ideas from this brainstorming session should be written down neatly. (You will have to submit all such design documentation when you turn in the project, so keep it all together.)

The design process described in the previous paragraph is from the perspective of a potential user of the program. Once you have completed that and gotten a good idea of the functionality the program needs to support, you should switch to the perspective of the programmers. Now you should figure out things like: What classes will be needed to represent the entities of this program? What are the inheritance relationships if any? What are the operations and functionality provided by each class? In particular, for each method of each class, what will be the input (arguments/parameters) and the output (return value)? For each class, also list all the fields and methods that will be needed, their types, and their accessibility (public/private/etc.).

Your class design should be as detailed as possible and may even include pieces of code or pseudo-code to explain what a method will be doing. But you should not start typing in any actual Java code until the design is finished. Of course, when you actually begin writing the code, you may discover changes that need to be made to the design.

This design process should be completed by no later than Wednesday, February 9. I will collect your designs and return them, or go over them with you, in the lab on Thursday, February 10. If you finish your design earlier, you are very welcome to let me see it earlier so that you can start coding the Java implementation.

Stage 3: Implementation and Testing

Due: Monday, Feb 28, 5:00PM (changed)

(Note that by this time in the semester we expect to be done with Java and will have moved onto the C language, so be sure to start working early on this program.)

 

Based on material from Deitel & Deitel, Java How to Program, 6e.



Last modified: Wed Feb 23 12:13:46 EST 2005