Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef unsigned long ULONG;
- typedef unsigned short USHORT;
- using namespace std;
- // ************** Part **********
- // Absract base class of parts
- class Part
- {
- public:
- Part():itsPartNumber(1) {}
- Part(ULONG PartNumber):itsPartNumber(PartNumber){}
- virtual ~Part(){};
- ULONG GetPartNumber() const { return itsPartNumber; }
- virtual void Display() const = 0; // must be overidden
- private:
- ULONG itsPartNumber;
- };
- // *************** Car Part **********
- class CarPart : public Part
- {
- public:
- CarPart():itsModelYear(94){}
- CarPart(USHORT year, ULONG partNumber);
- virtual void Display() const { Part::Display();
- cout << "Model Year: " <<
- itsModelYear << endl; }
- private:
- USHORT itsModelYear;
- };
- // **************** AirPlane Part *********
- class AirPlanePart : public Part
- {
- public:
- AirPlanePart():itsEngineNumber(1){};
- AirPlanePart(USHORT EngineNumber, ULONG PartNumber);
- virtual void Display() const { Part::Display();
- cout << "Engine No: " << itsEngineNumber << endl; }
- private:
- USHORT itsEngineNumber;
- };
- // **************** PartNode *********
- class PartNode
- {
- public:
- PartNode (Part*);
- ~PartNode();
- void SetNext(PartNode * node){ itsNext = node; }
- PartNode * GetNext() const;
- Part * GetPart() const;
- private:
- Part *itsPart;
- PartNode * itsNext;
- };
- // **************** Part list ***********
- class PartsList
- {
- public:
- PartsList();
- ~PartsList();
- // needs copy constructor and operator equals!
- void PartsList::Iterate(void (Part::*f)()const) const;
- Part* Find(ULONG & position, ULONG PartNumber) const;
- Part* GetFirst() const;
- void Insert(Part *);
- Part* operator[](ULONG) const;
- ULONG GetCount() const { return itsCount; }
- static PartsList& GetGlobalPartsList() { return GlobalPartsList;}
- private:
- PartNode * pHead;
- ULONG itsCount;
- static PartsList GlobalPartsList;
- };
- class PartsCatalog
- {
- public:
- void Insert(Part *);
- ULONG Exists(ULONG PartNumber);
- Part * Get(int PartNumber);
- operator+(const PartsCatalog &);
- void ShowAll() { thePartsList.Iterate(Part::Display); }
- private:
- PartsList thePartsList;
- };
Add Comment
Please, Sign In to add comment