Facebook
From Toxic Pintail, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 106
  1. #include <iostream>
  2. #include <ostream>
  3. #include <vector>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. //dziedizczenie z private i protected sie nie odbywa - komunk=ikaty
  9. class Roslina{
  10.  
  11. public:
  12.     Roslina(){ }
  13.     void rosnij(){
  14.     cout<<"Jestem roslina i rosne!"<<endl;
  15.     }
  16.     void roslina() {
  17.         nazwa = "Roslina";
  18.         cout << nazwa << endl;
  19.     }
  20. private:
  21.     string nazwa;
  22. };
  23. class Kwiat : public Roslina{
  24.  
  25. public:
  26.     Kwiat(){}
  27.     void kwitne(){
  28.     cout<<"Jestem kwiatem i kwitne"<<endl;
  29.     }
  30.     void rosnij(){
  31.     cout<<"Jestem kwiatem i rosne"<<endl;
  32.     }
  33.     void roslina() {
  34.         nazwa = "Kwiat";
  35.         cout << nazwa << endl;
  36.     }
  37. private:
  38.     string nazwa;
  39. };
  40.  
  41. class Trawa : public Roslina{
  42. public:
  43.     Trawa(){}
  44.     void tylkoTrawa(){
  45.     cout<<"Jestem tylko trawa."<<endl;
  46.     }
  47.     void roslina() {
  48.         nazwa = "Trawa";
  49.         cout << nazwa << endl;
  50.     }
  51. private:
  52.     string nazwa;
  53. };
  54.  
  55.  
  56. int main()
  57. {
  58.     cout<<"Wyswietla zawartosc obiektow przy ich tworzeniu:"<<endl;
  59.      Roslina roslina;
  60.     Kwiat kwiat;
  61.     Trawa trawa;
  62.     cout<<"Wywolanie metody 'rosnij' rosliny:"<<endl;
  63.     roslina.rosnij();
  64.     cout<<endl;
  65.      cout<<"Wywolanie metody 'rosnij' kwiatu - nadpisanie dziedziczonej metody z Roslina:"<<endl;
  66.     kwiat.rosnij();
  67.    cout<<endl;
  68.     //Rzutowanie obiektu kwiat na klasę Roslina - odwołuje się do metody w Roslina zamiast nadpisanej w Kwiat
  69.    cout<<"Rzutowanie obiektu kwiat na klasę Roslina - wywoluje na kwiecie metode 'rosnij' z Roslina "<<endl;
  70.     ((Roslina)kwiat).rosnij();
  71.       cout<<endl;
  72.        cout<<"Wywolanie metody 'kwitne' kwiatu:"<<endl;
  73.     kwiat.kwitne();
  74.    cout<<endl;
  75.      cout<<"Wywolanie metody 'rosnij' trawy -dziedziczenie z Roslina:"<<endl;
  76.     trawa.rosnij();
  77.       cout<<endl;
  78.        cout<<"Wywolanie metody 'tylkoTrawa'  trawy:"<<endl;
  79.     trawa.tylkoTrawa();
  80.     cout<<endl;
  81.     cout<<"Wywolanie metody 'kwitne' trawy - \n Rzutowanie trawy na referencje obiektu kwiat co zmienia typ trawy na Kwiat i pozwala uzyc metody kwaitu"<<endl;
  82.    ((Kwiat&)trawa).kwitne(); // rzutowanie na referencje do obiektu
  83.     cout<<endl;
  84.     cout<<"Tablica obiektow: "<<endl;
  85.  
  86.  
  87.    Roslina tab[5];
  88.    tab[0]=trawa;
  89.    tab[1]=kwiat;
  90.    tab[2]=trawa;
  91.    tab[3]=roslina;
  92.    int length = sizeof(tab)/sizeof(tab);
  93. for(int j = 0;j<length;j++) {
  94.  cout<<tab[j];
  95. }
  96.  
  97.  
  98.  
  99. cout<<endl;
  100. cout<<"Kolekcja obiektow: "<<endl;
  101. vector<Roslina> vec;
  102.     vec.push_back(kwiat);
  103.     vec.push_back(trawa);
  104.     vec.push_back(new Roslina());
  105. for(int i = 0;i<vec.size();i++) {
  106.     std::cout <<vec[i].roslina()<<endl;
  107. }
  108.     return 0;
  109. }
  110.