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.

Slides:



Advertisements
Presentazioni simili
Calcolo Relazionale.
Advertisements

Costruttori e Distruttori
Recupero debito quarto anno Secondo incontro
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
4- Basi di dati Object Oriented
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Type Checking (1° parte)
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
Le gerarchie di tipi.
Query OQL e XQUERY a confronto
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Introduzione alla Object Oriented Programming, OOP E.Mumolo. DEEI
E.Mumolo. DEEI Introduzione alla programmazione ad oggetti in C++ Object Oriented Programming, OOP E.Mumolo. DEEI
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Overriding.
SQL: Lezione 7 Nataliya Rassadko
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Oggetti e dati primitivi
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
Lab. Calc. AA 2005/061 Classi. Lab. Calc. AA 2005/062 C e C++ Fino a questo punto abbiamo introdotto gli elementi base di qualsiasi linguaggio di programmazione,
Lab. Calc. 2005/06 Ereditarietà. Lab. Calc. 2005/06 Scopo di questa lezione: Imparare a creare nuove classi ereditando da classi già esistenti. Capire.
1 laboratorio di calcolo II AA 2003/04 quarta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Equivalenza di espressioni
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Java Collections.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Programmazione in Java (8)
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
Ereditarietà e Polimorfismo
Gerarchie Ricorsive Una gerarchia ricorsiva deriva dalla presenza di una ricorsione o ciclo (un anello nel caso più semplice) nello schema operazionale.
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Sintassi base e struttura di un programma
SQL.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
© M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti A.A Package.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 9 Tipi parametrici Collezioni generiche. Strutture matematiche parametriche.
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
OBJECT ORIENTED DATABASE introduzione. OGGETTO Ha due componenti:  stato: valore di alcune variabili (variabili di istanza)  comportamento: insieme.
Approfondimenti SQL.
28/12/2001package 1 Package Pacchetti e interfacce.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Introduzione. 2 Perché Java? Java è un linguaggio di programmazione nato per essere eseguito su macchine e sistemi operativi molto diversi fra loro. A.
1 Diagramma delle Classi. 2 Diagramma delle classi Grafico che fornisce una vista strutturale (statica) del sistema in termini di classi attributi operazioni.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Introduzione alle Classi e agli Oggetti in Java 1.
ODMG.
Transcript della presentazione:

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 di definizione dei dati (ODL) il linguaggio di interrogazione (OQL) i binding ai linguaggi di programmazione orientati a oggetti

Il modello ODMG: elementi base e costruttori Gli elementi base del modello sono: oggetti letterali I costruttori sono: struct (tupla) costruttori di collezioni: set, bag (multi insieme), list, array

Il modello ODMG: letterali un letterale ha un valore ma non ha un identificatore può avere una struttura semplice o complessa

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

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

Il modello ODMG: oggetti oggetto atomico è ogni oggetto definito dall’utente che non sia di tipo collezione oggetto collezione

Il modello ODMG: oggetti atomici Un oggetto atomico:  è specificato mediante il costrutto class  può avere: proprietà (attributi e associazioni) operazioni

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

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)

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

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à.

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 (detto estensione della class) dove t è il tipo atomico specificato nella class.

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

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).

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)

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.

Il linguaggio OQL E’ il linguaggio di interrogazione per il modello ODMG. Ha una sintassi simile a quello di SQL: select … from … where …

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.

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

Il linguaggio OQL Ogni oggetto avente un nome è un’interrogazione il cui risultato è un riferimento all’oggetto. reparti reparto_gioc

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 ) reparto_gioc.ha_imp (tipo risultato: set ) Una path expression può iniziare sia con il nome di un oggetto persistente sia con una variabile iteratore

Il linguaggio OQL reparto_gioc.ha_imp.nome NO tipo risultato ambiguo: set o bag ?

Il linguaggio OQL  select i.nome from i in reparto_gioc.ha_imp tipo risultato: bag  select distinct i.nome from i in reparto_gioc.ha_imp tipo risultato: set

Il linguaggio OQL interrogazioni con risultato complesso select struct (direttore: r.dir_rep.direttore.nome, impiegati: (select struct (nome: i.nome et à : i.et à ) from i in r.ha_imp) from r in reparti

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) }

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 sedi; attribute struct prog(string nome_p, time ore_settim) prog; relationship set ha_imp inverse impiegato::lavora_in; void cambio_dir(in string nuovo_nome_dir; in date data_iniz); }

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; }

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; }