Description
This assignment is intended to exercise your understanding of multiple inheritance in C++.
You must define appropriate class(es). Note that design should establish consistency
Use ProgrammingByContract for documentation. DO NOT hard code.
P4’s goal is to design the C++ classes needed to support the notion of child classes inheriting from imageCollage (sub)types (from P3) and a review type.
Part I: Class design
1) imageCollage types are as defined in P3 (a class hierarchy of imageCollage types)
2) review is a class that encapsulates a media expert’s review score (1-5), alongside a responsive ranking of the expert’s experience (1-100).
a. each review object is associated with a date and a bool indicating whether the review was free or not.
b. each review object supports queries for both raw and weighted review scores.
3) collageReview is-a review and is-a imageCollage. Hence, the functionality of both parent types should be supported. Your design should support the 3 different imageCollage (sub)types from P3 as distinct types as well as folding their representation into subtypes with the multiple inheritance features as described here.
Clearly, many details are missing. You must use multiple inheritance in C++.
Make reasonable design decisions so that your classes satisfy the stated goals, communicate assumptions and use, and yield clear and maintainable software.
Use ProgrammingByContract to specify pre and post conditions; interface, implementation and class invariants. Relationships should be noted in the appropriate invariants.
Part II: Driver
Design a driver to demonstrate program requirements: Do not skimp on your driver’s design
Clearly specify the intent and structure of your driver
You should have collections of distinct objects, initialized appropriately, most likely with file IO.
YOU MUST SUBMIT AN INPUT FILE along with your source code files (P4.cpp, inverter.h, inverter.cpp, …).
Use C++ AND PROGRAMMING BY CONTRACT.
DESIGN COMMENTS
This design is especially difficult because of the existing is-a relationships from P3 that must be supported. You must decide how to effectively and consistently integrate the subtype notions of collage from P3 (imageCollage, cyclicCollage and bitCollage) alongside the newly introduced review type.
This design requirement is challenging; different variants are feasible; none are optimal.
Decide, design, document, implement, test, repeat as necessary.