Institut Sup rieur dInformatique - Universit Tunis El Manar
Module 4 : Standards
et langages des bases
de donn es objets
(Section 1)
Riadh ZAAFRANI
Novembre 2020
1 re ann e MP2L
1
1
2
Plan
Pr ambule
Le mod le objet de l'ODMG
Objets et litt raux
Interfaces du mod le objet de l'ODMG
Interfaces, classes et h ritage
Le langage de d finition d'objets ODL
Le langage de requ te objet: OQL
2
1
Pr ambule
tr s
Il est
important de disposer d'un
standard pour un syst me de base de
donn es particulier, parce qu'il assure la
portabilit des applications.
On d finit g n ralement
la portabilit
un
comme
d'ex cuter
programme donn sur diff rents syst mes en
n'apportant que des modifications mineures
au programme lui-m me.
possibilit
la
3
3
4
Pr ambule
Dans le domaine des bases de donn es objet, la
portabilit permet un programme crit pour
acc der un package SGBDO d'acc der un autre
package SGBDO, pourvu que le standard soit
appliqu scrupuleusement.
Il s'agit d'une caract ristique importante aux yeux
des utilisateurs, qui h sitent g n ralement
investir dans une nouvelle technologie si
les
un
diff rents
standard commun.
fournisseurs n'adh rent pas
4
2
Pr ambule
L'adh sion des standards pr sente un autre
avantage: elle contribue l'interop rabilit ,
qui d signe la capacit d'une application
acc der plusieurs syst mes distincts.
Pour les bases de donn es, cela signifie que
la m me application peut acc der des
donn es stock es dans un package SGBDO
et aux donn es stock es dans un autre type
de package.
5
Pr ambule
Un troisi me avantage des standards
est qu'ils permettent aux clients de
produits
des
comparer
facilement, en
commerciaux plus
du
quelles
d terminant
standard sont prises en charge par
chaque produit.
parties
6
5
6
3
Pr ambule
Comme nous le savons, l'une des raisons du
succ s des SGBD relationnels du commerce
est le standard SQL.
L'absence de standard pour
les SGBDO
pendant plusieurs ann es peut expliquer que
certains utilisateurs potentiels aient h sit
se convertir cette nouvelle technologie.
7
8
Pr ambule
SGBDO,
C'est pourquoi un consortium de fournisseurs
l'ODMG (Object Data
de
Management Group), a propos un standard
le nom de ODMG-93 ou
connu sous
ODMG 1.0.
Apr s r vision, il est devenu ODMG 2.0,
que nous allons d crire, dans ce cours.
7
8
4
Pr ambule
Il est constitu de plusieurs parties: le mod le objet, le
langage de d finition objet (ODL ou Object Definition
Language),
(OQL ou
le langage de requ te objet
Object Query Language) et les liaisons (bindings) avec
les langages de programmation orient s objet.
Ces derni res ont t sp cifi es pour plusieurs langages,
notamment C++, Smalltalk et Java.
Certains fournisseurs ne proposent que des liaisons de
toutes les capacit s
langages sp cifiques sans offrir
d'ODL et d'OQL.
9
9
10
Plan
Pr ambule
Le mod le objet de l'ODMG
Objets et litt raux
Interfaces du mod le objet de l'ODMG
Interfaces, classes et h ritage
Le langage de d finition d'objets ODL
Le langage de requ te objet: OQL
10
5
Vue d'ensemble du mod le objet de l'ODMG
Le mod le objet de l'ODMG est
le mod le de
donn es sur lequel s'appuie le langage de d finition
(ODL) et le langage de requ te (OQL).
En r alit , ce mod le objet fournit
les types de
donn es,
les constructeurs de types et d'autres
concepts qui servent en ODL sp cifier des sch mas
des bases de donn es objet.
C'est donc un mod le de donn es standard pour les
bases de donn es orient es objet, tout comme SQL
d crit un mod le de donn es standard pour les bases
de donn es relationnelles.
11
11
12
Plan
Pr ambule
Le mod le objet de l'ODMG
Objets et litt raux
Interfaces du mod le objet de l'ODMG
Interfaces, classes et h ritage
Le langage de d finition d'objets ODL
Le langage de requ te objet: OQL
12
6
Objets et litt raux
Les objets et les litt raux sont les blocs de base
du mod le objet. La principale diff rence entre les
deux est qu'un objet poss de un identifiant
tandis
d'objet et un tat (sa valeur courante),
qu'un litt ral n'a qu'une valeur.
Dans les deux cas,
la valeur peut avoir une
structure complexe. L' tat de l'objet peut changer
dans le temps si on modifie sa valeur. Un litt ral
est en substance une valeur constante, peut avoir
une structure complexe mais immuable.
13
13
Objets et litt raux
Un objet est d crit par quatre caract ristiques:
un identifiant;
un nom;
une dur e de vie;
une structure.
L'identifiant d'objet (ou OBJECT_ID) est un identifiant
unique l' chelle du syst me. Tout objet doit avoir un
identifiant.
En outre, les objets peuvent recevoir facultativement un
nom unique dans une base de donn es particuli re. Ce
dernier sert r f rencer un objet dans un programme.
14
14
7
Objets et litt raux
De toute vidence, il est impossible d'attribuer
tous les objets un nom unique. En g n ral, seuls
quelques objets sont nomm s, principalement ceux
d'objets
qui
particuliers, tels que les extensions.
contiennent
collections
des
Ces noms sont utilis s comme points d'entr e
dans la base de donn es : en localisant ces objets
l'aide de leur nom unique, l'utilisateur peut acc der
aux autres objets qu'ils r f rencent.
15
15
Objets et litt raux
La dur e de vie sp cifie s'il s'agit d'un objet
persistant (autrement dit un objet de la base) ou
d'un objet temporaire (un objet appartenant un
programme en cours d'ex cution et qui dispara t
lorsque ce programme s'ach ve).
Enfin, la structure d'un objet d finit la fa on
de
construit
dont
constructeurs de types. Elle sp cifie s'il s'agit d'un
objet atomique ou d'un objet collection.
au moyen
l'objet
est
16
16
8
Objets et litt raux
Dans le mod le objet, un litt ral est une valeur qui
n'a pas d'identifiant d'objet. Toutefois, cette valeur
peut avoir une structure simple ou complexe. Il
existe trois types de litt raux:
atomiques,
collections,
structur s.
Les
litt raux atomiques
aux
valeurs d'un type de donn es de base et sont
pr d finis.
correspondent
17
17
Objets et litt raux
Les types de donn es de base du mod le objet sont :
les entiers longs, courts et non sign s (sp cifi s en
ODL par les mots cl s Long, Short, Unsigned Long et
Unsigned Short),
les d cimaux ordinaires et en double pr cision (Float,
Publicité
Double),
les bool ens (Boolean),
les caract res uniques (Char),
les cha nes de caract res (String)
les num rations (Enum).
18
18
9
Objets et litt raux
Time,
- Date,
Les litt raux structur s sont les structures
int gr es
Interval,
Timestamp - et toutes les structures de types
suppl mentaires d finies par l'utilisateur en
fonction des besoins de chaque application.
On cr e une structure d finie par l'utilisateur
l'aide du mot cl ODL Struct, comme en C
et en C++.
19
19
Objets et litt raux
Les litt raux collections sp cifient une valeur qui est
la
une collection d'objets ou de valeurs, mais
collection elle-m me n'a pas d'identifiant d'objet.
Les collections du mod le objet sont SET<T>,
BAG<T>, LIST<T> et ARRAY<T>, o T est le
type d'objets ou de valeurs de la collection.
Un autre type de collection est DICTIONARY<K,
V>, une collection d'associations <K, V>, o chaque
K est une cl (une valeur de recherche unique)
associ e une valeur v. Ce m canisme peut servir
cr er un index sur une collection de valeurs.
20
20
10
Plan
Pr ambule
Le mod le objet de l'ODMG
Objets et litt raux
Interfaces du mod le objet de l'ODMG
Interfaces, classes et h ritage
Le langage de d finition d'objets ODL
Le langage de requ te objet: OQL
21
21
Vue d'ensemble des d finitions d'interfaces
d'une partie du mod le objet de l'ODMG.
Les listings suivants sont une version simplifi e du
mod le objet et proposent une vue simplifi e des
composants de base du mod le objet de l'ODMG.
La notation ODMG emploie le mot cl interface. Il
est plus appropri , puisqu'il d signe l'interface des
types d'objets - nomm ment leurs op rations, leurs
relations et leurs attributs visibles.
Ces interfaces ne sont g n ralement pas instanciables,
mais servent d finir des op rations qui peuvent tre
h rit es par les objets d finis par l'utilisateur pour une
application particuli re.
22
22
11
Listing A. linterface de base Object, dont tous les autres
objets h ritent.
interface Object {
&
boolean
Object
void
same_as (in Object other_object);
copy();
delete();
Dans le mod le objet, tous les objets h ritent de l'interface de
base Object. En cons quence, les op rations dont h ritent
tous les objets sont copy (qui cr e une nouvelle copie de
l'objet), delete (qui supprime l'objet) et same_as (qui
compare l'identit de l'objet celle d'un autre objet)
D'autres op rations, non repr sent es dans ce listing, sont
d finies pour des besoins de verrouillage.
23
23
Listing A. L'interface de base Object, dont tous les autres
objets h ritent.
En g n ral, on applique les op rations aux objets en
utilisant la notation point e.
Pour comparer par exemple un objet o un autre objet
p, on crira : o.same_as(p). Le r sultat retourn par
cette expression est bool en, et vrai si l'identit de p
est la m me que celle de o, faux sinon.
De m me, pour cr er une copie p d'un objet o, on
crira: p = o.copy()
Une solution de rechange la notation point e est la
notation fl ch e: o->same_as(p).
24
24
12
Listing B. Interfaces standard des litt raux
structur s.
L'h ritage de type, qui sert d finir des
relations type/sous-type, est sp cifi dans le
mod le ODMG au moyen de la notation :
(deux points), comme en C++.
Nous constatons ainsi dans
listings
suivants que toutes les interfaces, notamment
Collection, Date et Time, h ritent de
l'interface de base d'Object.
les
25
Listing B. Interfaces standard des litt raux
structur s.
interface Date : Object {
enum
Weekday {Sunday, Monday, Tuesday,
Wednesday, Thursday, Friday, Saturday};
enum
Month{January, February, March, April,
year();
May, June, July, August, September, October, November,
December};
unsigned short
unsigned short month();
unsigned short
&
boolean
boolean
&
};
is_equal(in Date other_Date);
is_greater(in Date other_Date);
day();
25
26
26
13
Listing B. Interfaces standard des litt raux
structur s.
interface Time : Object {
hour();
&
unsigned short
unsigned short minute();
unsigned short
second();
unsigned short millisecond();
&
boolean
boolean
&
Time
Time
Interval
&
};
is_equal(in Time other_Time);
is_greater(in Time other_Time);
add_interval(in Interval some_Interval);
subtract_interval(in Interval some_Interval);
subtract_time(in Time other_Time);
27
27
Listing B. Interfaces standard des litt raux
structur s.
interface Timestamp : Object {
year() ;
day() ;
hour();
unsigned short
unsigned short month();
unsigned short
unsigned short
unsigned short minute();
second();
unsigned short
unsigned short millisecond();
&
Timestamp
Timestamp
boolean
boolean
&
}
28
plus(in Interval some_Interval);
minus(in Interval some_Interval);
is_equal(in Timestamp other_Timestamp);
is_greater(in Timestamp other_Timestamp);
28
14
Listing B. Interfaces standard des litt raux
structur s.
interface Interval : Object {
unsigned short
unsigned short
unsigned short
unsigned short
unsigned short
&
Interval
Interval
Interval
Interval
boolean
boolean
&
} ;
29
day() ;
hour();
minute();
second();
millisecond();
plus(in Interval some_Interval);
minus(in Interval some_Interval);
product(in long some_value);
quotient(in long some_value);
is_equal(in Interval other_Interval);
is_greater(in Interval other_Interval);
29
Interfaces int gr es pour les objets collections
Le mod le objet reconna t deux grands types d'objets: les
objets collections et les objets atomiques.
Tout objet collection h rite de l'interface de base
Collection.
tant donn un objet, l'op ration o.cardinality() retourne
le nombre d' l ments de la collection.
L'Op ration o.is_empty() retourne vrai si la collection o
est vide, faux sinon.
Les
op rations
et
o.remove_element(e) ins rent ou suppriment un l ment
de la collection o.
o.insert_element(e)
30
30
15
Interfaces int gr es pour les objets collections
L'op ration o.contains_element(e) retourne vrai si
collection o contient l' l ment e, faux sinon.
L'op ration i = o.create_iterator cr e un objet
it rateur i pour l'objet collection o, qui op re une
it ration sur chaque l ment de la collection.
Le mod le objet ODMG utilise des exceptions pour
signaler les erreurs ou les conditions particuli res.
l'interface
L'exception
l'op ration
lev e
Collection
Publicité
o.remove_element(e) si e n'est pas un l ment de la
collection o.
ElementNotFound
sera
par
de
31
31
Interface Collection
interface Collection : Object {
&
exception
unsigned long
Boolean
&
boolean
void
void
Iterator
} ;
32
ElementNotFound{any element; };
cardinality() ;
is_empty() ;
contains_element(in any element);
insert_element(in any element);
remove_element(in any element)
raises(ElementNotFound);
create_iterator(in boolean stable);
32
16
Interface des objets it rateurs
Dans l'interface des objets it rateurs, l'op ration i.reset()
le premier l ment de la
positionne l'it rateur
collection (pour une collection non ordonn e, ce serait un
l ment arbitraire), et i.next_position() le positionne sur
l' l ment suivant.
sur
i.get_element() extrait l' l ment courant, celui sur lequel
l'it rateur est actuellement positionn .
L'exception NoMoreElements de l'interface Iterator sera
lev e par l'op ration i.next_position() si
l'it rateur est
positionn sur le dernier l ment de collection, et qu'il ne
reste plus d' l ment sur lequel pointer.
33
33
Interface Iterator
interface Iterator {
exception
&
boolean
void
any
NoMoreElements();
at_end() ;
reset() ;
get_element()
raises(NoMoreElements);
void
next_position()
raises(NoMoreElements);
&
} ;
34
34
17
Interface SET
Les objets collections sont ensuite sp cialis s en
Set, List, Bag, Array et Dictionary qui h ritent
des op rations de l'interface Collection.
Un type d'objet Set<t> peut servir cr er des
objets tels que la valeur de l'objet o soit un
ensemble d' l ments de type t.
L'interface Set
l'op ration p =
comprend
o.create_union(s), qui retourne un nouvel objet p
de type Set<t> qui est l'union de deux ensembles o
et s.
35
35
Interface SET
D'autres op rations apparent es create_union
et
create_intersection(s)
sont
create_difference(s).
Les op rations de comparaison des ensembles
comprennent
si
l'objet o est un sous-ensemble d'un autre objet s,
faux sinon.
o.is_subset_of(s),
l'op ration
Une op ration apparent e is_subset_of est
is_superset_of(s).
36
36
18
Interface SET
interface Set : Collection {
Set
Set
Set
create_union(in Set other_set);
create_intersection(in Set other_set);
create_difference(in Set other_set);
&
&
} ;
37
boolean
boolean
is_subset_of(in Set other_set);
is_superset_of(in Set other_set);
37
Interface Bag
Le type d'objet Bag<t> autorise des l ments dupliqu s
la collection et h rite galement de l'interface
dans
Collection.
Elle
poss de
-
create_intersection(b),
retournent toutes trois un nouvel objet de type Bag<t>.
op rations
create_difference
create_union(b),
qui
trois
(b)
-
Par exemple, p = o.create_union(b) retourne un objet p de
les
l'union de o et b (en conservant
type Bag qui est
doublons).
L'op ration
nombre
d'occurrences dupliqu es de l' l ment e dans la collection o.
o.occurrences_of(e)
retourne
le
38
38
19
Interface Bag
interface Bag : Collection {
unsigned long occurrences_of(in any element);
Bag
Bag
Bag
} ;
create_union(in Bag other_bag);
create_intersection(in Bag other_bag);
create_difference (in Bag other_bag);
39
39
Interface List
Un type d'objet List<t> h rite des op rations de
l'interface Collection et sert cr er des collections
dans lesquelles l'ordre des l ments est important.
La valeur de chaque objet o est une liste ordonn e
dont les l ments sont de type t, ce qui permet de
r f rencer le premier, le dernier ou le ie l ment de
la liste.
Lorsqu'on ajoute un l ment la liste,
sp cifier la position laquelle il est ins r .
il faut
40
40
20
Interface List
Si o est un objet de type List<t>,
l'op ration
o.insert_element_first(e) ins re l' l ment e avant
le premier l ment de la liste o, de sorte que e
devient le premier l ment. L'op ration inverse est
o.insert_element_last(e).
L'op ration
o.insert_element_after(e,i)
ins re
l' l ment e apr s le ie l ment de la liste o et l ve
l'exception Invalidlndex si aucun ie l ment
est
n'existe
o.insert_element_before(e,i).
L'op ration
inverse
dans
o.
41
41
Interface List
Pour supprimer des l ments de la liste, les op rations
sont e = o.remove_first_element(),
e = o.remove_last_element (),
et e = o.remove_element_at(i).
Ces op rations suppriment l' l ment sp cifi de la
liste et retournent l' l ment r sultant.
D'autres op rations extraient un l ment sans le
supprimer de la liste. Ce sont :
e = o.retrieve_first_element(),
e = o.retrieve_last_element()
et e = o.retrieve_element_at(i).
42
42
21
Interface List
Enfin, deux op rations permettent de manipuler
des listes :
Il s'agit de p = o.concat(l), qui cr e une nouvelle
liste p issue de la concat nation des listes o et l
(les l ments de la liste o suivis de ceux de la liste
l),
et o.append(l), qui ajoute les l ments de la liste l
la fin de la liste o (sans cr er de nouvelle liste).
43
43
Interface List
interface List : Collection {
exception Invalid_Index{unsigned_long index; };
any
remove_element_at(in unsigned long position)
raises(InvalidIndex);
any
retrieve_element_at(in unsigned long position)
raises(InvalidIndex);
replace_element_at(in any element, in unsigned long
raises(InvalidIndex);
insert_element_after(in any element, in unsigned long
raises(InvalidIndex);
insert_element_first(in any element);
remove_first_element() raises(InvalidIndex);
retrieve_first_element() raises(Invalidlndex); &
concat(in List other_list);
append(in List other_list);
44
void
position)
void
position)
void
any
any
List
Void
};
44
Publicité
22
Interface Array
Le type Array<t> h rite galement des op rations de
Collection.
tableaux,
de
comparables des listes ayant un nombre fixe
d' l ments.
permet
cr er
des
Il
o.replace_element_at(i,e),
Les op rations sp cifiques d'un objet o de type Array
sont
remplace
l' l ment e,
l' l ment occupant
e=o.remove_element_at(i), qui extrait le ie l ment
et
et
e=o.retrieve_element_at(i), qui extrait simplement le
ie l ment du tableau.
la position i par
remplace
valeur
null,
par
qui
la
le
45
45
Interface Array
Toutes
ces
op rations
lancer
l'exception InvalidIndex si i est sup rieur
la taille du tableau.
peuvent
L'op ration o.resize(n) change le nombre
d' l ments du tableau en n.
46
46
23
Interface Array
interface Array : Collection {
Invalid_Index{unsigned_long index; };
remove_element_at(in unsigned long
raises(Invalidlndex);
retrieve_element_at(in unsigned long
raises(Invalidlndex);
replace_element_at(in unsigned long
exception
any
index)
any
index)
void
index, in any element) raises(Invalidlndex);
void
} ;
resize(in unsigned long new_size);
47
47
Interface Dictionary
Le dernier type d'objets collections est le
type Dictionary<k, v>.
Il permet de cr er des paires associatives
<k,v> o toutes les valeurs de k (la cl ) sont
uniques, et d'extraire une paire donn e en
donnant la valeur de sa cl (semblable un
index).
48
48
24
Interface Dictionary
Si o est un objet collection de type Dictionary<k, v>,
alors :
o.bind (k, v) lie la valeur v la cl k sous forme
d'association <k, v> dans la collection,
o.unbind(k) supprime de o l'association dont la cl est k,
et v = o.lookup(k) retourne la valeur v associ e la cl k.
Les deux derni res op rations peuvent lever l'exception
KeyNotFound.
Enfin, o.contains_key(k) retourne vrai si la cl k existe
dans o, faux sinon.
49
Interface Dictionary
struct Association {any key; any value; };
interface Dictionary : Collection {
exception KeyNotFound{any key; };
void
void
bind(in any key, in any value);
unbind(in any key)
raises(KeyNotFound);
any
lookup(in any key)
boolean
contains_key(in any key);
raises(KeyNotFound);
};
50
49
50
25
Hi rarchie d'h ritage pour les
interfaces int gr es du mod le objet
La figure suivante repr sente la hi rarchie d'h ritage des
constructions int gr es du mod le objet.
Object
Iterator
Collection
Date
Time
Interval
Set
List
Bag
Array
Dictionary
Timestamp
51
51
Hi rarchie d'h ritage pour les
interfaces int gr es du mod le objet
Les sous-types h ritent des op rations du supertype.
Les
sont pas
directement instanciables, ce qui signifie qu'elles ne
permettent pas de cr er directement des objets.
collections ne
interfaces
d'objets
En revanche, les interfaces peuvent servir d finir des
objets collections d finis par l'utilisateur - de type Set,
Bag, List, Array ou Dictionary - pour une application
particuli re.
Quand un utilisateur con oit le sch ma d'une base de
donn es, il d clare les classes et les interfaces d'objets
appropri es son application.
52
52
26
Hi rarchie d'h ritage pour les
interfaces int gr es du mod le objet
Si une interface ou une classe est
l'un des objets
collections, par exemple un Set, ce dernier h ritera des
op rations de l'interface Set.
Par exemple, dans une base de donn es destin e une
l'utilisateur peut, sp cifier une classe pour
les objets seront des ensembles
universit ,
Set<Etudiant>, dont
dobjets Etudiant.
Le programmeur peut alors utiliser les op rations de
Set<t> pour manipuler un objet de type Set<Etudiant>.
53
53
Hi rarchie d'h ritage pour les
interfaces int gr es du mod le objet
Tous les objets d'une collection doivent tre du
m me type.
En cons quence, m me si le mot cl any appara t
dans les sp cifications des interfaces collections,
cela ne signifie pas que des objets d'un type
quelconque peuvent tre m lang s dans une m me
collection, mais que tous les types sont ligibles
lorsqu'on sp cifie le type des l ments d'une
collection donn e.
54
54
27
Objets atomiques (d finis par l'utilisateur)
Nous allons maintenant tudier la fa on dont on
peut construire des types d'objets pour les objets
atomiques.
Ceux-ci sont sp cifi s l'aide du mot cl class en
ODL.
Dans le mod le objet,
tout objet d fini par
l'utilisateur qui n'est pas une collection est qualifi
d'objet atomique.
55
55
Objets atomiques (d finis par l'utilisateur)
Par
exemple, dans une
application UNIVERSITE,
l'utilisateur peut sp cifier un type d'objet (une classe) pour
les objets Etudiant.
La plupart de ces objets seront des objets structur s; un
objet Etudiant aura une structure complexe, avec de
nombreux attributs, relations et op rations, mais il est
toujours consid r comme atomique, parce qu'il ne s'agit
pas d'une collection.
Un tel type d'objet est d fini sous la forme dune classe en
sp cifiant ses propri t s et ses op rations. Les propri t s
d finissent l' tat de l'objet, et sont ensuite d compos es en
attributs et relations.
56
56
28
Objets atomiques (d finis par l'utilisateur)
Nous
trois
types
pr sentons
de
les
composants - attributs, relations et op rations
- qu'un type d'objet d fini par l'utilisateur
pour les objets atomiques (structur s) peut
poss der,
classes
les
EMPLOYE et SERVICE.
travers
deux
57
class Employe
class Employe
( extent
key
{
attribute
attribute
attribute
attribute
attribute
relationship
void
} ;
58
tous_employes
noss )
string
string
date
enum Genre(M,F)
short
Service
inverse
reaffecter_emp(in string nouveau_snom)
raises (snom_not_valid);
nom;
noss;
datenaissance;
Publicité
sexe;
age;
travaille_pour
Service::a_emps;
57
58
29
class Service
class Service
( extent
key
{
tous_services
snom, snumero )
attribute
attribute
attribute
attribute
attribute
relationship
snumero;
string snom;
short
struct Dir_SCE {Employe directeur, date datedebut} dir;
set<string>
struct Projs {string nomprojet, time heures_hebdo} projs;
sites;
Employe :: travaille_pour;
set<Employe> a_emps
inverse
ajouter_emp(in string nouveau_enom)
raises (enom_not_valid);
changer_dir(in string nouveau_nom_dir;
in date datedebut);
59
void
void
} ;
59
Objets atomiques (d finis par l'utilisateur)
Un attribut est une propri t qui d crit un
aspect d'un objet. Sa valeur, g n ralement
un litt ral dot d'une structure simple ou
complexe, est m moris e dans l'objet.
Mais la valeur d'un attribut peut galement
tre l'identifiant d'un autre objet.
On peut m me sp cifier la valeur d'un
attribut via des m thodes qui permettent de
la calculer.
60
60
30
Objets atomiques (d finis par l'utilisateur)
Les
attributs
noss,
datenaissance, sexe et age, et ceux de Service sont
snom, snumero, dir, sites et projs.
de Employe
nom,
sont
Les attributs dir et projs de Service ont une structure
complexe et sont d finis via le constructeur struct.
En cons quence, la valeur dir de chaque objet Service
aura deux composants: Directeur, dont la valeur est un
OBJECT_ID qui r f rence l'objet Employe qui dirige
le service et datedebut dont la valeur est une date.
L'attribut sites de Service est d fini via le constructeur
set, puisque chaque objet Service peut avoir un
ensemble de sites.
61
61
Objets atomiques (d finis par l'utilisateur)
Une relation est une propri t qui sp cifie que deux
objets de la base sont li s.
Dans le mod le objet de l'ODMG, seules les relations
binaires sont explicitement repr sent es par une paire
sp cifi es via le mot cl
de r f rences
relationship.
inverses
dans
lequel
Dans lexemple, une relation unit chaque Employe au
relation
il
Service
travaille_pour de Employe. Dans la direction oppos e,
chaque Service est li l'ensemble d'Employes qui
travaillent dans le Service par la relation a_emps de
Service.
travaille
-la
62
62
31
Objets atomiques (d finis par l'utilisateur)
Le mot cl inverse sp cifie que ces deux propri t s
d finissent une seule relation conceptuelle dans les deux
directions.
Gr ce la sp cification de relations inverses, le syst me de
l'int grit
base de donn es maintient automatiquement
r f rentielle de la relation. Autrement dit, si
la valeur
travaille_pour d'un Employe e pointe Sur Services, alors la
valeur de a_emps de Service doit inclure une r f rence
dans son ensemble de r f rences.
Si le concepteur de la base d sire repr senter une relation
unidirectionnelle, il doit la mod liser sous forme d'attribut
(ou d'op ration); exemple:
le composant Directeur de
l'attribut dir de Service.
63
63
Objets atomiques (d finis par l'utilisateur)
Outre les attributs et les relations, le concepteur peut faire figurer des
op rations dans les sp cifications de types d'objets (ou classes).
Chaque type d'objet peut avoir un certain nombre de signatures
d'op rations, qui sp cifient le nom de l'op ration, les types de ses
arguments et ventuellement sa valeur de retour.
Les noms d'op rations sont uniques pour chaque type d'objet, mais on
peut les surcharger en faisant appara tre le m me nom d'op ration pour
deux types d'objet distincts.
La signature peut galement sp cifier les noms des exceptions qui
peuvent se produire au moment de l'ex cution. L'impl mentation de
l'op ration contiendra le code destin lever ces exceptions.
Dans
lexemple,
seule op ration
(reaffecter_emp), et la classe Service en a deux (ajouter_emp et
changer_dir).
classe Employe
a une
la
64
64
32
Plan
Pr ambule
Le mod le objet de l'ODMG
Objets et litt raux
Interfaces du mod le objet de l'ODMG
Interfaces, classes et h ritage
Le langage de d finition d'objets ODL
Le langage de requ te objet: OQL
65
65
Interfaces, classes et h ritage
Le mod le objet de l'ODMG poss de deux
concepts pour sp cifier des types dobjets : les
interfaces et les classes. De plus, il existe deux
types de relations d'h ritage.
Nous tudierons dabord les diff rences et les
similitudes entre ces deux concepts. Pour suivre
la terminologie de l'ODMG, nous employons le
les
mot
les
op rations, et nous parlons d' tat pour
propri t s (attributs et relations).
comportement
d signer
pour
66
66
33
Interface
Une
interface
du
comportement abstrait d'un type d'objets, qui
d finit les signatures des op rations
sp cification
est
la
les
interface
Bien que
puissent
d' tat
(attributs et relations), celles-ci ne peuvent pas
tre h rit es.
sp cifications d'une
des
comprendre
propri t s
Une interface est galement non instanciable ;
autrement dit, il est impossible de cr er des objets
qui correspondent une d finition d'interface.
67
67
Classe
d'objet,
Une classe sp cifie la fois
le
comportement et l' tat abstraits d'un
est
type
instanciable, ce qui signifie que l'on
peut
instances d'objets
correspondant la d finition de la
classe.
cr er des
mais
elle
68
68
34
Interfaces, classes et h ritage
Comme les interfaces ne sont pas instanciables, on
les utilise principalement pour
sp cifier des
op rations abstraites qui peuvent tre h rit es par
des classes ou d'autres interfaces.
C'est ce qu'on appelle l'h ritage de comportement,
et il est sp cifi par le symbole : .
En cons quence, dans le mod le de l'ODMG,
l'h ritage de comportement n cessite que le super-
type soit une interface, tandis que le sous-type peut
tre soit une classe, soit une autre interface.
69
69
Interfaces, classes et h ritage
Une autre relation d'h ritage, nomm e EXTENDS et
sp cifi e par le mot cl extends, sert pour l'h ritage
d' tats et de comportements strictement entre classes.
Dans un h ritage EXTENDS, le supertype et le sous-type
peuvent tous deux tre des classes.
L'h ritage multiple via EXTENDS n'est pas permis.
Mais l'h ritage multiple est autoris pour l'h ritage de
comportement via : .
Une interface peut donc h riter des comportements de
plusieurs autres interfaces et h riter de l' tat et du
comportement d'au plus une autre classe via EXTENDS.
70
70
35
Extensions
Dans le mod le de l'ODMG, le concepteur d'une base
de donn es peut d clarer une extension pour tout type
d'objet d fini via une d claration de classe.
Dans notre exemple, les classes Employe et Service ont
respectivement
extensions
nomm es
des
tous_employes et tous_services.
Cela revient cr er deux obje...