474 8. ZORIENTOWANE OBIEKTOWO JijZYKI ZAPYTAŃ
Ćwiczenie 8.1.1. Trzy typy produktów są przedstawione na rys. 8.2 jako trzy różne podklasy klasy Produkt. Łatwo jest zauważyć, że typ produktu można określić albo na podstawie wartości atTybutu typ, albo na podstawie podklasy, do której należy obiekt. Taki zapis nie stanowi najlepszego projektu, ponieważ dopuszcza występowanie obiektu podklasy PC, którego atrybut typ ma wartość „laptop" lub „ćru-
intcrface Produkt
(extent Produkty key model)
attribute integer model; attribute string producent; attribute string typ; attribute real cena;
};
interface PC: Produkt (Extent PCety)
attribute integer szybkość; attribute ir.teger ram; attribute integer hd; attribute string cć;
interface Laptop: Produkt (extent Laptopy)
attribute integer szybkość; attribute integer ram; attribute integer hd; attribute real ekran;
interface Drukarka: Produkt (extent Drukarki)
attribute boolean kolor; attribute string typDrukarki;
RYSUNEK 8.2
Schemat bazy Produkt w języku ODL
interface Klasa (extent Klasy key nazwa)
attribute string nazwa; attribute string kraj; attribute integer iiczbaDział; attribute integer średnica; attribute integer wyporność;
relationship Set<Okręt> okręty inverse Okręt:: klasaDla;
interface Okręt
(extent Okręty key nazwa)
attribute nazwa; attribute integer wodowanie; relationship Klasa klasaDla inverse Klasa:: okręty;
relationship Set<Wynik> wBitwie
inverse Wynik:: tenOkręt;
interface Bitwa
(extent Bitwy key nazwa)
attribute nazwa; attribute Datę dataBitwy; relationship Set<Wynik>rezultat
inverse Wynik:: taBitwa;
interface Wynik
(extent Wyniki)
attribute enuir. Stat {ok, zatopiony, uszkodzony) status;
relationship Okręt tenOkręt inverse Okręt:: wBitwie;
relationship Battle taBitwa inverse Bitwa:: rezultat;
RYSUNEK 8.3
Baza danych okrętów wojennych w języku ODL