CMPU-235: Software Development Methodology

Project #3

Due: Monday, November 30

For this project you must hand in:

  1. A design of the file formats for making your objects persistant. You may store instances of each class in separate files, or all your data in one file. You may embed definitions of one object within definitions of others, or have one object definition per line. You will have to determine a mechanism for handling the cross-referencing of objects within the file, such as assigning each object a unique I.D. All these decisions, plus the specific file format (what character you will use for a field separator, what are the field orders, etc.) must be specified. This specification should be in a plain text document in your central group directory.

  2. Each object will be responsible for providing its own persistence. Although you needn't implement it yet, specify methods for each object class that will read an instance from a file and output the instance to a file (using the format you've specified). The method should take a single argument, a stream.

  3. Implement and test accessor methods (read/write) for all the slots of your classes. This should include active value slots, slots that are relations, slots with multiple values, and slots that are complex relations. You must determine and implement the types of access each slot will require. and provide this as an interface to your class.

  4. Hand in, on paper, a complete state transition diagram for your system. The diagram should include high level views and multiple detailed views of the sub-states. This will be the final design document you will produce, and your final code will be judged, in part, by how well it adheres to this design (so do it carefully and thoughtfully).