Final Project
CIS 554
Preliminary presentation made Tuesday, April 8 - Tuesday, April 15.
Final project due Monday, May 5.

For the final project you are to write a program, using the methods of Object Oriented Programming, that models a real world situation. You will be utilizing polymorphism, so you will be managing some sort of a list, array, tree, or some other data structure of pointers. The particular problem you address is your choice.
    Your program must contain the following (for full credit):
  1. Classes
  2. Derived classes with distinct data, that behave differently under polymorphism.  These differences must be exhibited by the application.
  3. Composite classes that contain member data that are of a type defined by another class.  Having member data that is a pointer to another user defined type of data is not sufficient.
  4. Operator overloading.
  5. Static member data and static member function.
  6. Virtual functions where derived class functions differ from each other and/or from the base class.
  7. Input and output, from files and/or the keyboard.
  8. An array or other data structure of pointers to objects of a base class which in fact point to objects of derived classes.  You must build and manage this data structure, not use one from standard library.
  9. Polymorphism for the above derived classes.  This is a main item I will be looking for.
  10. Dynamic memory allocation and deallocation.
    Some ideas of situations (You are encouraged to come up with your own from your area of expertise. No two people will be allowed to do similar projects):
  1. A video game, card game, board game.
  2. An automata simulation.  The screen is an array of squares with properties that change over time based on the properties of adjacent squares.
  3. an expression for evaluation, where components are from various derived classes
  4. CAD where the components are the derived objects.
  5. a database with nice management functions
  6. assembly line
  7. scheduler/event processor
Your program must compile and run on the Code Warrior or Visual C++ compiler. (See me for exceptions.) You must provide all appropriate input files and samples of output files.  You must provide hard copies of all code and files, including samples of output produced.

Your introductory paragraphs, in addition to containing a description of the problem, should contain a diagram of the relationships among all classes, and details on where the required features are located in your program.

Due Dates:

Week of April 8-15: Each person must meet with me to present their proposal. There are sign up sheets on my office door.  Come prepared or I will send you away.  You must present, in writing, a description of the problem and a fully developed draft of the public interface.  That is, you should have Handwritten proposals are fine.  These are rough drafts and will be changed.

May 6: All projects are due.


Late projects: Projects will lose 2% a day, up to 6% off for projects submitted on May 9. No projects will be accepted after May 9.  As you might end up finishing after the original due date, and as you must demo your project, and as I will have only a finite number of demo time slots each day, do not make travel plans for early in the week.  If you submit your project on May 9, I probably will not be able to see the demo until the following week.