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



Inicjalizacja prototypów

Zwykle zdarza się, że prototyp jest tylko szkieletem obiektu, który należy jeszcze odpowiednio skonfigurować. W przedstawionych poprzednio przykładach klient używał wyłącznie kopii regulatorów skonfigurowanych podczas rejestracji w managerze, których parametrów nie można było zmienić. W celu uzyskania pełnej funkcjonalności należy wprowadzić mechanizm umożliwiający zmiany parametrów regulatorów.

W pierwszym podejściu programista mógłby zadeklarować odpowiednie metody ustawiające konfiguracje w interfejsach klas konkretnych, np.

class RegulatorP : public Regulator {
public:
	(...)
	void ustaw (double k);
	(...)
};

class RegulatorPID : public Regulator {
public:
	(...)
	void ustaw (double k, double Ti, double Td);
	(...)
};

Implementacje tych metod są następujące:

void RegulatorP::ustaw (double k) {
	s_k = k;
}

void RegulatorPID::ustaw (double k, double Ti, double Td) {
	s_k = k;
	s_Ti = Ti;
	s_Td = Td;
}

Niestety ze względu na to, iż po utworzeniu prototypu najczyściej operuje się na wspólnym podtypie nie ma dostępu do metody ustaw() (dla każdego typu regulatora miałaby inną sygnaturę). Co prawda - można stosować testy z operatorem dynamic_cast<T>, aby uzyskać konkretny typ regulatora, ale jest to wysoce odradzane.

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