1) In this assignment, you will be designing and writing four classes. One of the classes will be the composite class with (at least) three members whose types are of the other three classes.
2) Each class should include a "reasonable" set of constructors to initialize their members. The composite class' constructor should take in enough information to initialize its members using their constructors in turn (in the initialization list, of course).
3) Each of the three member's classes must provide a function (of your own choosing) that "exercises" the functionality of the class. This exercise should involve some output to verify that the function was invoked, but can also manipulate the class' members in some fashion according to the design of the class.
4) The composite class must provide a single function that exercises its members by calling their functions that you supplied in (3) above. This is the delegation of the composite class to its individual members.
5) Each class will provide a public member function named output with the following signature:
void output(ostream& s);
output function should be written in terms of calls to its members' output functions.
6) Overload the stream insertion operator (operator<<) only for the composite class that simply calls the output function on the composite object.
7) Write a main function that instantiates an object of the composite type implemented in part (1). After instantiation, output the object to cout.
8) Continuing in main, instantiate another composite object using the copy constructor with the first object from (7). Output the second object to cout. Since the second a copy of the first, the output contents should be the same as that of step(7).
9) Invoke the composite class function in (4) that will exercise all of its members as specified in (3).
10) Place all classes in their own headers (protecting against multiple inclusion) and in a namespace of your own choosing.
I would like a paper listing turned in at the beginning of class on the due date along with an electronic form of the program. Email is preferred, but other methods are acceptable (check with me first). To review some style suggestions, go to the suggested style page (http://www.yplex.com/tcc/style.html).