Advertisement
GbossMega9

DtallHeaderFileV3

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