48057 ullman236 (2)

48057 ullman236 (2)



478 8 ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ

8.2.2. System typów

Struktura typów w języku OQL jest określona tak. aby pasowała do deklaracji ODL (patrz p. 2.1.7). Ale w języku OQL nie ma ograniczeń na głębokość zagnieżdżania konstruktorów'typów.

Przy okazji omawiania systemu typów obowiązującego w językach programowania trzeba było odróżniać deklarację typu zmiennej (czasami nazywaną obiektem mutowalnym) od opisu wartości stałej (nazywaną również obiektem niemutowalnym). W instrukcjach OQL korzysta się albo zc zmiennych zadeklarowanych w języku podstawowym, gdzie często korzysta się z zapisu ODL, który wprowadzono w p. 2.1.7. albo z podobnego do niego. W języku ODL, który służy do definiowania danych, nie ma potrzeby definiowania stałych, ale w programach OQL jest taka konieczność. Stąd też trzeba się dowiedzieć, w jaki sposób tworzyć stałe określonego typu w' języku OQL. Poniżej przedstawiamy elementy i sposób ich łączenia przy opisie stałych w języku OQL:

1.    Typy podstawowe:

a)    Typy atomowe: całkowity, zmiennopozycyjny, znak, tekst oraz logiczny. Są one reprezentowane tak samo jak w SQL, tyle tylko, że do wyróżniania tekstów' używa się podwójnego cudzysłowu.

b)    Typ wyliczeniowy. Jego wartości są na bieżąco definiowane w ODL. Każdej z tych wartości można użyć jako stałej.

2.    Typy złożone są tworzone przez zastosowanie konstruktora dow olnego typu:

a)    Set (. ..).

b)    Bag (...).

c)    List {...).

d)    Array (. ..

e)    Struct (...).

Pierwsze cztery z nich są określane wspólnym mianem kolekcji. Zarów no kolekcje, jak i struktury- można dowolnie stosować do wartości odpowiednich typów podstawowych lub złożonych. Jednakże w przypadku stosowania operatora struct trzeba określać nazwę pola i wartość w tym polu. Po każdej nazwie pola występuje dwukropek, a następnie wartość; pary złożone z pola i wartości oddziela się przecinkami.

PRZYKŁAD 8.3

Wyrażenie bag(2,1,2) oznacza wiclozbiór, w którym liczba całkowita 2 występuje dwa razy, a liczba całkowita 1 tylko jeden raz. Wyrażenie:

struct (ala: bag(2,l,2}/ bar: „flis")

oznacza strukturę o dwóch polach. Pierwsze, o nazwie a la, zawiera wielo-zbiór wraz z jego wartościami, a drugie, które nazywa się bar, ma wartość tekstową „flis".

8.2.3. Wyrażenia ścieżkowe

Składowe zmiennych typu złożonego są dostępne przez zastosowanie notacji kropkowej, podobnej do kropki używanej w języku C. a także do kropki w języku SQL. Obow iązuje przy tym następująca zasada: Jeśli a oznacza pewien obiekt klasy C, a p określa jakiś element tej klasy - jest to atrybut, związek bądź metoda - to a.p oznacza wynik „zastosowania” p do obiektu a. Oznacza to:

1.    Jeśli p jest atrybutem, to a.p oznacza wartość tego atrybutu dla obiektu a.

2.    Jeśli p jest związkiem, to a.p jest obiektem lub kolekcją obiektów' dostępną z a przez związek p.

3.    Jeśli p jest metodą (być może z parametrami), to a.p oznacza wynik zastosowania metody/; do obiektu a.

Strzałki zamiast kropek

W OQL strzałka —► stanowi synonim kropki. Można wyczuć w tym rozwiązaniu wpływ języka C, w którym kropka i strzałka służą do uzyskania dostępu do składowych struktury. Jednakże w języku C- zakres stosowania tych dwóch operatorów jest inny, natomiast w OQL korzysta się z nich wymiennie. W języku C a.f oznacza, że a jest strukturą, podczas gdy p—► £ oznacza, że p jest wskaźnikiem do tej struktury. W obu przypadkach wynikiem jest po prostu w artość pola £ tej struktury.

PRZYKŁAD 8.4

Niech mój Film oznacza zmienną w języku podstawowym, której wartością jest pewien film. Wówczas:

•    Wartością wyrażenia mój Film. długość jest długość tego filmu.

•    Wartością wyrażenia mój Film. długośćWGodz lnach {) jest liczba rzeczywista, określająca czas trwania filmu wyrażony w godzinach, a obliczony przez zastosowanie metody dlugośćWGodzinach do obiektu mój Film.

•    Wartością wyrażenia mój Film. gwiazdy jest zbiór obiektów typu Gwiazda, powiązanych z filmem mój Film poprzez związek

gwiazdy.

•    Wartością wyrażenia mój Fi Im.nazwiskaGwiazd (mojaGwiazda) nie zwraca żadnej wartości (tzn. w C++ typem tego wyrażenia jest void). Ubocznym efektem działania tej metody jest przypisanie zmiennej wynikowej mojaGwiazda zbioru napisów, które oznaczają nazwiska gwiazd występujących w filmie.


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
ullman249 (2) 504 fi ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ jako referencja. Rozpoczynamy od zdefinio

więcej podobnych podstron