Advertisement
GbossMega9

Dtallhf8

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