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



Kolejkowanie poleceń

Przedstawiony przykład manipulatora posiadał bardzo niewygodny interfejs. Klient w celu pełnego przesunięcia ramion manipulatora musi odpowiednią liczbę razy wywołać metodę przesun(). Co więcej w celu ustawienia nowych parametrów pracy (nowe przesunięcie lub prędkość) musi on poczekać, aż manipulator w pełni wykona poprzednią operację.

Znacznie lepsza sytuacja występowałaby gdyby klient mógł umieszczać polecenia w kolejce będącą składową klasy zarządzającej manipulatorem. Taki element wywoływałby na żądanie metodę przesun() oraz sprawdzał czy manipulator ukończył poprzednio realizowane zadanie. Jeżeli tak – pobierałby z kolejki kolejne polecenie. Odpowiedzialność za zarządzanie manipulatorem i jego zmiany w odpowiednim czasie nie należała by już do klienta, ale do klasy zarządzającej.

Deklaracja takiej klasy:

class Polecenie;

class ManagerManipulatora {
public:
	ManagerManipulatora (Manipulator * manipulator);
	~ManagerManipulatora ();

	void przesunManipulator ();
	void ustawPolecenie (Polecenie * polecenie);
private:
	Manipulator * s_manipulator;
	std::list<Polecenie *> s_kolejkaPolecen;
};

Klasa managera przechowuje listę poleceń w składowej s_kolejkaPolecen. Nowe polecenie jest dodawane za pomocą metody ustawPolecenie(). Oczywiście – jak zostało wskazane – nowe polecenie nie zawsze jest wykonywane od razu. Jeśli nie zostały ukończone bieżące czynności manipulatora lub kolejka poleceń posiada inne polecenie do wykonania zostają one wykonane w pierwszej kolejności.

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