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



Polimorfizm

Niezmiernie ważną funkcjonalnością związaną z korzystaniem z dostarczonej metody klasy bazowej jest możliwość przesłonięcia jej implementacji w klasie pochodnej. Dzięki temu wywołując tą samą metodę na rzecz obiektu klasy dziedziczącej po klasie bazowej uzyskuje się inne działanie niż przy wywołaniu tej samej metody na rzecz obiektu klasy bazowej. Zmiana w klasie pochodnej może być zarówno całkiem nową, niezależną implementacją, jak również może korzystać z implementacji zawartej w klasie bazowej. Do realizacji ostatniego zadania języki programowania oferują odpowiednie sposoby wywoływania implementacji metod z klas bazowych.

Sposób użycia przesłaniania metod jest przedstawiony za pomocą poniższego kodu. Jeśli deklaracje i definicje metod klas bazowej i pochodnej są następujące:

class KlasaBazowa {
public:
	void metoda();
};

	class KlasaPochodna : public KlasaBazowa {
	public:
		void metoda();
	};

	void KlasaBazowa::metoda() {
		// implementacja w klasie bazowej
	}

	void KlasaPochodna::metoda() {
		// implementacja w klasie pochodnej
	}

to ich użycie wykorzystujące przesłonione metody przedstawia poniższy fragment:

KlasaBazowa * kb = new KlasaBazowa();
KlasaPochodna * kp = new KlasaPochodna();

kb->metoda();		// implementacja z klasy bazowej
kp->metoda();		// implementacja z klasy pochodnej

Przedstawione rozwiązanie w przypadku używania wskaźników różnych typów klas nie jest szczególnie efektowne i nie przynosi znaczących korzyści. Jednakże jego złożenie z cechą, która umożliwia przechowywanie adresu obiektu klasy pochodnej we wskaźniku bądź referencji na typ bazowy otwiera ogromne możliwości.

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