Advertisement
HackermanxXx

obkietowa

Nov 13th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <typeinfo>
  5. #include <sstream>
  6.  
  7. using namespace std;
  8.  
  9. class FunkjeZyciowe
  10. {
  11. public:
  12. virtual void jedz(int iloscPozywienia)=0;
  13. virtual void pij(int iloscWody)=0;
  14. virtual void spij(int czas)=0;
  15. virtual void bawSie(int czas)=0;
  16.  
  17. };
  18.  
  19. class Zwierze
  20. {
  21. protected:
  22. int glod=0;
  23. int pragnienie=0;
  24. int zmeczenie=0;
  25. int humor=0;
  26. private:
  27. string mImie;
  28. public:
  29. Zwierze(string imie)
  30. {
  31. mImie=imie;
  32. }
  33. void ustawImie(string imie)
  34. {
  35. mImie=imie;
  36. }
  37. string naLancuch()
  38. {
  39. ostringstream os;
  40. os<<dajRodzajZwierzecia()<<mImie<<"\nGlod="<<glod<<"\nPragnienie="<<pragnienie<<"\nZmeczenie="<<zmeczenie<<"\nHumor="<<humor<<endl;
  41. return os.str();
  42. }
  43. virtual const string dajRodzajZwierzecia()
  44. {
  45. return "Zwierzatko: ";
  46. }
  47.  
  48. };
  49.  
  50. class Pies: public Zwierze, public FunkjeZyciowe
  51. {
  52. public:
  53. Pies(string mImie):Zwierze(mImie)
  54. {
  55. mImie=mImie;
  56. }
  57. void szczekaj()
  58. {
  59. cout<<"Hau hau"<<endl;
  60. }
  61. void dajLape()
  62. {
  63. cout<<"Podaje lape"<<endl;
  64. }
  65. const string dajRodzajZwierzecia()
  66. {
  67. return "Pies: ";
  68. }
  69. };
  70.  
  71. class SchroniskoDlaZwierzat
  72. {
  73. private:
  74. Zwierze* zwierzeta[100];
  75. public:
  76. void dodajZwierze(Zwierze* z,int numer)
  77. {
  78. zwierzeta[numer]=z;
  79.  
  80. }
  81. Zwierze* dajZwierze(int numer)
  82. {
  83. return zwierzeta[numer];
  84. }
  85. };
  86.  
  87.  
  88.  
  89. int main()
  90. {
  91. /*Zwierze z1("Bolo");
  92. cout<<z1.naLancuch()<<endl;
  93. Zwierze &z2=z1;
  94. cout<<z2.naLancuch()<<endl;
  95. Pies p1("Tershtegen");
  96. cout<<p1.naLancuch()<<endl;
  97. p1.szczekaj();
  98. p1.dajLape();
  99. Zwierze& refZwierzatko=z1;
  100. Zwierze& refPies=p1;
  101. cout<<refZwierzatko.naLancuch()<<endl;
  102. cout<<refPies.naLancuch()<<endl;
  103. Zwierze* wskZwierzatko=&z1;
  104. Zwierze* wskPies=&p1;
  105. cout<<wskZwierzatko->naLancuch()<<endl;
  106. cout<<wskPies->naLancuch()<<endl;
  107. cout<<endl;
  108. cout<<endl;
  109. cout<<endl;
  110. Pies* wskPies2=dynamic_cast<Pies*>(wskZwierzatko);
  111. if(wskPies2!=NULL)
  112. cout<<wskPies2->naLancuch()<<endl;
  113. else
  114. cout<<"Zly typ!"<<endl;
  115.  
  116. Pies* wskPies3=dynamic_cast<Pies*>(wskPies);
  117. if(wskPies3!=NULL)
  118. cout<<wskPies3->naLancuch()<<endl;
  119. Pies& refPies2=dynamic_cast<Pies&>(refZwierzatko);
  120. try
  121. {
  122. Pies& refPies2=dynamic_cast<Pies&>(refZwierzatko);
  123. cout<<refPies2.naLancuch()<<endl;
  124. }
  125. catch(bad_cast &bc)
  126. {
  127. cout<<"Niepoprawny typ2: "<<endl;
  128. cout<<bc.what()<<endl;
  129. }
  130. Pies& refPies3=dynamic_cast<Pies&>(refPies);
  131. cout<<refPies3.naLancuch()<<endl;
  132. */
  133. SchroniskoDlaZwierzat schronisko;
  134.  
  135. Pies p1("Bolo");
  136. Pies p2("fit");
  137. Pies p3("pyk");
  138. Zwierze* wskp1=&p1;
  139. Zwierze* wskp2=&p2;
  140. Zwierze* wskp3=&p3;
  141. schronisko.dodajZwierze(wskp1,0);
  142. schronisko.dodajZwierze(wskp2,1);
  143. schronisko.dodajZwierze(wskp3,2);
  144. Pies* wskPies1=dynamic_cast<Pies*>(wskp1);
  145. if(wskPies1!=NULL)
  146. wskPies1->szczekaj();
  147. cout<<schronisko.dajZwierze(0)->naLancuch()<<endl;
  148. Pies* wskPies2=dynamic_cast<Pies*>(wskp2);
  149. if(wskPies2!=NULL)
  150. wskPies2->szczekaj();
  151. cout<<schronisko.dajZwierze(1)->naLancuch()<<endl;
  152. Pies* wskPies3=dynamic_cast<Pies*>(wskp3);
  153. if(wskPies3!=NULL)
  154. wskPies3->szczekaj();
  155. cout<<schronisko.dajZwierze(2)->naLancuch()<<endl;
  156.  
  157.  
  158. return 0;
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement