1 Application Description
In this assignment you will be writing a parts control system for an airline using C++.
An Airline runs a number of Aircraft. Spare Parts for the aircraft are stored in case a part must be changed.
The rules and regulations of the airline industry ensure that parts are inspected and changed at regular intervals.
As such, each Part is carefully tracked. Some parts must be inspected after a certain number of ight hours. Some
parts must be inspected after a certain amount of time being installed in an aircraft. And some parts require both
ight hours and time installed to be tracked. This behaviour is the perfect opportunity to use multiple inheritance!
Parts can be installed on an Aircraft on a given Date. Once installed, every time the aircraft ies the number
of ight hours are recorded on the Part. The airline may choose to do an inspectionReport on a particular aircraft
on a given Date, at which time all the parts that are due for inspection are reported.
2 Learning Outcomes
In this assignment you will learn
1. Multiple inheritance and the diamond hierarchy.
3. Operator overloading (use ostream << instead of print() when instructed).
4. Templates (in the form of an Array class for storing dierent data types).
3 Classes Overview
This application will consist of 8 classes. In addition to the classes shown in the diagram above, there is a PodArray
class. The classes are listed below along with their respective categories.
1. Date (Entity object):
(a) Stores information of a date.
2. Part (Entity object):
(a) Virtual base class of all Parts.
3. FH_Part (Entity object):
(a) A part that must be inspected after a certain number of ight hours.
4. IT_Part (Entity object):
(a) A part that must be inspected after a certain number of days of being installed on an aircraft.
5. FHIT_Part (Entity object):
(a) A part that must be inspected after a certain number of days of being installed on an aircraft and after a
certain number of ight hours.
6. Array (Container object):
(a) A simple (templated) data structure.
7. Aircraft (Entity / Container object):
(a) Aircraft data as well as a container for the installed Parts.
8. Airline (Control object):
(a) Tracks parts, aircraft, installations, ights, etc.
9. Control (Control object):
(a) Provides a test framework for the Airline.
10. View (View object):
(a) Collects user input and provides system output.
All member variables should be given the appropriate access modier (hint: it isn’t public). All member functions are
public unless otherwise noted. Some return values are not explicitly given. You should use your best judgment (they
will often be void, but not always). ALL CLASSES MUST HAVE A PRINT FUNCTION OR OVERLOAD THE
<< OPERATOR (AS INSTRUCTED). This should display the metadata of the class using appropriate formatting.
4.1 The Date Class
This class is given to you. Take note of the fact that it overloads the << operator rather than having a print
function. Also take note of the toDays function. This converts the Date into the number of days since January 1st,
1901. You can use this function to determine the number of days between two Dates.