Advertisement
Paszta

Untitled

Nov 13th, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.00 KB | None | 0 0
  1. #include <iostream>
  2. #include<typeinfo> // biblioteka do dynamic cast
  3.  
  4. using namespace std;
  5.  
  6. class Funkcje_zyciowe{
  7.  
  8. public:
  9.  
  10. virtual void jedz() = 0;
  11. virtual void pij() =0;
  12. virtual void spij() =0;
  13. virtual void baw_sie() =0;
  14.  
  15. };
  16.  
  17. class zwierze{
  18.  
  19. string imie;
  20.  
  21. protected:
  22. int glod = 0;
  23. int zmeczenie =0;
  24. int pragnienie =0;
  25. int humor =0;
  26. }
  27.  
  28.  
  29. public:
  30. zwierze( string im){
  31. imie = im;
  32. }
  33. virtual string dajRodzajZwierzecia() const{ // zad 2
  34. return "Zwierzatko: ";
  35. }
  36. const string naLancuch() const
  37. { // zwraca stala ref
  38. cout << dajRodzajZwierzecia();
  39. cout << glod << endl;
  40. cout << pragnienie << endl;
  41.  
  42. return imie;
  43. }
  44.  
  45. };
  46.  
  47. class pies: public zwierze, public Funkcje_zyciowe{
  48.  
  49. public:
  50. pies(string im): zwierze(im){};
  51.  
  52. void szczekaj(){
  53. cout << " Hau szczek szczek hau " << endl;
  54. }
  55. void podaj_lape(){
  56. cout << " Pjesek podal lapke" << endl;
  57. }
  58. string dajRodzajZwierzecia() const{
  59. return "Pies: ";
  60. }
  61.  
  62. void jedz(){
  63. int jedzenie;
  64. cout << "Podaj ilosc jedzenia: " << endl;
  65. cin >> jedzenie;
  66. glod -= jedzenie;
  67. //cout << glod << endl;
  68. }
  69.  
  70. void pij(){
  71. int woda;
  72. cout << "Podaj ilosc wody" << endl;
  73. cin >> woda;
  74. pragnienie -= woda;
  75. cout << pragnienie << endl;
  76. }
  77.  
  78. void spij(){
  79. int czas;
  80. cout << "Ile dasz odpoczac? " << endl;
  81. cin >> czas;
  82. zmeczenie -= czas;
  83. cout << zmeczenie << endl;
  84. }
  85.  
  86. void baw_sie(){
  87. int czas;
  88. cout << "Ile chcesz sie bawic? " << endl;
  89. cin >> czas;
  90. humor += czas;
  91. cout << humor << endl;
  92. }
  93.  
  94.  
  95. };
  96.  
  97. class kot: public zwierze, public Funkcje_zyciowe{
  98.  
  99.  
  100. };
  101.  
  102. class SchroniskoDlaZwierzat{
  103.  
  104. zwierze* ilosc_miejsc[100];
  105.  
  106. public:
  107. SchroniskoDlaZwierzat(zwierze* tabwsk[],int rozmiar){
  108. for (int i = 0; i< rozmiar; i++) ilosc_miejsc[i] = tabwsk[i];
  109. }
  110.  
  111. zwierze* daj_zwierze(int nr){
  112. return ilosc_miejsc[nr];
  113. }
  114.  
  115. void dodaj_zwierze(zwierze* z, int nr){
  116. ilosc_miejsc[nr] = z;
  117.  
  118. }
  119.  
  120.  
  121. };
  122.  
  123. int main()
  124. {
  125. zwierze zwierzatko("Ubot");
  126. pies pjes("Wincent");
  127. /* zwierze* tab[5]= {new pies("Ubot"), new pies("Kuba"), new pies("Wincent"), new pies("Luska")};
  128. SchroniskoDlaZwierzat schronisko(tab,4);
  129.  
  130. for(int i = 0; i < 4; i++){
  131. //cout << dynamic_cast<pies*>(schronisko.daj_zwierze(i)) -> naLancuch() << endl;
  132. dynamic_cast<pies*>(schronisko.daj_zwierze(i)) -> szczekaj(); // pryiorytet operatorow, najper dynamic a pozniej szczekanie
  133. pies* p = dynamic_cast<pies*>(schronisko.daj_zwierze(i));
  134. cout << p -> naLancuch() << endl;
  135. }
  136. cout << " Jak nazywa sie pies? " << pjes.naLancuch() << endl;
  137. pjes.szczekaj();
  138. pjes.podaj_lape();
  139. pjes.dajRodzajZwierzecia();
  140.  
  141. schronisko.dodaj_zwierze(zwierze* zwierzatko);
  142.  
  143. zwierze &refz = zwierzatko; // zad 3
  144. zwierze &refp = pjes;
  145.  
  146. cout << refz.naLancuch() << endl;
  147. cout << refp.naLancuch() << endl;
  148.  
  149. zwierze *wskz = &zwierzatko;
  150. zwierze *wskp = &pjes;
  151.  
  152. pies* wskp2 = dynamic_cast<pies*>(wskp);
  153. if(wskp2 != NULL)
  154. cout << wskp2 -> naLancuch() << endl;
  155.  
  156. pies* wskp3 = dynamic_cast<pies*>(wskz);
  157. if(wskp3 != NULL)
  158. cout << wskp3 -> naLancuch() << endl;
  159. else
  160. cout << "nie da rady, nieprawidlowy typ" << endl;
  161.  
  162. cout << wskz -> naLancuch() << endl;
  163. cout << wskp -> naLancuch() << endl;
  164.  
  165.  
  166. pies& refp2 = dynamic_cast<pies&>(refp); // rzutowanie dynamiczne tylko ze ref i wsk
  167. cout << refp2.naLancuch() << endl; // metody wirtualne, obiekty
  168. try{
  169. pies& refp3 = dynamic_cast<pies&>(refz); // refz na pies& i w refp3 jest wynik
  170. cout << refp3.naLancuch() << endl;
  171. }
  172. catch (bad_cast &bc)
  173. {
  174. cout << "Nie powiodlo sie, nieprawidlowy typ" << endl;
  175. cout << bc.what() << endl;
  176. }*/
  177.  
  178.  
  179. return 0;
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement