29
ODMG

ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Embed Size (px)

Citation preview

Page 1: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

ODMG

Page 2: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

L’ODMG

L’Object Data Management Groupè un consorzio di produttori di ODBMS che ha proposto uno standard per:

• il modello a oggetti• il linguaggio di definizione dei dati (ODL)• il linguaggio di interrogazione (OQL)• i binding ai linguaggi di programmazione

orientati a oggetti

Page 3: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: elementi base e costruttori

Gli elementi base del modello sono:• oggetti• letterali

I costruttori sono:• struct (tupla)• costruttori di collezioni: set<t>, bag<t> (multi

insieme), list<t>, array<t>

Page 4: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: letterali

un letterale ha un valore ma non ha un identificatore

può avere una struttura semplice o complessa

Page 5: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: letterali

Un valore letterale può essere:• atomico (long,short,unsigned long, unsigned

short,float,double,boolean,char, string,enum)• strutturato possono essere predefiniti (es:

Date) o definiti dall’utente mediante il costruttore struct

• di tipo collezione di oggetti o di valori

Page 6: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: oggetti

un oggetto ha un identificatore (Object_ID) e può avere un nome

un oggetto può essere persistente o transitorio

un oggetto può essere atomico o di tipo collezione

Page 7: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: oggetti

• oggetto atomico è ogni oggetto definito dall’utente che non sia di tipo collezione

• oggetto collezione

Page 8: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: oggetti atomici

Un oggetto atomico:è specificato mediante il costrutto classpuò avere:

• proprietà (attributi e associazioni)

• operazioni

Page 9: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: oggetti atomici

La specifica di un attributo è preceduta dalla parola attribute.

Il valore di un attributo può essere:

• un letterale (semplice o complesso)

• l’Object_ID di un altro oggetto

• il risultato di un’operazione

Page 10: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: oggetti atomici

• la specifica di un’associazione è preceduta dalla parola relationship.

• vengono rappresentate solo associazioni binarie

• per ogni relationship è definita l’inversa (preceduta dalla parola inverse)

Page 11: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: oggetti atomici

La specifica di un oggetto atomico può contenere segnature di operazioni.

Una segnatura specifica:• il nome dell’operazione (unico all’interno dell’oggetto)• i tipi degli argomenti

ed eventualmente:• il tipo del risultato• nomi di eccezioni

Page 12: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: specifica di tipi

Due costrutti per la specifica di tipi:

• class (specifica dello stato e del comportamento di un tipo di oggetto)

• Interface (specifica del comportamento di un tipo di oggetto)

e, corrispondentemente, due tipi di relazioni di ereditarietà.

Page 13: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: specifica di tipi

Il costrutto class specifica

• stato • comportamento

di un tipo di oggetto. Una class è istanziabile: è possibile creare

(mediante il costrutto extent nella specifica di una class) un oggetto di tipo set<t> (detto estensione della class) dove t è il tipo atomico specificato nella class.

Page 14: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: specifica di tipi

Il costrutto interface specifica solo il comportamento di un tipo di oggetto.

Le proprietà (attributi e associazioni) di una interface non possono essere ereditate.

Una interface non è istanziabile

Page 15: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: ereditarietà

Le interface vengono usate per specificare operazioni che possono essere ereditate da altre interface o class (ereditarietà di comportamento, rappresentata mediante “:”).

Le class vengono usate per specificare proprietà e operazioni che possono essere ereditate da altre class (ereditarietà extends, rappresentata mediante la parola extends).

Se a è l’estensione di una class A e b è l’estensione di una class B e A extends B allora a è un sottoinsieme di b.

Una class può ereditare da una sola class, mentre può ereditare da molte interface (ereditarietà multipla).

Page 16: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il modello ODMG: interface predefinite

• Object ereditata da tutti gli oggetti (copy,delete,same_as)

• Collection ereditata da tutti gli oggetti di tipo collezione(cardinality,is_empty,insert_element, remove_element,contains_element,create_iterator)

