15579 ullman232 (2)

15579 ullman232 (2)



b ZUKJfcN J UW ANI-. OBIEKTOWO JtjZYKl ZAPYTAŃ

8.1. Elementy zapytań w j ęzyku ODL

W bieżącym rozdziale będziemy kontynuować rozważania z rozdziału 2 na temat języka ODL. Najpierw opiszemy różne sposoby współdziałania klas ODL z szerszym środowiskiem, w którym są one zanurzane. Potem rozważymy sprawę „zasięgu’’ klasy, która w języku OQL odgrywa rolę podobną do roli, jaką w SQL odgrywa relacja.

8.1.1. Działania na obiektach

Wkrótce przekonamy się, że język OQL, podobnie jak język SQL, umożliwia zapis działań związanych z relacjami i zbiorami. Jednak często trzeba wyrazić w języku działania dotyczące innego typu obiektów. Jeśli bowiem na przykład obiekty są dokumentami, to warto mieć dostęp do funkcji, która odnajduje w nich pewne słowa kluczowe. Jeśli z kolei obiektami są mapy lub inne obrazy, to warto mieć możliwość wyświetlania ich w określony sposób. Nawet na danych o konwencjonalnej strukturze rekordów, takich jak dane w przykładzie filmowym, można wykonać dodatkowe działania, na przykład generowanie wykresu określającego dla danej gwiazdy filmowej liczbę filmów, w których ona wystąpiła w poszczególnych latach.

W systemie SQL takie działania trzeba programować w podstawowym języku programowania, np. w C, w którym osadza się instrukcje SQL. Wartości między zmiennymi SQL a zmiennymi programu podstawowego przekazuje się, korzystając z mechanizmu opisanego w podrozdziale 7.1.

Powiązanie definicji ODL z językiem podstawowym jest łatwiejsze. Zakłada się, że językiem podstawowym jest język zorientowany obiektowo, np. C++ lub Smalltalk. Deklaracje wyrażane w języku ODL są na tyle podobne do deklaracji w każdym języku obiektowym, że można je bezpośrednio tłumaczyć z ODL. A ponadto zmienne z języka podstawowego, które odpowiadają obiektom, mogą bezpośrednio reprezentować obiekty występujące w instrukcjach ODL1.

W ODL występuje jeszcze (poza atrybutami i związkami) inny rodzaj elementów: metody, które ułatwiają łączenie języka podstawowego z deklaracjami ODL oraz zapytaniami OQL. Metoda jest to funkcja pow iązana z klasą. Metoda działa na obiekcie, a może mieć poza nim jeszcze inne argumenty. Przekonamy się, że w języku OQL metod można używać nieomal tak samo jak atrybutów klasy'.

8.1.2. Deklarowanie sygnatur metod

W języku ODL można deklarować nazwy metod związanych z klasami oraz typy wejścia/wyjścia tych metod. Deklaracje te nazywa się sygnaturami i są one odpowiednikami deklaracji funkcji w C lub C++ (w odróżnieniu od definicji funkcji, która jest kodem implementującym funkcję). Kod metody można zapisać w języku podstawowy m, nie stanow i on elementu ODL.

Dlaczego sygnatury?

Zaleta wprowadzenia sygnatur polega na tym, że w trakcie implementowania schematu w języku programowania można automatycznie sprawdzać, czy' implementacja pasuje do projektu zawartego w schemacie. Oczywiście nie można w ten sposób kontrolować, czy implementowane funkcje działają zgodnie ze swoim znaczeniem, ale można chociaż sprawdzać poprawność parametrów co do ich liczby i typu.

1

Przypomnijmy tutaj, Ze typy zmiennych z języka podstawowego, takie jak np. typ całkowity, nic pasują do podstawowych typów danych SQL: do krotek i relacji. A zatem łączenie SQf. i języka podstawowego jest z natury rzeczy niewygodne, była o tym mowa w podrozdziale 7.1.

Deklaracje metod występują w deklaracji interfejsu razem z atrybutam i związkami. Jak to się dzieje zazwyczaj w językach wysokiego poziomu, tal i tutaj każda metoda jest związana z klasą (tzn. z interfejsem) i uruchamia si< ją na obiektach tej klasy. Oznacza to, że obiekt jest „ukrytym” argumenten metody. Dzięki temu można tej samej nazwy metody używać w wielu róż nych klasach, ponieważ to obiekt, na którym ma zostać wykonane działanie przesądza o znaczeniu metody. Taki sposób korzystania z metod nazywa si przeładowaniem (dotyczy metod określanych dla więcej niż jednej klasy).

Syntaktyka deklaracji metody jest podobna do deklaracji funkcji w języ ku C, przy czym jest ona rozszerzona o dwa elementy.

1.    Parametry funkcji określa się jako in, out lub inout, co oznacza oc powiednio parametry wejścia, wyjścia lub wejścia-wyjścia. Wartość dwóch ostatnich typów parametrów' mogą ulec zmianie w wynik działania funkcji, natomiast wrartość parametru typu in nic może by zmieniona. Dlatego parametry typu out oraz inout są przekazywań przez, referencje, a parametr typu in przez w-artość. Zauważmy, funkcja może tworzyć także wartość powrrotu, co stanowi dodatków; inny niż parametry out. oraz inout, sposób przekazywania wyliczc nych w niej wartości.

2.    W funkcji mogą pojawiać się wyjątki, są to odpowiedzi funkcji r zdarzenia nietypowe, które nie mieszczą się w standardowych mech; nizmach komunikowania się funkcji poprzez parametry lub warto: powrotu. Wyjątek na ogół oznacza nietypowe lub nieoczekiwane w runki, które są obsługiwane przez pcwrne funkcje także odpowiedzią ne za ich występowanie (najczęściej bezpośrednio lub w ciągu w wołań). Na przykład jako w yjątek można potraktować dzielenie prz<


Wyszukiwarka

Podobne podstrony:
ullman249 (2) 504 fi ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ jako referencja. Rozpoczynamy od zdefinio
42460 ullman241 (2) 488 8. ZORIENTOWANE OBIEKTOWO JĘZYKI ZAPYTAŃ Korzystamy tutaj z podzapytania po
43611 ullman239 (2) 484 S. ZORIENTOWANE OBIEKTOWO JE2YK! ZAPYTAŃ SELECT m FROM Filmy :r. WHERE m.nal
44501 ullman253 (2) 512 8 ZORIENTOWANE OBIEKTOWO JĘZYK! ZAPYTAŃ Pozostałe funkcje można definiować a
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
ullman245 (2) "ty u S ZORIENTOWANE OBIEKTOWO JfjZYKI ZAPYTAŃ Gdy mamy już listę, uporządkowaną

więcej podobnych podstron