Project 2a

Due Date: Mon 10 Oct

Group Project

Please see here.


An understanding of
  • object-oriented modeling and design
  • SOLID and other design principles
  • basic design patterns
Note: this is a modeling and design project. Nevertheless, you should use all available spare time to practice as much coding as you can.


In this and several subsequent projects, you will design and implement a simple adventure game. Your first job is to design the type (class and interface) hierarchy for the game. There will be
  • actors such as players, dangerous monsters, and harmless creatures
  • location cells such as land, water, swamp
  • fixtures such as bridges, trees, furniture
  • smaller objects such as snacks, handguns, flashlights, pliers, cell phones
The terrain is put together from location cells, and actors can move from a cell to an adjacent cell.

Start by asking yourselves design questions such as these:
  • What, if anything, do the various smaller objects have in common? What would be a good way to capture this commonality? Is this a permanent or temporary commonality?
  • Are players related to or associated with small objects? If so, how? Are these permanent or temporary associations?
  • Are location cells related to or associated with actors, fixtures, and other objects? If so, how? Are these permanent or temporary associations?
  • Are location cells related to or associated with each other? If so, how? Are these permanent or temporary associations?
Then express your insights in the form of a detailed class diagram. Where appropriate, distinguish between interfaces, abstract classes, and concrete classes. Include methods and properties but not instance variables. Indicate relationships such as generalization, composition (in the general sense), and other associations. Try to follow the design principles discussed in class.

You have several choices for creating your diagram:
  • drawing it by hand
  • using a general-purpose tool such as Dia, Inkscape, OmniGraffle, or Visio
  • using a UML modeling tool, though it is hard to find a free one that does not suck (last time I looked, ArgoUML was still the best free cross-platform choice)


Please follow these instructions. Be sure to use a non-proprietary format for your diagram by exporting to, say, PDF or PNG.