Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include <math.h>
- #include <typeinfo>
- #include <sstream>
- using namespace std;
- class FunkjeZyciowe
- {
- public:
- virtual void jedz(int iloscPozywienia)=0;
- virtual void pij(int iloscWody)=0;
- virtual void spij(int czas)=0;
- virtual void bawSie(int czas)=0;
- };
- class Zwierze
- {
- protected:
- int glod=0;
- int pragnienie=0;
- int zmeczenie=0;
- int humor=0;
- private:
- string mImie;
- public:
- Zwierze(string imie)
- {
- mImie=imie;
- }
- void ustawImie(string imie)
- {
- mImie=imie;
- }
- string naLancuch()
- {
- ostringstream os;
- os<<dajRodzajZwierzecia()<<mImie<<"\nGlod="<<glod<<"\nPragnienie="<<pragnienie<<"\nZmeczenie="<<zmeczenie<<"\nHumor="<<humor<<endl;
- return os.str();
- }
- virtual const string dajRodzajZwierzecia()
- {
- return "Zwierzatko: ";
- }
- };
- class Pies: public Zwierze, public FunkjeZyciowe
- {
- public:
- Pies(string mImie):Zwierze(mImie)
- {
- mImie=mImie;
- }
- void szczekaj()
- {
- cout<<"Hau hau"<<endl;
- }
- void dajLape()
- {
- cout<<"Podaje lape"<<endl;
- }
- const string dajRodzajZwierzecia()
- {
- return "Pies: ";
- }
- };
- class SchroniskoDlaZwierzat
- {
- private:
- Zwierze* zwierzeta[100];
- public:
- void dodajZwierze(Zwierze* z,int numer)
- {
- zwierzeta[numer]=z;
- }
- Zwierze* dajZwierze(int numer)
- {
- return zwierzeta[numer];
- }
- };
- int main()
- {
- /*Zwierze z1("Bolo");
- cout<<z1.naLancuch()<<endl;
- Zwierze &z2=z1;
- cout<<z2.naLancuch()<<endl;
- Pies p1("Tershtegen");
- cout<<p1.naLancuch()<<endl;
- p1.szczekaj();
- p1.dajLape();
- Zwierze& refZwierzatko=z1;
- Zwierze& refPies=p1;
- cout<<refZwierzatko.naLancuch()<<endl;
- cout<<refPies.naLancuch()<<endl;
- Zwierze* wskZwierzatko=&z1;
- Zwierze* wskPies=&p1;
- cout<<wskZwierzatko->naLancuch()<<endl;
- cout<<wskPies->naLancuch()<<endl;
- cout<<endl;
- cout<<endl;
- cout<<endl;
- Pies* wskPies2=dynamic_cast<Pies*>(wskZwierzatko);
- if(wskPies2!=NULL)
- cout<<wskPies2->naLancuch()<<endl;
- else
- cout<<"Zly typ!"<<endl;
- Pies* wskPies3=dynamic_cast<Pies*>(wskPies);
- if(wskPies3!=NULL)
- cout<<wskPies3->naLancuch()<<endl;
- Pies& refPies2=dynamic_cast<Pies&>(refZwierzatko);
- try
- {
- Pies& refPies2=dynamic_cast<Pies&>(refZwierzatko);
- cout<<refPies2.naLancuch()<<endl;
- }
- catch(bad_cast &bc)
- {
- cout<<"Niepoprawny typ2: "<<endl;
- cout<<bc.what()<<endl;
- }
- Pies& refPies3=dynamic_cast<Pies&>(refPies);
- cout<<refPies3.naLancuch()<<endl;
- */
- SchroniskoDlaZwierzat schronisko;
- Pies p1("Bolo");
- Pies p2("fit");
- Pies p3("pyk");
- Zwierze* wskp1=&p1;
- Zwierze* wskp2=&p2;
- Zwierze* wskp3=&p3;
- schronisko.dodajZwierze(wskp1,0);
- schronisko.dodajZwierze(wskp2,1);
- schronisko.dodajZwierze(wskp3,2);
- Pies* wskPies1=dynamic_cast<Pies*>(wskp1);
- if(wskPies1!=NULL)
- wskPies1->szczekaj();
- cout<<schronisko.dajZwierze(0)->naLancuch()<<endl;
- Pies* wskPies2=dynamic_cast<Pies*>(wskp2);
- if(wskPies2!=NULL)
- wskPies2->szczekaj();
- cout<<schronisko.dajZwierze(1)->naLancuch()<<endl;
- Pies* wskPies3=dynamic_cast<Pies*>(wskp3);
- if(wskPies3!=NULL)
- wskPies3->szczekaj();
- cout<<schronisko.dajZwierze(2)->naLancuch()<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement