algorytm.org

Implementacja w C/C++

Praca
Interesuje Cię praca przy weryfikacji oprogramowania do samolotów?
Sprawdź to!
Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Strategia (strategy) - Implementacja w C/C++
Ocena użytkownikóww: *****  / 3
SłabyŚwietny
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;
 }

	

Komentarze
photo
+6 # kpppl 2015-08-01 12:00
A gdzie delete? :)
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz