Untitled
raw download clone
TEXT
views 22
,
size 4364 b
#include <iostream>
#include <ios>
#include <iomanip>
#include <typeinfo>
using namespace std;

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 FunkcjeZyciowe{
   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 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: ";
        }



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

                }
                void miaucz()
                {
                    cout<<"mialmial "<<endl;
                }
                void myjesie()
                {
                    cout<<"kot myje sie" << endl;
                }
                string dajRodzajZwierzecia() const
                {
                    return "Kot: ";
                }



/*protected:

*/
};
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()
{
    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;
    Zwierze* tab[4]={new Pies("Azor"),new Pies("Burek"),new Pies("Maks"),new Pies("Reksio");
                     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;
}

    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();


                     bawsie();

    return 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();
    FunkcjeZyciowe & funkcja1=pies;

    Kot kot("kotek");
    FunkcjeZyciowe & funkcja=kot;

    funkcja.mialcz();
    funkcja.myjsie();
    funkcja.jedz(5);
    funkcja.pij(2);
    funkcja.spij(1);
    funkcja.bawsie(3);
    cout<<dynamic_cast<Kot8>(funkcja).naLancuch();
    FunkcjeZyciowe funkcja2;

    return 0;
}
close fullscreen
Login or Register to edit or fork this paste. It's free.