Create a design document that includes the following things.
- Repeat the (short!) vision statement for your project. This may well be
a copy of what you wrote for project 1, perhaps with some updates.
- Specify the key functionality of each component of your
project. List each class that will be necessary for your project and,
for each class, list the data that the class will be responsible for
(instance variables) and what communication will be required (i.e.
methods). Also specify the associations between these classes (i.e.,
is-a, ako, instance-of). This is best done using a UML diagram, as
shown in the example below.
- Include an initial guess of what the interface will look like
and how the output will be presented (a picture/drawing could be very
useful here). It’s best to hand-draw this early in the design
process, before taking time to program anything.
- The final component of the design document is a phased
implementation plan. List at least two intermediate steps that you
will use to mark progress in completing your project.
For this deliverable a number of formats are permissible:
- A document (e.g. MS Word) giving textual descriptions of the
elements of the design along with the appropriate images
- A photograph of a white board on which appropriate
information is written/drawn
Here is an example design of a mine sweeper game
The phased implementation plan that goes with this diagram might be as
follows:
- Start with the TicTacToe class example (or, alternately, the lab 12
particle simulator, if you want to take more control of the visual
design), and modify its appearance to match the GUI mockup.
- Rebuild the game/model class to implement the basic one-player
mine-sweeper world with randomly-assigned mines (both data attributes
and methods). Build tests for this model.
- Rebuild the GUI controller to implement the basic mine-sweeper
interface.
- Add additional features as time allows, e.g.: score keeping;
mine-counting display; auto-clearing of empty adjacent cells; leader
board; multiple players; game-state saving; …
You can find more example designs here: code/designs/*.
Checking In
You will get credit for this assignment by turning in a
reasonable design specified in an understandable manner.
Submit your design using the standard submission protocol.