GbossMega9

hf1

Jan 29th, 2017
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. typedef unsigned long ULONG;
  2. typedef unsigned short USHORT;
  3.  
  4. using namespace std;
  5.  
  6. // ************** Part **********
  7.  
  8. // Absract base class of parts
  9. class Part
  10. {
  11.     public:
  12.         Part():itsPartNumber(1) {}
  13.         Part(ULONG PartNumber):itsPartNumber(PartNumber){}
  14.         virtual ~Part(){};
  15.         ULONG GetPartNumber() const { return itsPartNumber; }
  16.         virtual void Display() const = 0; // must be overidden
  17.     private:
  18.         ULONG itsPartNumber;
  19. };
  20.  
  21.  
  22. // *************** Car Part **********
  23.  
  24. class CarPart : public Part
  25. {
  26.     public:
  27.         CarPart():itsModelYear(94){}
  28.         CarPart(USHORT year, ULONG partNumber);
  29.         virtual void Display() const { Part::Display();
  30.             cout << "Model Year: " <<
  31.             itsModelYear << endl;   }
  32.     private:
  33.         USHORT itsModelYear;
  34. };
  35.    
  36.    
  37. // **************** AirPlane Part *********
  38.    
  39. class AirPlanePart : public Part
  40. {
  41.     public:
  42.        
  43.         AirPlanePart():itsEngineNumber(1){};
  44.         AirPlanePart(USHORT EngineNumber, ULONG PartNumber);
  45.         virtual void Display() const { Part::Display();
  46.         cout << "Engine No: " << itsEngineNumber << endl; }
  47.     private:
  48.             USHORT itsEngineNumber;
  49. };
  50.        
  51.        
  52. // **************** PartNode *********
  53.  
  54. class PartNode
  55. {
  56.     public:
  57.         PartNode (Part*);
  58.         ~PartNode();
  59.         void SetNext(PartNode * node){ itsNext = node; }
  60.         PartNode * GetNext() const;
  61.         Part * GetPart() const;
  62.     private:
  63.         Part *itsPart;
  64.         PartNode * itsNext;
  65. };
  66.        
  67.                    
  68. // **************** Part list ***********
  69.  
  70. class PartsList
  71. {
  72.     public:
  73.         PartsList();
  74.         ~PartsList();
  75.         // needs copy constructor and operator equals!
  76.         void    PartsList::Iterate(void (Part::*f)()const) const;
  77.         Part*   Find(ULONG & position, ULONG PartNumber) const;
  78.         Part*   GetFirst() const;
  79.         void    Insert(Part *);
  80.         Part*   operator[](ULONG) const;
  81.         ULONG   GetCount() const { return itsCount; }
  82.         static  PartsList& GetGlobalPartsList() { return GlobalPartsList;}
  83.         private:
  84.     PartNode * pHead;
  85.         ULONG itsCount;
  86.         static PartsList GlobalPartsList;
  87. };
  88.        
  89.        
  90. class PartsCatalog
  91. {
  92.     public:
  93.         void Insert(Part *);
  94.         ULONG Exists(ULONG PartNumber);
  95.         Part * Get(int PartNumber);
  96.         operator+(const PartsCatalog &);
  97.         void ShowAll() { thePartsList.Iterate(Part::Display); }
  98.     private:
  99.         PartsList thePartsList;
  100. };
Add Comment
Please, Sign In to add comment