INFO
Sylabus
Standard ODMG, część 3
1. Plan wykładu
2. ODL: Object Definition Language
3. Założenia przyjęte przy projektowaniu ODL
4. ODL - językowo-niezależny
5. ODL: BNF dla interfejsu
6. Atrybuty
7. Związki
8. Operacje
9. Przykład w ODL
10. Schemat w ODL -reprezentacja graficzna
11. ODL- inny przykład
12. ODL: składnia górnego poziomu
13. Model ODMG i ODL - zalety i wady
14. ODMG ODL - wady koncepcyjne i semantyczne
Skorowidz
Wyście:
Wyklad IX. Wprowadzenie do standardu ODMG, część 3:
ODL (KURS SSR)
I II III IV V VI VII VIII IX X XI XII XIII XIV
« poprzedni punkt   następny punkt »

7. ODL: Związki (relationships)

<deklaracja_związku>   ::= relationship <cel_ścieżki> <identyfikator>
                             inverse<ścieżka_odwrotna> 
                             [{order_by <lista_atrybutów>}]
(4kB)

interface Profesor : Osoba 
     (extent profesorowie 
     keys id_wydziału, nr_pesel):persistent
   { 
     attribute char id_wydziału[6]; 
     attribute long nr_pesel; 
     attribute Adres adres; 
     attribute set<string> stopnie; 
     relationship set<Student> opiekuje_się inverse Student::opiekun; 
     relationship set<Asystent>zatrudnia inverse Asystent::pracuje_dla;
     relationship Wydział pracuje_na inverse Wydział::zatrudnia; 
      ... operacje ... 
   };
Brak związków ternarnych i o większej liczbie argumentów. Brak możliwości przypisania atrybutów do związków. (Różnica z Relationship Service OMG CORBA.) Może i dobrze...?




8. ODL: Operacje

Zgodne ze specyfikacją OMG IDL.
Definiowana jest wyłącznie specyfikacja operacji (sygnatura), ODMG nie zajmuje się (w zasadzie) jakimikolwiek środkami programowania operacji. (Szkoda...)

<dekl_operacji>      ::= [oneway] <specyf_typu_op> <identyfikator> 
                        ([<lista_parametrów>]) [<deklar_wyjątków>] 
                        [<deklar_kontekstu>] 
<specyf_typu_op>  ::= <specyfikacja_typu_prostego> | void 
<lista_parametrów>::= <dklr_parametru>|<lista_parametrów>,<dklr_parametru>
<dklr_parametru>  ::= <atryb_parametru> <spec_typu_prostego> <deklarato>
<atryb_parametru> ::= in | out | inout
<deklar_wyjątków>::= raises (<lista_nazw>) 
<deklar_kontekstu>::= context (<lista_stringów>)
Brak pełnej ortogonalności, np. parametrem operacji nie może być struktura i operacje nie mogą zwrócić struktury. (Ale - ciekawostka - parametrem operacji mogą być kolekcje, ale tylko wartości prostych, nie struktur. Być może jest to po prostu błąd w specyfikacji składni.)



« poprzedni punkt   następny punkt »