ullman252 (2)

ullman252 (2)



MU 8 ZORIENTOWANI- OBIEfCK)WO JĘZYKI ZAJ»YTAŃ

!c) Należy wskazać klasy z co najmniej jednym zatopionym okrętem.

!!d) Należy wskazać bitwy, w których został uszkodzony co najmniej jeden okręt floty USA.

8.6. Abstrakcyjne typy danych w języku SQL3

Typy wiersza oraz referencje do typów wiersza zapewniają w języku SQL3 spełnianie tych samych funkcji, które w języku OQL są dostępne dzięki obiektom. Poza tym można dzięki nim w wygodny sposób modyfikować „obiekty", za pomocą operatorów wstawiania i usuwania z SQL. W języku OQL natomiast takie modyfikacje są dostępne wyłącznie z poziomu języka programowania zorientowanego obiektowo, np. C++.

Niestety typy wiersza nie zapewniają hermetyzacji, która jest dostępna w językach programowania zorientow anych obiektow o. Przypomnimy tutaj to, o czym była mowa w p. 1.3.1, a mianowicie, że „hermetyzacja" klasy zapewnia, że obiekty tej klasy mogą być zmieniane tylko za pomocą stałego zestawu operatorów-, które definiuje się wraz z klasą. „Hermetyzacja" jest używana profilaktycznie przeciw błędom programowania powstającym w wyniku takiego korzystania z danych, którego projektant bazy danych nie przewidział albo nie zamierzał dopuścić.

Typy wiersza nie podlegają hermetyzacji, działania na krotkach typu wiersza wykonuje się, stosując wyrażenia dostępne w języku SQL3. Interfejsy zODL (czyli klasy) także nie zawierają pełnej hermetyzacji (kapsułkowania), ponieważ składowe obiektów są osiągalne poprzez zapytania OQL. Z drugiej strony pobieranie wartości wewnętrznych struktur}- obiektu w zasadzie jest mniej niebezpieczne niż nieoczekiwana zmiana obiektu. W języku OQL nie można aktualizować obiektów inaczej niż korzystając z metod (patrz p. 8.1.2). Te metody, najczęściej napisane w konwencjonalnym obiektowym języku programowania, np. w C++, można wykonywać ty lko na obiektach danej klasy.

W języku SQL3 istnieją inne definicje „klas", które zapewniają hermely-zację, są to abstrakcyjne typy danych (abstraci data type), w skrócie ADT. Obiektów rodzaju ADT używa się jako składowych krotek, a niejako krotek. Mają one jednak strukturę krotki, tak samo jak obiekty' w języku ODL zazwyczaj mają strukturę zawierającą składowe.

8.6.1. Definiowanie abstrakcyjnych typów danych

Postać definicji ADT została przedstawiona na rys. 8.16. W wierszu 1) występuje instrukcja create, w której umieszcza się nazwę typu ADT. W w ierszu 2) umieszczono listę nazw atrybutów i ich ty pów.

1)    CREATE TYPE Cnazwa typu>(

2)    lista atrybutów oraz ich typów

3)    opcjonalna deklaracja funkcji = and < dla

deklarowanego typu

4)    deklaracja funkcji (metod) typu

5)    );

RYSUNEK 8.16

Definiowanie abstrakcyjnych typów danych

W wierszu 3) na rys. 8.16 występują opcjonalne deklaracje operatorów porów nania = i <. Funkcja równości ma następującą postać:

EQUALS <nazwa funkcji implementującej równość obiektowo1

Funkcja < jest deklarowana w podobny sposób, tylko zamiast słowa kluczowego equa:.S występuje słowo kluczowe LESS THAN1. Zauważmy, że pozostało cztery operatory porównania można definiować za pomocą dwóch wymienionych, a zatem nie muszą być jawnie definiowane. Na przykład oznacza ,.= lub <”, z kolei > oznacza „nic <”. Gdy zdefiniuje się operatory = i <, to wartości z ADT można porównywać w klauzulach V.'HERE tak samo jak wartości konwencjonalnych typów SQL, takie jak np. wartości całkowite lub teksty.

W wierszu 4) określono możliwość deklarowania innych funkcji (czyli metod) dla typów ADT. Poza tym w SQL3 istnieją dla typów ADT „wbudowane” funkcje standardowe, których nie trzeba ani definiować, ani deklarować. Należą tam:

1.    Konstruktor - funkcja, która tworzy nowy obiekt danego typu. Wszystkie atrybuty tego obiektu mają na początku wartości NULI.. Jeśli Tjest nazwą typu ADT, to T{) oznacza konstruktor tego typu.

2.    Obserwator - funkcja, która dla każdego atrybutu zwraca jego wartość. Jeśli A jest nazwą atrybutu, a X jest zmienną, której wartością jest pewien obiekt typu ADT, to A(X) oznacza wartość atrybutu obiektu X. W tym samym celu można także stosować bardziej konwencjonalną notację XA.

3.    Modyfikator - funkcja, która poszczególnym atrybutom przypisuje nowe wartości. Można z nich korzystać po lewej stronie instrukcji przypisania w sposób opisany w p. 8.6.2. Aby zapewnić hermetyzację, trzeba zablokować dostęp do tych funkcji. W $QL3 przyjęto, że do wykonania tych funkcji trzeba mieć określone prawo F.XECUTE. To prawo może być nadawane lub odbierane na takich samych zasadach jak sześć praw' w języku SQL2, co omówiono w p. 7.4.1.

1

W miarę ewolucji standardu SQL3 prawdopodobnie tc funkcje nic będą traktowane specjalnie, ale będą definiowane i używane tak samo jak inne funkcje typów.


Wyszukiwarka

Podobne podstrony:
42460 ullman241 (2) 488 8. ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ Korzystamy tutaj z podzapytania po
24504 ullman238 (2) 482 S ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ T cych klauzulę WHERE. Te nazwiska s
70029 ullman243 (2) 492 8. ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ lect-from-whcre; przedstawiono ją n
73187 ullman254 (2) 514 s zorientowani: obiektowo języki zapytań traktowano by jako równe, jeśli wyg
82105 ullman255 (2) 516 S. ZORIENTOWANE OBIEKTOWO JEŻYKI ZAPYTAŃ 1)    B*UNCTION Adre
ullman247 (2) :>uu 8. ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ8.5.1. Typ wiersza W języku SQL3 można
ullman250 (2) 506 8 ZORIENTOWANE OBIEKTOWO JEŻYKI ZAPYTAŃ która relacja jest relacją R? W rozpatry w
48057 ullman236 (2) 478 8 ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ8.2.2. System typów Struktura typów w

więcej podobnych podstron