Standards et langages des bases de données à objets

Institut Supérieur d'Informatique
1/38
100%
Rendu du PDF...
Page 1 sur 38Lecteur de document UniversityLib

Standards et langages des bases de données à objets

Institut Supérieur d'Informatique · Object Databases and ODMG Standards · course

Voir tous les documents en bases de données

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