For this project you will design, implement, and test C++ class inheritance with components.
Design You will need to have at least three classes: the parent class, the child class, and the component class. The component can be included in either the parent or the child. Think about what each of the three classes will represent. What added methods does the child class have? What added ﬁelds does the child class have? Where does the component belong? Some examples: – A Saxophone class that extends Musical_Instrument and has a component Reed – A Sailboat class that extends Boat and has a component Sail – A Video_Game class that has component Console and child First_Person_Shooter – A HybridCar class that extends Car and has component Battery – A Trainer class that has component Pokemon and child Team_Rocket_Trainer
Implement Your classes should be declared in header ﬁle(s) (with RMEs and other comments) and deﬁned in corresponding .cpp ﬁle(s). You may reuse classes from previous projects if appropriate.
Test To make sure your classes are working the way you designed, include a .cpp ﬁle that has the main function and tests your classes thoroughly.
Grading The project is out of 60 points. Design and Style 2 pts Are there at least three ﬁles and does each ﬁle have the correct code? 6 pts Are there sufﬁcient comments and/or writings to explain what each method accomplishes and what each ﬁeld represents? 4 pts Do the ﬁles follow the style guidelines from class? Are they readable? Do the names make sense? 8 pts Is there evidence of a well-thought-out design? Does each method have a clear purpose? Is this the best way to implement the class given the functionality goals? Implementation 12 pts Are there three classes: a parent class, a child class, and a component class? 6 pts Does the child add ﬁelds and add/override methods when appropriate? 6 pts Does the component class make sense in the context of the program? Testing 8 pts Is every method tested (directly or indirectly)? 8 pts Does testing cover all possible cases?
Extra Credit To earn extra credit, you must complete the following: 1. Create an enumerated type that ﬁts in with your project 2. Include at least one ﬁeld that is of the enumerated type in at least one of your three classes 3. Use the enumerated ﬁeld in at least one method of the class. This could be making a calculation with it, printing something based on its value, etc. You can earn up to 10 points of extra credit for this, at the grader’s discretion. If you are going for the extra credit, make sure to include it in the Blackboard comments when you submit.