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



Wymagania wobec adapterów

W języku C++ metody klas są domyślnie niewirtualne. Dopiero użycie specyfikatora virtual w deklaracji klasy informuje kompilator o konieczności dokonywania wiązania dynamicznego w przypadku użycia takiej metody. Taki stan rzeczy ma konsekwencje jeśli chodzi o adaptery. Metody interfejsu celu muszą być wirtualne – w innym wypadku ich przesłonięcie w klasie pochodnej nie da oczekiwanego rezultatu. Zawsze bowiem z powodu posługiwania się podtypem bazowym (klasa celu) będą wywoływane implementacje metod dla tego podtypu.

Podobnie ma się rzecz względem destruktora klasy celu. Jeśli twórca takiej klasy nie przewidział rozszerzania klasy, ani tym bardziej potrzeby jej adaptacji mógł uczynić destruktor niewirtualnym. W takim wypadku jeśli należałoby dokonać sprzątania w klasie adaptowanej (np. usunięcie uzyskanej na stercie pamięci) to jej destruktor i tak nigdy nie zostałby wywołany. Wskutek niewirtualności zostałby bowiem wywołany tylko destruktor klasy celu.

Reasumując - interfejs zamieszczony poniżej nie jest właściwy do adaptowania:

class Regulator {
public:
	Regulator ();
	virtual ~Regulator ();
	virtual double symuluj (double wej);
	virtual double pobierzE () const;
	virtual double pobierzWzad () const;
	virtual double pobierzU () const;
	virtual double pobierzY () const;
private:
	double s_e, s_wZad, s_u, s_y;
};
Adamik Łukasz, Politechnika Śląska w Gliwicach (AEiI) - 2010/11