Untitled
raw download clone
TEXT
views 48
,
size 4219 b
#include <iostream>

using namespace std;
class FunkcjeZyciowe{
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
{
    string mImie;
    static int licznik;
public:
    Zwierze(string imie)
    {
        licznik++;
        mImie = imie;
    }
    void ustawImie(string mImie)
    {
        this->mImie = mImie;
    }
    virtual string dajRodzajZwierzecia() const
    {
        return "Zwierzatko: ";
    }
    const string naLancuch()
    {
        return dajRodzajZwierzecia()+mImie;
    }
    static int ileZwierzat()
    {
        return licznik;
    }

};

class Pies: public Zwierze, public FunkcjeZyciowe
{
    public:
        Pies(string imie) : Zwierze(imie)
        {

        }
        void szczekaj()
        {
            cout<<"hau hau" <<endl;
        }
        void dajLape()
        {
            cout<<"Podaj lape" << endl;
        }
        string dajRodzajZwierzecia() const
        {
            return "Pies: ";
        }
        virtual void jedz(int iloscPozywienia){}
        virtual void pij(int iloscWody){}
        virtual void spij(int czas){}
        virtual void bawSie(int czas){}

};
class Kot: public Zwierze, public FunkcjeZyciowe
{
    public:
        Kot(string imie) : Zwierze(imie)
        {

        }
        void miaucz()
        {
            cout<<"miau miau" <<endl;
        }
        void myjsie()
        {
            cout<<"chlap chlap" << endl;
        }
        string dajRodzajZwierzecia() const
        {
            return "Kot: ";
        }
        virtual void jedz(int iloscPozywienia){}
        virtual void pij(int iloscWody){}
        virtual void spij(int czas){}
        virtual void bawSie(int czas){}

};
class SchroniskoDlaZwierzat
{
    Zwierze*    mZwierzeta[100];
public:
    void ZabierzDoSchroniska(Zwierze* z,int numer)
    {
        mZwierzeta[numer]=z;
    }
    Zwierze* przygarnijZwierze(int numer)
    {
        return mZwierzeta[numer];
    }
    SchroniskoDlaZwierzat(Zwierze* Zwierzeta[],int liczba)
    {
        for(int i=0;i<liczba;i++)
        {
            mZwierzeta[i]=Zwierzeta[i];
        }
    }
};

int Zwierze::licznik=0;
int main()
{
Pies pies("Piesek");
cout<<pies.naLancuch();
pies.szczekaj();
pies.dajLape();
pies.jedz(3);
pies.pij(1);
pies.spij(2);
pies.bawSie(6);
cout<<pies.naLancuch();
Kot kot("Kotek");
cout<<pies.naLancuch();
kot.miaucz();
kot.myjsie();
kot.jedz(3);
kot.pij(1);
kot.spij(2);
kot.bawSie(6);
cout<<kot.naLancuch();




/*
    Zwierze* tab[4]={new Pies("Azor"),new Pies("Czarek"),new Pies("Maks"),new Pies("Rex")};
    SchroniskoDlaZwierzat schronisko(tab,4);
    Zwierze* z=new Pies("Ciapek");
    Schronisko.ZabierzDoSchroniska(z,4);
    for(int i=0;i<5;i++)
    {
        dynamic_cast<Pies*>schronisko.przygarnijZwierze(i)->szczekaj();
        cout<<"imie psa"<<schronisko.przygarnijZwierze(i)->naLancuch()<<endl;
    }
*/






    /*
    Zwierze z("Janusz");
    Zwierze& refZwierzatko=z;
    Pies p("Reksio");
    Zwierze& refPies=p;
    Zwierze* wskZwierze = &z;
    Zwierze* wskPies;
    wskPies=&p;
    cout<<wskZwierze->naLancuch()<<endl;
    cout<<wskPies->naLancuch()<<endl;
    cout<<refZwierzatko.naLancuch()<<endl;
    cout<<refPies.naLancuch()<<endl;

    Pies* wskPies2=dynamic_cast<Pies*>(wskPies);
    Pies* wskPies3=dynamic_cast<Pies*>(wskZwierze);
    if(wskPies2 != NULL)
        cout<<wskPies2->naLancuch()<<endl;
    else
        cout<<"Niepoprawny typ"<<endl;
    if(wskPies3!=NULL)
        cout<<wskPies3->naLancuch()<<endl;
    else
        cout<<"Niepoprawny typ"<<endl;

    Pies& refPies2 = dynamic_cast<Pies&>(refPies);
    cout<<refPies2.naLancuch()<<endl;

    /*try
    {
        Pies& refPies3 = dynamic_cast<Pies&>(refZwierze);
        cout<<refPies3.naLancuch()<<endl;
    }

    catch (bad_cast &bc)
    {
        cout<<"Niepoprawny typ"<<endl;
        cout<<bc.what()<<endl;
    }
    p.szczekaj();
    p.dajLape();
    */
    return 0;
}
close fullscreen
Login or Register to edit or fork this paste. It's free.