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):
-
Classes
-
Derived classes with distinct data, that behave differently under
polymorphism. These differences must be exhibited by the application.
-
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.
-
Operator overloading.
-
Static member data and static member function.
-
Virtual functions where derived class functions differ from each other
and/or from the base class.
-
Input and output, from files and/or the keyboard.
-
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.
-
Polymorphism for the above derived classes. This is a main item
I will be looking for.
-
Dynamic memory allocation and deallocation.
Features that are required for the optimal grade:
-
A challenging problem.
-
A brief description (a few paragraphs) of the problem being addressed.
-
Good, clear comments.
-
Well organized code: no global variables, no public member data in classes,
clear program structure, short functions, ...
-
The program must compile.
-
Clear public interface for classes.
-
A convenient interface for the user.
-
Good choices for where work gets done. That is, work done by objects of
a class should be done by member functions of that class.
-
Good program design. Good use of OOP.
-
Good input, output, and file design.
-
A well tested program.
-
Separate header and source files for your classes.
-
A paragraph stating where all the required components are implemented and
which ones are not implemented. Highlight
all required features in the hard copy with a yellow (or other color) highlighter.
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):
-
A video game, card game, board game.
-
An automata simulation. The screen is an array of squares with properties
that change over time based on the properties of adjacent squares.
-
an expression for evaluation, where components are from various derived
classes
-
CAD where the components are the derived objects.
-
a database with nice management functions
-
assembly line
-
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
-
A paragraph describing the problem.
-
A diagram of all your classes showing conglomerate (has-a) and inheritance
(is-a) relationships.
-
A list of the data members for each class.
-
A description of the member functions. (You do not have to have the functions
implemented.)
-
A design for input and output files.
Handwritten proposals are fine. These are rough drafts and will be
changed.
May 6: All projects are due.
-
Zipped projects containing all files should be uploaded to the homework
account. Date of submission is the date I receive the electronic
version.
-
Hard copy, stapled or held together well, should be submitted to Prof.
Baruch when you demo. In the hard copy make sure you highlight (with
a colored highlight marker) and label, examples of all the required elements.
-
Projects must be demonstrated in person soon after they are submitted.
Sign up on Prof. Baruch's door for a demo time.
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.