#ifndef ANALYSISTEST_H #define ANALYSISTEST_H ///////////////////////////////////////////////////////////////////// // AnalysisTest.cpp - Test for Project #2 Spring 04 // // // // Jim Fawcett, CSE687 - Object Oriented Design, Spring 2004 // ///////////////////////////////////////////////////////////////////// #include void shout(const std::string& msg) { std::cout << msg.c_str(); } class Base { public: virtual void chorus() { shout("Base"); } }; class ComposedMember : public Base { public: void chorus() { shout(", ComposedMember"); } }; class LocalComposed : public Base { public: void chorus() { shout(", LocalComposed"); } }; class Aggregated : public Base { public: void chorus() { shout(", Aggregated"); } }; class Used : public Base { public: void chorus() { shout(", Used"); } }; class Inherits : public Base { public: Inherits() { _pLocalComposed = new LocalComposed; } ~Inherits() { delete _pLocalComposed; delete _pAggregated; } void aggregates() { _pAggregated = new Aggregated(); } void uses(Used& rUsed) { rUsed.chorus(); } void chorus() { shout("\n Inherits: - "); Base::chorus(); _composedMember.chorus(); _pLocalComposed->chorus(); _pAggregated->chorus(); } private: ComposedMember _composedMember; LocalComposed* _pLocalComposed; Aggregated* _pAggregated; }; // namespace Project2 { class Pr2Base { public: virtual void chorus() { shout("Pr2Base"); } }; class Pr2ComposedMember : public Pr2Base { public: void chorus() { shout(", Pr2ComposedMember"); } }; class Pr2LocalComposed : public Pr2Base { public: void chorus() { shout(", Pr2LocalComposed"); } }; class Pr2Aggregated : public Pr2Base { public: void chorus() { shout(", Pr2Aggregated"); } }; class Pr2Used : public Pr2Base { public: void chorus() { shout(", Pr2Used"); } }; class Pr2Inherits : public Pr2Base { public: Pr2Inherits() { _pPr2LocalComposed = new Pr2LocalComposed; } ~Pr2Inherits() { delete _pPr2LocalComposed; delete _pPr2Aggregated; } void aggregates() { _pPr2Aggregated = new Pr2Aggregated(); } void uses(Pr2Used& rPr2Used) { rPr2Used.chorus(); } void chorus() { shout("\n Inherits: - "); Pr2Base::chorus(); _Pr2ComposedMember.chorus(); _pPr2LocalComposed->chorus(); _pPr2Aggregated->chorus(); } private: Pr2ComposedMember _Pr2ComposedMember; Pr2LocalComposed* _pPr2LocalComposed; Pr2Aggregated* _pPr2Aggregated; }; } #endif