Advertisement
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)
- //{ cout << "Base class initial constructor used.\n"; }
- Part(ULONG PartNumber):itsPartNumber(PartNumber)
- { cout << "Base class copy constructor used.\n";
- cout << "Part Number = " << itsPartNumber << "\n"; }
- virtual ~Part(){};
- ULONG GetPartNumber() { return Part::itsPartNumber; }
- static ULONG& Part::Display(ULONG*); // must be overidden
- private:
- ULONG itsPartNumber;
- };
- // *************** Car Part **********
- class CarPart : public Part
- {
- public:
- //CarPart():itsModelYear(94){}
- CarPart(USHORT year, ULONG PartNumber);
- ULONG& CarPart::Display(ULONG*)
- { cout << "Model Year: " << itsModelYear << endl; }
- private:
- USHORT itsModelYear;
- };
- // **************** AirPlane Part *********
- class AirPlanePart : public Part
- {
- public:
- //AirPlanePart():itsEngineNumber(1){};
- AirPlanePart(USHORT EngineNumber, ULONG PartNumber);
- ULONG& AirPlanePart::Display(ULONG*)
- { 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 Iterate(int (&),Part Part::Display);
- void PartsList::Iterate(ULONG& (*)(ULONG*));
- 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(ULONG PartNumber);
- operator+(const PartsCatalog &);
- void ShowAll() { thePartsList.Iterate(&Part::Display) ; }
- private:
- PartsList thePartsList;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement