Pakiet programów do zdalnego nauczania Programowania Orientowanego Obiektowo
Dzisiaj jest
Środa, 18 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



Przykład (interfejs manipulatora)

Dla przedstawienia kolejnych aspektów wzorca projektowego Polecenie zostanie wyprowadzony nowy przykład oparty na wprowadzaniu poleceń do manipulatora. Klasa manipulatora umożliwia ustawianie szybkości przesuwania ramion oraz ustawianie nowych przesunięć manipulatora w osiach x oraz y.

Klasa posiada następującą deklarację:

class Manipulator {
public:
	Manipulator (double predkosc);
	
	bool przesun ();
	bool czyPrzesunieto () const;

	void ustawPrzesuniecie (double dx, double dy);
	void ustawPredkosc (double predkosc);
private:
	void sprawdzUstawialnosc() const;

	double s_predkosc;
	double s_x;
	double s_y;
	double s_dx;
	double s_dy;

	static const double EPS;
};

Metody ustawPredkosc() oraz ustawPrzesuniecie() określają odpowiednio maksymalną odległość na jaką może poruszyć się manipulator w jednym kroku oraz nowe przesunięcie jego ramion.

Metoda przesun() umożliwia jednostkowe przesunięcie ramion manipulatora. Wskutek istnienia ograniczeń manipulatora (odległość jaką może pokonać w czasie jednego wykonania operacji przesun()) wywołanie tej metody nie musi kończyć się "pełnym" przesunięciem manipulatora do wskazanego punktu, a jedynie o część zadanej ścieżki. Aby więc wykonać pełne przesunięcie należy odpowiednio dużo razy wywołać metodę przesun().

Wiążą się z tym problemy – po pierwsze do manipulatora nie można wprowadzać żadnych zmian (zadanie nowego przesunięcia, zmiana prędkości) dopóki jego poprzednie zadanie nie zostanie zakończone. W przypadku przedstawionego przykładu zostanie w tym wypadku wygenerowany odpowiedni wyjątek. Informację o zakończeniu zadania można uzyskać na podstawie wartości zwracanej metody czyPrzesunieto().

Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11