Pakiet programów do zdalnego nauczania Programowania Orientowanego Obiektowo
Dzisiaj jest
Poniedziałek, 16 Lipiec 2018
Zarejestrowanych użytkowników: 4
Dostępnych pytań testowych: 102
HOME
Strona tytułowa pracy dyplomowej
NAUKA
Materiały dydaktyczne związane z OOP
TESTY
Sprawdzenie poziomu zdobytej wiedzy
ZASOBY
Literatura i zasoby sieciowe o OOP
ŹRÓDŁA
Zbiór projektów dydaktycznych z OOP
KONTO
Możliwość śledzenia własnych postępów
INFO



Wycofywanie operacji

Bardzo często zachodzi potrzeba wycofywania ostatnio wykonanej lub ostatnio wykonanych operacji. Wzorzec Polecenie bardzo pomaga w implementacji takiej funkcjonalności. Odpowiednie obiekty poleceń konkretnych muszą zapamiętywać poprzedni stan obiektu przedmiotu polecenia. W ogólnym przypadku może być to kopia tego obiektu lub jego pełnego stanu wewnętrznego wykonana przed zmianą (do jej utworzenia pomocny może okazać się wzorzec Pamiątka), jednak bardzo często obiekty poleceń nie muszą pamiętać całego stanu, a jedynie jego wybrane fragmenty.

W przypadku omawianego przykładu polecenie zmiany prędkości musi zapamiętać prędkość manipulatora przed zmianą (co powoduje, że należy rozszerzyć interfejs manipulatora o odpowiednią metodę pobierającą bieżąca wartość prędkości). Z kolei polecenie przesunięcia nie musi pamiętać żadnych dodatkowych informacji – wystarczy że w przypadku żądania wycofania polecenia wywoła ono ruch manipulatora w przeciwnym kierunku do wskazanego.

W celu implementacji operacji wycofywania należy rozszerzyć interfejs abstrakcyjnej klasy Polecenie o nową metodę wirtualną wycofaj(). Nowa deklaracja tej klasy będzie więc wyglądać następująco:

class Polecenie {
public:
	virtual ~Polecenie ();
	virtual void wykonaj (Manipulator * manipulator) = 0;
	virtual void wycofaj (Manipulator * manipulator) = 0;
};
Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11