OBJECT ORIENTED DATABASE introduzione
OGGETTO Ha due componenti: stato: valore di alcune variabili (variabili di istanza) comportamento: insieme delle operazioni mediante le quali è possibile operare sull’oggetto
ODBMS vs OOPL oggetti persistenti continuano ad esistere (su memoria di massa) anche dopo la terminazione del programma che li ha creati e possono essere condivisi da più programmi non completo incapsulamento degli oggetti le variabili di istanza sono visibili per consentire interrogazioni estemporanee
ODBMS vs DBMS RELAZIONALI Corrispondenza 1:1 tra oggetti reali e oggetti memorizzati: ad ogni oggetto è assegnato dal sistema un OID (object identifier) immutabile non riutilizzabile non visibile all’utente utilizzato dal sistema per creare e gestire associazioni tra oggetti
ODBMS vs DBMS RELAZIONALI Un oggetto può avere una struttura di complessità arbitraria
STATO DI UN OGGETTO Lo stato (valore) di un oggetto complesso è costruito a partire da altri oggetti/valori mediante costruttori di tipo (che possono essere annidati in modo arbitrario): CostruttoreStato dell’oggetto atomico un valore nel dominio base supportato dal sistema (intero, reale, ecc.) tupla (coppie: attributo:oid) insieme {i 1,…,i n } multi insieme {i 1,…,i n }, ma ci possono essere ripetizioni lista (i 1,…,i n ), c’è un ordinamento array (i 1,…,i n ), ma c’è un limite al numero di elementi
COMPORTAMENTO DI UN OGGETTO Il comportamento di un oggetto è definito dall’insieme di operazioni (creazione,distruzione,modifica,ricerca e altro) che possono essere applicate all’oggetto. Un’operazione è costituita da: segnatura (o interfaccia) nome e argomenti, visibile all’utente metodo implementazione, non visibile all’utente
Vantaggi derivanti dall’incapsulamento Possibilità di modificare sia la struttura interna di un oggetto sia l’implementazione della sue operazioni senza dover modificare i programmi che invocano tali operazioni (indipendenza dei dati e delle operazioni)
SPECIFICA DELLA PERSISTENZA Ci sono due meccanismi per rendere persistente un ogetto: denominazione attribuire un nome unico persistente raggiungibilità rendere l’oggetto raggiungibile da oggetti persistenti
TIPO DI UN OGGETTO E’ definito da: struttura (mediante costruttori di tipo si definisce l’insieme degli stati ammissibili per un oggetto) operazioni (mediante la segnatura) E’ identificato da un nome
ESTENSIONI La dichiarazione di una relazione in un DBMS relazionale definisce sia un tipo (schema della relazione) che un contenitore (l’istanza della relazione) di oggetti (tuple) di quel tipo. In un OODBMS occorre dichiarare esplicitamente un oggetto (estensione) il cui tipo è una collezione di oggetti dello stesso tipo.
GERARCHIE DI TIPI Un tipo può essere definito come sottotipo di un altro tipo (supertipo). Il sottotipo eredita struttura e operazioni del supertipo. Inoltre può avere ulteriori variabili di istanza e operazioni.
POLIMORFISMO Un’ operazione può avere diverse implementazioni per diversi sottotipi di uno stesso tipo. La scelta dell’implementazione può essere fatta: a tempo di compilazione (binding statico) a tempo di esecuzione (binding dinamico)