• Set, Bag, List, Array• Iterator

(reset,next_position,get_element)

• ObjectFactory(new)

Page 17: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il linguaggio ODL

Il linguaggio ODL consente di specificare i costrutti del modello ODMG indipendentemente dal linguaggio di programmazione.

Il binding di un linguaggio di programmazione (C++, Java, Smalltalk) specifica come mappare i costrutti del modello ODMG in quelli del linguaggio.

Page 18: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il linguaggio OQL

E’ il linguaggio di interrogazione per il modello ODMG. Ha una sintassi simile a quello di SQL:

select …

from …

where …

Page 19: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il linguaggio OQL

In ogni interrogazione è necessario un punto di ingresso alla base di dati, cioè un oggetto persistente avente un nome (tipicamente un’estensione, cioè una collezione di oggetti).

Se il punto di ingresso è un’estensione occorre usare una variabile iteratore. Il risultato è di tipo bag o di tipo set se presente la clausola distinct.

Page 20: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il linguaggio OQL

select r.numero_r

from r in reparti

where r.nome_r = ‘giocattoli’

punto di ingresso: reparti

variabile iteratore: r

tipo risultato: bag<string>

Page 21: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il linguaggio OQL

Ogni oggetto avente un nome è un’interrogazione il cui risultato è un riferimento all’oggetto.

reparti

reparto_gioc

Page 22: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il linguaggio OQL

Per specificare il cammino da un punto di ingresso ai suoi attributi o ad oggetti ad esso correlati (mediante associazioni) si può usare una path expression.

• reparto_gioc.sedi(tipo risultato: set<string>)

• reparto_gioc.ha_imp(tipo risultato: set<Impiegato>)

Una path expression può iniziare sia con il nome di un oggetto persistente sia con una variabile iteratore

Page 23: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il linguaggio OQL

reparto_gioc.ha_imp.nome

NO

tipo risultato ambiguo: set<string> o bag<string>?

Page 24: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il linguaggio OQL

select i.nomefrom i in

reparto_gioc.ha_imptipo risultato: bag<string>

select distinct i.nomefrom i in

reparto_gioc.ha_imptipo risultato: set<string>

Page 25: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

Il linguaggio OQLinterrogazioni con risultato complesso

select struct (direttore: r.dir_rep.direttore.nome,impiegati: (select struct

(nome: i.nomeetà: i.età)from i in

r.ha_imp) from r in reparti

Page 26: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

class impiegato{ extent impiegati key cof_fis }{ attribute string nome; attribute string cod_fis; attribute date data_nasc; attribute enum genere(M,F) sesso; attribute short età; relationship reparto lavora_in inverse reparto::ha_imp; void riassegna_imp(in string nuovo_nome_r); raises(nome_r_non_valido)}

Page 27: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

class reparto{ extent reparti key nome_r,numero_r }{ attribute string nome_r; attribute string numero_r; attribute struct direz(impiegato direttore, date data_iniz) dir_rep; attribute set<string> sedi; attribute struct prog(string nome_p, time ore_settim) prog; relationship set<impiegato> ha_imp inverse impiegato::lavora_in; void cambio_dir(in string nuovo_nome_dir; in date data_iniz);}

Page 28: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

interface OggettoGeometrico{ attribute enum forma(rettangolo,triangolo,cerchio); attribute struct punto(short x, short y) punto_riferim: float perimetro; float area; void ruota(in float angolo);}

class cerchio: OggettoGeometrico{ extent cerchi}{attribute struct punto(short x, short y) punto_riferim:attribute short raggio;}

Page 29: ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio

class impiegato extends persona{ extent impiegati}{ attribute short età; relationship reparto lavora_in inverse reparto::ha_imp; void riassegna_imp(in string nuovo_nome_r); raises(nome_r_non_valido)}

class persona{ extent persone key cof_fis }{ attribute string nome; attribute string cod_fis; attribute date data_nasc; attribute enum genere(M,F) sesso; }