ZSBD-2st-1.2-lab9.tresc-1.3-Slajd4

From Studia Informatyczne

Dziedziczenie

Dziedziczenie


Na slajdzie pokazano sposób utworzenia przykładowej hierarchii typów. Typy stanowiące korzeń hierarchii dziedziczenia tworzy się tak, jak przedstawiono już wielokrotnie na poprzednich zajęciach. Przykład (1) pokazuje polecenie tworzące typ FIGURA o atrybucie KOLOR, który będzie stanowić korzeń naszej przykładowej hierarchii. Warto tutaj zwrócić uwagę na jeden nowy element, który nie pojawiał się wcześniej. Na końcu polecenia tworzącego typ FIGURA dodano słowa kluczowe NOT FINAL. Aby wytłumaczyć znaczenie tych słów należy wprowadzić jeszcze jedną cechę modelu obiektowo-relacyjnego zaimplementowanego w SZBD Oracle. Otóż w modelu tym możliwe jest zablokowanie możliwości tworzenia specjalizacji wybranych typów. Domyślnie typ obiektowy jest tworzony jest z zablokowaną możliwością tworzenia podtypów, chociaż można wskazać to jawnie umieszczając słowo kluczowe FINAL na końcu polecenia tworzącego typ. Podobną funkcjonalność ma w języku JAVA słowo kluczowe final. Aby istniała możliwość tworzenia podtypów typu obiektowego w SZBD Oracle, należy to jawnie nakazać za pomocą słów kluczowych NOT FINAL umieszczonych na końcu polecenia tworzącego typ. W sytuacji, gdy typ, dla którego chcemy utworzyć podtyp został utworzony wcześniej ze słowem FINAL, bądź bez żadnego słowa kluczowego określającego możliwość dziedziczenia, można zmienić jego definicję za pomocą polecenia ALTER TYPE nazwa_typu NOT FINAL;

Polecenia tworzące podtypy (2) i (3) różnią się nieznacznie od polecenia tworzącego korzeń hierarchii typów. Różnicą jest tutaj to, iż zastąpiono słowa kluczowe AS OBJECT słowem kluczowym UNDER po którym podano nazwę nadtypu tworzonego typu. Nowe podtypy reprezentują konkretne kształty figur, czyli kwadrat i koło. Każdy z nowych podtypów posiada atrybuty charakterystyczne dla reprezentowanego przez nie kształtu: DLUGOSC_BOKU dla typu KWADRAT i PROMIEN dla typu KOLO. Ponieważ podtyp dziedziczy wszystkie atrybuty nadtypu, to powstaje problem kolejności, w jakiej należy podawać wartości atrybutów w konstruktorze atrybutowym typu obiektowego. Obok każdego polecenia tworzącego typ obiektowy przedstawiono również przykładowe wywołanie konstruktora atrybutowego. Jak można łatwo zauważyć, najpierw podawane są wartości atrybutów z nadtypu, a dopiero później nowe atrybuty wprowadzone w podtypie. W sytuacji gdy byłoby więcej typów na ścieżce od korzenia, do typu, którego konstruktor jest wywoływany, to najpierw należałoby podawać wartości atrybutów korzenia, a następnie wartości atrybutów kolejnych typów na ścieżce w dół hierarchii dziedziczenia.


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