Nadesłany przez Kamil Dworak, 06 sierpnia 2010 00:12
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
strategy_1_c.cpp:
/**************************************** * Wzorzec Projektowy Strategy * * (strategia) * * www.algorytm.org * * Opracowal Dworak Kamil * *****************************************/ #include <iostream> #include <string> using namespace std; class IPracowac { public: virtual void pracuj()=0; }; class IDojezdzac { public: virtual void dojezdzaj()=0; }; class ISpedzanieWolnegoCzasu { public: virtual void spedzajWolnyCzas()=0; }; //poszczegolne algorytmy class NaprawaSamochodow : public IPracowac { public: void pracuj(){ cout<<"Praca: naprawia samochody\n"; } }; class Leczenie : public IPracowac { public: void pracuj(){ cout<<"Praca: leczy ludzi\n"; } }; class RoznoszenieListow : public IPracowac { public: void pracuj() { cout<<"Praca: roznosi listy\n"; } }; class Samochod : public IDojezdzac { public: void dojezdzaj() { cout<<"Dojazd: samochod\n"; } }; class Rower : public IDojezdzac { public: void dojezdzaj() { cout<<"Dojazd: rower\n"; } }; class Silownia : public ISpedzanieWolnegoCzasu { public: void spedzajWolnyCzas() { cout<<"Wolny Czas: silownia\n"; } }; class LiteraturaPopularnoNaukowa : public ISpedzanieWolnegoCzasu { public: void spedzajWolnyCzas() { cout<<"Wolny Czas: literatura popularno-naukowa\n"; } }; //kontekst class Pracownik { private: IPracowac* pracowac ;// = null; IDojezdzac* dojezdzac;// = null; ISpedzanieWolnegoCzasu* spedzanieWolnegoCzasu;// ;= null; public: Pracownik(string zawod) { if (zawod =="mechanik") { pracowac = new NaprawaSamochodow(); dojezdzac = new Samochod(); spedzanieWolnegoCzasu = new Silownia(); } else if (zawod=="lekarz") { pracowac = new Leczenie(); dojezdzac = new Samochod(); spedzanieWolnegoCzasu = new LiteraturaPopularnoNaukowa(); } else if (zawod=="listonosz") { pracowac = new RoznoszenieListow(); dojezdzac = new Rower(); spedzanieWolnegoCzasu = new Silownia(); } else { throw "nie ma takiego zawodu!"; } } //tutaj wywolujemy algorytmy void methods() { pracowac->pracuj(); dojezdzac->dojezdzaj(); spedzanieWolnegoCzasu->spedzajWolnyCzas(); } }; int main(){ string zawod; cin>>zawod; int x; try { Pracownik pracownik = Pracownik(zawod); pracownik.methods(); } catch(const char* wyjatek){ cout << wyjatek << endl; cin >>x; } cin >>x; return 0; }