Facebook
From dupa, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 227
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. class Towar
  6. {
  7.         private:
  8.                 string producent, model;
  9.        
  10.         public:
  11.                 Towar(){}
  12.                 Towar(string _producent, string _model)
  13.                         : producent(_producent), model(_model){}
  14.                        
  15.                 virtual void opis()const=0;
  16.                 virtual ~Towar(){}
  17. };
  18.  
  19. class Laptop : public Towar
  20. {
  21.         private:
  22.                 string procesor;
  23.                 double pamiec, przekatna;
  24.        
  25.         public:
  26.                 Laptop() : Towar(), pamiec(0), przekatna(0){}
  27.                
  28.                 Laptop(string _producent, string _model, string _procesor,
  29.                         double _pamiec, double _przekatna) : Towar(_producent, _model)
  30.                         {
  31.                                 procesor = _procesor;
  32.                                 pamiec = _pamiec;
  33.                                 przekatna = _przekatna;
  34.                         }
  35.                        
  36.                 void opis() const override
  37.                 {
  38.                         cout <<  "Laptop: " << endl;
  39.                 }
  40. };
  41.  
  42. class Telewizor : public Towar
  43. {
  44.         private:
  45.                 double przekatna;
  46.        
  47.         public:
  48.                 Telewizor() : Towar(), przekatna(0){}
  49.                
  50.                 Telewizor(string _producent, string _model, double _przekatna)
  51.                         : Towar(_producent, _model), przekatna(_przekatna){}
  52.                
  53.                 void opis() const override
  54.                 {
  55.                         cout <<  "TV: " << endl;
  56.                 }
  57. };
  58.  
  59. class Radio : public Towar
  60. {
  61.         private:
  62.                 bool isCD;
  63.                 string format;
  64.        
  65.         public:
  66.                 Radio() : Towar(), isCD(false){}
  67.                
  68.                 Radio(string _producent, string _model, bool _isCD, string _format)
  69.                         : Towar(_producent, _model), isCD(_isCD), format(_format){}
  70.                        
  71.                 void opis() const override
  72.                 {
  73.                         cout <<  "Radio: " << endl;
  74.                 }
  75. };
  76.  
  77. class Kontener
  78. {
  79.         private:
  80.                 vector<Towar*> towary;
  81.                
  82.         public:
  83.                 Kontener(Towar** b, Towar** e) : towary(vector<Towar*>(b,e)){}
  84.                
  85.                 Kontener& operator=(const Kontener&k) = delete;
  86.                 Kontener(const Kontener&) = delete;
  87.                
  88.                 void wyswietl_opisy() const
  89.                 {
  90.                         for(unsigned i = 0; i < towary.size(); i++)
  91.                         {
  92.                                 towary[i]->opis();
  93.                         }
  94.                 }
  95.                
  96.                 friend void wyswietl();
  97.                
  98.                 ~Kontener()
  99.                 {
  100.                         for(unsigned i = 0; i < towary.size(); i++)
  101.                         {
  102.                                 delete towary[i];
  103.                         }
  104.                 }
  105. };
  106.  
  107. void wyswietl(Kontener& k)
  108. {
  109.         k.wyswietl_opisy();
  110. }
  111.  
  112. int main()
  113. {
  114.         Towar* towary[] = {new Laptop, new Telewizor, new Radio};
  115.         Kontener k(towary, towary + 3);
  116.         wyswietl(k);
  117.         return 0;
  118. }
  119.