ZSBD-2st-1.2-w4.tresc-1.1-Slajd12

Z Studia Informatyczne
Wersja z dnia 16:21, 11 sie 2006 autorstwa PKrzyzagorski (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Dziedziczenie

Dziedziczenie


W obiektowych bazach danych można definiować nowe klasy i interfejsy wywodząc je ze zdefiniowanych wcześniej klas lub interfejsów. Model ODMG rozróżnia dwa typy powiązań między klasami lub interfejsami: związek relacji podtypu i związek dziedziczenia. W językach obiektowych te dwa związki są traktowane jako tożsame.

Związek relacji podtypu może dotyczyć klas i interfejsów. Oznacza on dziedziczenie przez typ pochodny funkcjonalności typu bazowego. Klasy i interfejsy połączone związkiem podtypu tworzą sieć powiązań o topologii grafu acyklicznego skierowanego. Oznacza to, że pojedyncza klas lub interfejs może dziedziczyć funkcjonalność po wielu klasach lub interfejsach.

Związek dziedziczenia łączy jedynie klasy. Oznacza on dziedzicznie zarówno funkcjonalności jak i implementacji. Związek dziedziczenia obejmuje semantykę relacji podtypu. Klasy połączone związkiem dziedziczenia tworzą sieć powiązań o topologii hierarchii. Oznacza to, że pojedyncza podklasa może dziedziczyć zarówno funkcjonalność jak i implementację po dokładnie jednej nadklasie.

Dziedziczona funkcjonalność może być rozszerzona w stosunku do typu bazowego. Dziedziczona implementacja może być rozszerzana lub przesłaniana. Przez przesłaniane rozumie się definicje nowego kodu dla odziedziczonych metod, który zastąpi stary kod.

Przedstawiony na slajdzie przykład pokazuje dwa alternatywne rozwiązania. W pierwszym klasa Wielokąt dziedziczy po klasie Figura funkcjonalność i implementację, w drugim klasa Wielokąt przez relację podtypu dziedziczy funkcjonalność bez implementacji.


<< Poprzedni slajd | Spis treści | Następny slajd >>