You are on page 1of 85

BDA10.

1
BASES DE DONNEES
ORIENTEES OBJETS
BDA9.2
Trois chapitres
n Principes et modles
u2 approches :
l langage de programmation OO
=> nouveaux SGBD "purs orients-objets"
norme ODMG
l extension des bd relationnelles
=> relationnel-objet
SQL 3
uODMG, la partie modle de donnes
n Langage de manipulation de donnes d'ODMG :
OQL
n Relationnel-Objet : un exemple, Oracle
BDA10.3
Principes des
SGBD OO
Bases de donnes orientes objets
BDA9.4
Plan
n Evolution des applications et des SGBD
n Structure complexe
n Lien de composition
n Identit
n Hirarchie de gnralisation / spcialisation
n Population et persistance
n Mthodes et encapsulation
n Un exemple: FormaPerm en BD OO
n Conclusion
BDA9.5
Rappel : Fonctions des SGBD
n BD = ensemble de donnes permanentes, intgres,
partages, en accs simultan
n Intgrit de la base de donnes
n Scurit de la base de donnes
u protection contre les accs non autoriss
n Atomicit des transactions
n Fiabilit de la base de donnes
u protection conte les pannes
n Langages de requtes et de mises jour dclaratifs
n Performances
u techniques de stockage
u optimisation des requtes
BDA9.6
Nouvelles applications
uconception assiste par ordinateur
uproduction assiste par ordinateur
ugnie logiciel
usystmes d'informations gographiques
usystmes multi-mdia
urecherche et intgration de donnes de la toile
u
n Nouveaux besoins
uobjets structurs, volumineux
unouveaux types de donnes
utransactions longues
u
udveloppement des SI non satisfaisant
BDA9.7
Evolution des SGBD
n Applications plus complexes
n Cot du dveloppement des applications
=> en faire faire plus au SGBD
SGBD
BD
BD
SGBD
Application
Application
BDA9.8
Evolution des SGBD
1960
SGBD hirarchique (IMS)
SGBD rseau (CODASYL)
Jschma
langage navigationnel
1970
SGBD relationnel
Jstructure physique cache aux utilisateurs
Jmodle simple
Jformalisation => normalisation
Jlangages dclaratifs
BDA9.9
Evolution des SGBD (2)
1980
Modles smantiques (EA)
Jmeilleure reprsentation du rel
Loutils de conception uniquement
n 1986 : premiers SGBD OO
Jmeilleure reprsentation du rel au niveau logique
Jrutilisation
J1993 premire norme ODMG pour SGBD OO
( Object Database Management Group )
J1998 norme UML pour conception d'applications
OO
J1999 norme SQL3 pour SGBD relationnel-objet
BDA9.10
ODMG
n Groupe de normalisation des SGBD OO
n Norme finale publie en 2001
n A regroup de nombreux vendeurs de SGBO OO
uPoet
uArdent
uObjectivity
uVersant
uGemStone
u
et des constructeurs, des utilisateurs, des chercheurs

n www.odmg.org
BDA9.11
Le relationnel : avantages
n approche formellement dfinie (=> normalisation,
algbre)
n modle simple
n langage standard (SQL 2), dclaratif
n niveau logique (essentiellement)
n technologie la plus rpandue
n efficace pour les applications de gestion classique
BDA9.12
Le relationnel : faiblesses
n structure de donnes trop simple
u pas d'attribut complexe, ni multivalu
==> entits relles clates, jointures
u un seul type de lien (cl externe)
n pas de niveau conceptuel
n peu compatible avec les langages de programmation
u ensemble <--> lment
u dclaratif <--> impratif
u types de donnes
n donnes alphanumriques uniquement
u images, sons, vido, espace
n performances problmatiques en cas de jointures
n dveloppement et maintenance des SI insatisfaisant
n mcanisme de transactions inadapt aux nouvelles
applications
BDA9.13
Approche OO
n Ensemble de mthodologies et doutils pour
concevoir et raliser des logiciels structurs et
rutilisables, par composition dlments
indpendants. [Khoshafian + Boral]
n Objectif : productivit des programmeurs
uMoyen : rutilisation
n Concepts essentiels
uobjet encapsul
l interface visible : oprations (mthodes)
l implmentation cache : structure et code
uhritage
n Langages de programmation OO
uEiffel, Smalltalk, C++, Java
BDA9.14
Reprsentation du rel
Persistence
Gestion des disques
Partage des donnes
Fiabilit des donnes
Scurit
Langages de requtes
Indpendance logique / physique
Dveloppement
Structure complexe
Identit
Encapsulation
Classe = usine
Hritage
Redfinition
Bibliothques de classes
SGBD LP OO
SGBD OO
SGBD OO = LPOO + BD
BDA9.15
Intrt dun SGBD OO / LP OO
Cest un SGBD (mieux quun LP):
n persistence des donnes
n indpendance modles logique et physique
n LMD dclaratif
uoptimisation par le SGBD
n intgrit des donnes
n confidentialit, fiabilit, concurrence, gestion de
transactions,
BDA9.16
Intrt dun SGBD OO / SGBDR
Cest mieux quun SGBD relationnel :
n permet la manipulation dobjets structure
complexe
n interface compatible avec les LP-OO
n nouveaux types de donnes (image, son)
n versions, historiques, nouvelles transactions
n performances
BDA9.17
Diffrences entre SGBDO
n toutes les fonctions dun SGBD ?
n modles de donnes diffrents
n langage sous-jacent diffrent (C++, Smalltalk, Lisp
)
n interprt ou compil
n couplage fort ou faible avec le(s) langage de
programmation
n performances
n bibliothque de classes complte
n autres fonctions (versions, volution du schma,
temps, extensibilit )
BDA10.18
Modlisation
Bases de donnes orientes objets
BDA9.19
Diversit des modles
n Norme ODMG
mais de nombreux SGBDO ne la suivent pas.
n Ce cours dfinit :
ules principes communs aux SGBD OO
ules alternatives importantes
n Ce cours emploie une syntaxe tire de celle
d'ODMG
n Le relationnel-objet (SQL 3) sera prsent dans le
chapitre 3.
BDA9.20
Concepts principaux
Monde rel BD OO
objet objet, classe d'objets
proprit attribut
mthode
lien lien de composition
binaire
sans attribut
orient
reprsentation hirarchie de gnralisation/
multiple spcialisation, hritage
BDA9.21
OBJETS A STRUCTURE COMPLEXE
n Objectif : reprsentation directe des objets du monde rel
n Monde rel : Personne
nom
prnoms
adresse (rue, n, ville, codeNPA)
enfants (prnoms, sexe, dateNais)

n En relationnel : 4 relations, N tuples


Personne (n, nom, adresse_rue, adresse_n,
adresse_ville, adresse_codeNPA)
Personne_prnom (nP, nprnom, prnom)
Personne_enfant (nP, nenfant, sexe, dateNais)
Person_enfant_prnom (nP, nenfant, nprnom, prnom)
BDA9.22
Structure complexe
En OO : un seul objet
CLASS Personne
{ ATTRIBUTE nom : STRING ,
ATTRIBUTE prnoms : LIST STRING ,
ATTRIBUTE adresse : STRUCT adr
{ rue : STRING ,
n : STRING ,
ville : STRING ,
codeNPA : INT }
ATTRIBUTE enfants : LIST STRUCT enfant
{ prnoms : LIST STRING ,
sexe : ENUM {'M', 'F'} ,
date : DATE }
}
Personne
nom
prnoms
liste 1,n
enfants
prnoms sexe date
rue n ville NPA
adresse
liste 0,n
liste 1,n
BDA9.23
Structure complexe (suite)
n Constructeurs de structure complexe :
uattribut complexe : STRUCT
uattribut multivalu => constructeur de collection
l ensemble : SET
l liste : LIST
l multi-ensemble : BAG
l tableau une dimension : ARRAY
n Impact sur le SGBD :
uLMD : comment accder aux valeurs ?
l notation pointe
l variables sur les attributs multivalus
ustockage dobjets complexes, gros, de taille variable
BDA9.24
Types dfinis par l'application
n Les constructeurs de structure complexe servent :
udfinir des classes d'objets structure complexe
udfinir des types de donnes adapts l'application
l type T-Adresse
l types Point, Ligne, Polygone
l types Image, Son
n Comme les classes d'objets, les types de donnes
dfinis par l'application ont :
uune structure complexe
udes oprations (mthodes)
BDA9.25
Types de donnes - Exemple
TYPEDEF T-Adresse STRUCT
{ ATTRIBUTE rue : STRING ,
ATTRIBUTE n : STRING ,
ATTRIBUTE ville : STRING ,
ATTRIBUTE codeNPA : INT }
CLASS Personne
{ ATTRIBUTE nom : STRING ,
ATTRIBUTE prnom : LIST STRING ,
ATTRIBUTE adresse : T-Adresse ,
ATTRIBUTE enfants : LIST STRUCT enfant
{ prnoms : LIST STRING ,
sexe : ENUM {'M', 'F'} ,
date : DATE } }
BDA9.26
OBJET AVEC IDENTITE
n Objectif : Identifier les objets indpendamment de
leur valeur et de leur adresse (MC ou disque)
=>?? ? ? ? ? ? ? ? ? ? ? ? ? aux changements de
valeur
=> insensibilit aux dplacements internes
n Chaque objet possde une identit propre qui ne
peut tre change durant toute sa vie
n Lidentification des objets est gre par le systme
(allocation).
n Intrt de lidentit dobjet
uReprsentation directe du monde rel
uPermet de reprsenter des doubles
uMoyen efficace pour rfrencer un objet
BDA9.27
Identits , cls , noms
n SGBD relationnels :
cl = un ensemble minimum dattributs
uDanger lors des :
l mises jour de la cl
l changements d'attribut cl
uIdentit dpendante de la valeur
n Langages de programmation :
noms des variables
uAttention :
l pas de test didentit : X == Y ?
l temporaire
uIdentit dpendante des accs
BDA9.28
moyen
temps
identifiant
systme
nom de la
variable
valeur
transaction permanent
Smalltalk SGBD OO
LP
SGBD Rel
Approches de lidentit dobjet
BDA9.29
Identit en orient objet
n oid (object identifier) gr par le SGBD OO
uunique
upermanent
uimmuable
n objet : (oid, valeur)
n Trois test d'galit !
utest didentit ==
mme oid
utest dgalit en surface =
mme valeur
utest d'galit en profondeur = *
feuilles composantes de mme valeur
BDA9.30
Tests didentit / dgalit
n Qui possde le logement quil habite ?
n Paul et Pierre habitent-ils des logements
identiques ?
n Paul et Pierre habitent-ils le mme logement ?
type surface nbpices
Personne
AVS nom prnom
Logement
possde 0:N
habite 0:1
BDA9.31
Tests didentit / dgalit
identit : o1.B == o2.B o1 =/= o2
galit surface : o1 = o2 o1 ? o3
galit profonde : o1 =* o3
o21 = o22 o21 =/= o22
CLASSE 1
A B
CLASSE 2
C
Schma
A : 36 B : o21
A : 36 B : o21
A : 36 B : o22
C : 10
C : 10
o1
o2
o22 o3
o21
BD
BDA9.32
Identit : impact sur le SGBD
n Implmentation :
uadresse disque ou MC
uun numro logique
l Exemple : n de classe + n de squence
n LMD
udiffrents tests
uoprations ensemblistes selon :
l les valeurs ?
l les oids ?
BDA9.33
LIEN DE COMPOSITION
n Objectif : reprsenter les liens de composition qui
existent entre objets du monde rel
Classe compose
modle marque type moteur
Voiture
Classe composante
N puissance nbCyl
Moteur
moteur : attribut rfrence
de valeur = un oid d'un objet Moteur
lien de composition
de Voiture vers Moteur
BDA9.34
Lien de composition
CLASS Voiture
{ modle : STRING ,
marque : STRING ,
type : STRING ,
moteur : Moteur }
CLASS Moteur
{ N : STRING ,
puissance : FLOAT ,
nbCyl : INT }
n Attention : 2 types d'attributs :
uattribut valeur (domaine = STRING, INT ou complexe)
uattribut rfrence (domaine = une classe d'objets)
BDA9.35
Contraintes de composition
n objet composant : partag / non partag
n objet composant : dpendant / non dpendant
u destruction composite => destruction composant
n cardinalits :
u minimale, maximale
u inverses (=> partag / dpendant)
n lien inverse
modle . moteur
Voiture
N
Moteur
1,1 0,n
modlesV
BDA9.36
Liens inverses grs par le SGBD OO
n Certains SGBD OO grent les liens de composition inverses
u maj du lien inverse assure par le SGBD OO
n CLASS Voiture
{ modle : STRING ,
.. ,
moteur : Moteur INVERSE Moteur.modlesV }
CLASS Moteur
{ N : STRING ,
.. ,
modlesV: SET Voiture INVERSE Voiture.moteur }
modle . moteur
Voiture
N modlesV
Moteur
0,n 1,1
BDA9.37
Base d'objets : rseaux d'instances
Personne
parents enfants conjoint
0,2
0,n 0,1
Schma
Jean
Annie
Alice
Marc
Paul
enfants enfants
conjoint
conjoint
parents
parents
parents
parents
parents
BD
BDA9.38
Intgrit rfrentielle
n Les SGBD OO vrifient les affectations :
uattribut-rfrence = x
uUPDATE Voiture
WHERE modle = 'Golf GTI'
SET moteur = x
u=> x doit tre un (des) oid de la classe rfrence
n Suppression d'un objet composant
uLe SGBD OO devrait mettre NULL dans les attributs
rfrence des objets composites
uMAIS c'est rarement fait
uSELECT v.moteur.N
FROM v IN Voiture
WHERE modle = 'Golf GTI' peut planter !
BDA9.39
Impact sur le SGBD des liens de
composition :
n Assurer lintgrit rfrentielle
n Stockage des objets composants par rapport leur
objet compos
n Unit de verrouillage : objet compos / objet
composant
n Transactions embotes
BDA9.40
Lien de composition / association
BD OO Entit Association
n Smantique :
"composition" association gnrique
Voiture > Moteur Etudiant --inscription-- Cours
n orient non orient
accs facile objet compos > objet composant
accs difficile objet composant > objet compos
n binaire n-aire
n sans attribut avec attribut
n card. quelconques card. quelconques
BDA9.41
Lien de composition / association (2)
n En fait c'est un lien attribut classe d'objet
Lien inverse ?
n ODMG n'autorise les attributs rfrence qu'au premier
niveau
syntaxe :
RELATIONSHIP nom-att-ref : [SET | LIST] nom-classe
[ INVERSE nom-classe.nom-att-ref2 ]
N nom cours-obtenus
Etudiant
nom
Cours
0,n
anne note cours
n Certains SGBD OO permettent les attributs rfrence en
attributs composants
BDA9.42
Reprsentation des associations
n Associations binaires sans attribut
lien(s) de composition dans le sens des requtes
n Associations n-aire et/ou avec attributs
une classe d'objets avec un lien de composition par rle
(dans le sens des requtes)
n Exemple : inscription (avec date) d'un tudiant un cours
N nom inscriptions
Etudiant
nom inscrits
Cours
0,n 0,n
tudiant cours
Inscription
date
1,1 1,1
card. 1,1
BDA9.43
HIERARCHIE D'HERITAGE
n Objectif des LP OO : rutilisation (rduire le cot de
dveloppement)
==> Hritage des proprits
Redfinition des proprits pour les adapter
n Objectif des BD OO : reprsentions multiples du
mme objet
l Annie est :
Smembre du personnel de l'hpital
Smdecin
Schirurgien
Set en ce moment un patient
n "lien is-a" ou "lien de gnralisation / spcialisation"
ou "lien d'hritage"
BDA9.44
Exemple : le personnel d'un hpital
Attention : 2 types de flches : flches minces : composition
flches paisses : is-a
Personnel
AVS
nom
adresse
sal-mensuel
Infirmier
horaire
Mdecin
jours-garde
bip
Gnraliste Chirurgien
nb-oper
Rhumato
spcialits
0,n
0,n
bureau
Service
personnes nom
service
0,n
BDA9.45
Proprits des liens is-a
n Inclusion des populations
uTout objet d'une sous-classe est aussi objet de sa (ses)
sur-classe
uExemple : un objet de la classe Mdecin est aussi un
objet de la classe Personnel
n Hritage des proprits
uLa sous-classe hrite des :
l attributs valeur
l attributs rfrence
l et des mthodes
de sa (ses) sur-classe(s)
uExemple : Infirmier a pour attributs : AVS, nom, adresse,
sal-mensuel, service et horaire
BDA9.46
Proprits des liens is-a (suite)
n Substituabilit
uOn peut toujours employer un objet spcifique la place
dun objet gnrique
uExemple : ajouter au Service de ranimation un
infirmier, un mdecin
n Sous-typage
Une sous-classe peut avoir des :
uproprits supplmentaires
l Exemple : Infirmier a l'attribut horaire
udes proprits redfinies
l domaine d'un attribut hrit plus spcifique dans la
sous-classe
l code d'une mthode hrite adapt la sous-classe
BDA9.47
Redfinition des attributs
n Redfinition dun attribut dans une sous-classe
unouvelle dfinition pour lattribut
utype de lattribut redfini doit tre un sous-type
l domaine et/ou cardinalites restreints
l attribut complexe complt
unexiste pas dans tous les SGBD OO
n Exemple de domaine restreint :
Personne
Etudiant Enseignant
18 < age < 60 22 < age < 70
AVs
nom
age (0 < age < 120)
BDA9.48
Redfinition d'attribut
n Exemple d'attribut complexe complt
Personne
nom: STRING ,
adresse: STRUCT
{ rue: STRING ,
numro: STRING,
ville : STRING }
Employ : Personne
nom: STRING,
adresse: STRUCT
{ rue: STRING ,
numro: STRING ,
ville : STRING ,
NPA : INT }
En ODMG
: signifie is-a
n Il existe d'autres types de redfinition, plus souvent
employs pour les mthodes (voir Mthodes)
BDA9.49
Restrictions la hirarchie
n Dynamique ?
uUn objet peut-il changer de classe ?
l un infirmier devient mdecin
l on apprend le type d'un personnel: c'est un mdecin
uImplmentation plus complexe (instances de formats
diffrents)
=> Les SGBD OO offrent en gnral des hirarchies
statiques
n Instanciations multiples ?
uUn objet du monde rel peut-il tre dcrit par plusieurs
instances de classes diffrentes (non sur/sous-classes)
uExemple : Annie est Rhumatologue et Chirurgien
uImplmentation plus complexe
=> En gnral non : sous-classe commune obligatoire
BDA9.50
Hritage multiple
Personnel
AVS
nom
adresse
sal-mensuel
Infirmier
horaire
Mdecin
jours-garde
bip
Gnraliste Chirurgien
nb-oper spcialits
Rhumato
spcialits
0,n
0,n
bureau
0,n
Rhumato-Chirurgien
BDA9.51
Conflits dhritage multiple
n Quelles spcialits pour les Rhumato-Chirurgiens ?
n Solutions employes par les SGBD OO
uInterdiction
=> renommer lattribut / mthode qui pose problme
uprfixage automatique des noms des attributs ou
mthodes par le nom de la sur-classe
uchoix par le systme (toujours la premire sur-classe
dans la dclaration textuelle)
uchoix par l'utilisateur
l statique : la dfinition du schma
l dynamique : lors des accs
BDA9.52
Implmenter les hirarchies
n LMD :
uaccs la population propre / globale dune classe
l SELECT * FROM Personnel
Sles personnels qui ne sont ni infirmier ni mdecin
Stous les personnels
selon quel format :
wPersonnel
wou : Personnel, Mdecin, Chirugien
uchangement de classe
n Stockage dun objet :
uavec hritage effectu : 1 objet = 1 enregistrement (dans
la sous-classe la plus spcifique)
usans hritage : 1 objet = 1 enregistrement par classe (sa
classe et ses sur-classes)
BDA9.53
POPULATION ET PERSISTANCE
n Objectifs :
u BD : grer des ensembles dobjets permanents : populations
u LPOO : permettre aux utilisateurs de manipuler de la mme faon
des objets temporaires et des objets permanents
=> Persistance et classification peuvent tre indpendants
n SGBD classiques :
u Relation, record type, type dentit =
1) dfinition de la structure des occurrences potentielles
2) rcipient contenant toutes les occurrences existantes,
permanentes par dfinition
n LPOO :
u Classe = 1) usine pour fabriquer des objets de mme type
u Les objets sont temporaires
l dure de vie = celle de leur programme
(sauf s'ils sont stocks dans un fichier)
BDA9.54
Deux approches : BD , LP
n SGBD OO issu du monde BD
uclasse = 1) + 2)
uannie := Mdecin (AVS : 123456 , nom : 'Rochat' ,
adresse : , bip : 222 )
l Mdecin(...) : chaque classe a une mthode
(constructeur) du nom de la classe qui cre un objet
l cration d'un objet permanent stock dans la
population de la classe
l rend l'oid de l'objet cr
BDA9.55
SGBD OO issu du monde LP
n Objectif : disposer de manire souple de donnes
permanentes ou non
n classe = 1) uniquement
uannie := Mdecin (AVS : 123456 , nom : 'Rochat' ,
adresse : )
l cration d'un objet temporaire
l rend l'oid de l'objet cr
n Le SGBDO fournit des outils aux utilisateurs pour
grer eux-mmes
ules populations des classes
l (o mettre les objets pour les retrouver ?)
l une classe peut avoir 0, 1 ou plusieurs populations
ula persistance des objets
BDA9.56
Exemple de gestion de population
n Via les collections (SET, LIST ...)
n L'utilisateur cre une (ou des) collection et y insre
les objets
n Exemple : les mdecins de l'hpital
m : Mdecin ;
lesmdecins : SET Mdecin ; dclaration
...
m:= Mdecin( AVS:123456, nom: 'Rochat', ., bip : 222);
lesmdecins.insert_lment(m) ; insertion
...
SELECT x.nom FROM x IN lesmdecins
WHERE x.AVS=123456 utilisation
BDA9.57
Qualits de la persistance
n Orthogonale aux classes : pour la mme classe,
on peut avoir des objets permanents et d'autres
temporaires
n Orthogonale aux oprations : les mmes
oprations peuvent tre appliques des objets
permanents ou temporaires
n Cohrente : un objet permanent ne peut pas
rfrencer des objets temporaires
n Dynamique : le statut permanent / temporaire peut
tre chang nimporte quel moment
BDA9.58
Techniques de persistance
Diffrents modles de persistance :
n Statique
u systmatique : tout est permanent
u classe : persistance spcifie la dclaration de la classe
u instance: persistance spcifie lors de la cration de linstance
n Dynamique
u explicitement par une commande nimporte quel moment
lesmdecins.save()
upar accessibilit partir de racines de persistance
"Tout objet composant d'un objet permanent est permanent"
PersistList.insert_last_lment(lesmdecins)
BDA9.59
ODMG - persistance et population
n Approche type BD classique
uLes objets sont tous toujours permanents
uChaque classe a 1 (ou 0) population
uSi la population existe, les objets sont automatiquement
stocks dedans
n CLASS nom-classe
[ EXTENT nom-population ]
n En plus, l'utilisateur peut associer des noms
permanents certains objets
NAME directeur : Personnel
dclaration d'une variable permanente nomme
directeur := Personnel (AVS: 1111, nom: 'Muller')
cration de l'objet directeur
BDA9.60
METHODES ET ENCAPSULATION
n Objectif des mthodes : dcrire dans le SGBD :
u la structure des objets
u et les oprations (mthodes) usuelles sur les objets
u Mme chose pour les types de donnes dfinis par l'application
n Intrt : crire les oprations une fois pour toutes
n A chaque classe (et type de donnes) sont associes les
mthodes permettant de :
u accder
u mettre jour
u manipuler
les objets de la classe (ou les valeurs du type de donnes)
BDA9.61
Mthode
n Signature de la mthode
unom de la mthode
utype du rsultat (si existe)
uparamtres (si existent) : nom et type pour chacun
n Code de la mthode
uinstructions d'un LP OO
uinstructions du SGBD OO
l requtes
SELECT ... FROM WHERE
l mises jour d'objets
uappels de mthodes sur d'autres objets
BDA9.62
Personnel d'un hpital avec mthodes
Personnel
salaire()
newService(servoid)
afficher()
AVS
nom
adresse
sal-mensuel
Infirmier
horaire
Mdecin
jours-garde
bip
salaire()
Gnraliste Chirurgien
nb-oper salaire()
Rhumato
spcialits
0,n
0,n
Service
personnes nom
0,n
service
BDA9.63
Encapsulation
n Objectif : cacher l'implmentation des classes pour
ufaciliter la rutilisation des classes : il suffit d'en
connatre l'interface
upermettre l'volution de limplmentation des classes : si
elle change, lapplication doit seulement tre re-
compile
n Principe : depuis l'extrieur de l'objet seules les
signatures de ses mthodes sont visibles
n Implantation cache
ustructure des objets
ucode des mthodes
BDA9.64
Exemple d'encapsulation
CLASS Personnel
n Interface visible
INT salaire() signatures
VOID newService(servoid : Service) des
VOID afficher() mthodes
n Implmentation invisible
ATTRIBUTE AVS : STRING ; structure
ATTRIBUTE nom : STRING ; des
ATTRIBUTE adresse : STRING ; donnes
ATTRIBUTE sal_mensuel : INT ;
RELATIONSHIP service : Service
INVERSE Service.personnes
BDA9.65
Exemple d'encapsulation (2)
Implmentation invisible (suite) : code des mthodes
salaire ()
{ return sal_ mensuel }
newService (servoid: Service)
{ self.service := servoid }
afficher ()
{
PRINT('AVS:', self.AVS) ; PRINT('nom:', self.nom) ;
PRINT('adresse:', self.adresse) ;
PRINT('salaire mensuel:', self.sal_mensuel) ;
}
Encapsulation : seul l'objet lui-mme (c--d les
instructions de ses mthodes) peut accder ses
attributs
BDA9.66
Exemple d'encapsulation (3)
n Un objet de la classe Personnel
AVS : 123456
nom : 'Rochat'
adresse : 'Lausanne'
sal_mensuel : 6600
salaire()
afficher()
newService(servoid)
Encapsulation
respecte
seuls points
d'accs:
accs OK
accs INTERDIT
BDA9.67
Impact sur linterface utilisateur
n Interface procdurale :
LP + messages d'appel des mthodes
navigationnelle : en suivant les liens de
composition et en balayant les collections
n LMD dclaratif (exemple OQL) :
u Lencapsulation est contraire au principe sous-jacent
des BD classiques : accs libre de tous toutes les
donnes
u Si les requtes ne sont pas rutilises, l'encapsulation
est inutile
u=> encapsulation stricte, par exemple :
l depuis LP OO : encapsulation
l depuis requtes : pas d'encapsulation
BDA9.68
Redfinition des mthodes
n Objectif : adapter le code la sous-classe
n Signature inchange
n Exemple
uPersonnel salaire() = self.sal_mensuel
uMdecin salaire() = self.sal_mensuel +
(self.jours_garde * PrimeJG )
uChirurgien salaire() = self.sal_mensuel +
(self.jours_garde * PrimeJG ) +
(self.nb_oper * PrimeOp )
n Sans redfinition => mthodes de noms diffrents
uPersonnel salaire()
uMdecin medSalaire()
uChirurgien chirurSalaire()
BDA9.69
Salaire mensuel de tout le personnel
n Sans redfinition
SELECT p.salaire()
FROM p IN lespersonnes
WHERE NOT (p IN lesmdecins)
SELECT p.medSalaire()
FROM p IN lesmdecins
WHERE NOT (p IN leschirurgiens)
SELECT p.chirurSalaire()
FROM p IN leschirurgiens
n Avec redfinition : mme nom de mthode, codes
diffrents
SELECT p.salaire()
FROM p IN lespersonnes
BDA9.70
Edition de liens
n SELECT p.salaire()
FROM p IN lespersonnes
n La mthode salaire() est redfinie dans plusieurs
sous-classes
n Quelle mthode salaire() excuter ?
n Solution 1 : celle de la classe dclare
uchoix statique la compilation
uExemple => mme formule de calcul du salaire pour
tous (= sal_mensuel)
BDA9.71
Solution 2 : liaison dynamique
n Choisir la mthode de la classe la plus spcialise
contenant l'objet
uchoix lors de l'excution seulement
u"liaison dynamique"
uExemple : formule de calcul du salaire particulire la
sous-classe de chaque personne
n => Instanciation unique des objets pour viter toute
ambigut
n Il faut dcrire dans le schma toutes les
intersections de classes possibles : Chirurgien-
Rhumato, etc
BDA9.72
Redfinition / Surcharge
n La liaison dynamique n'est pas toujours
souhaitable
Cela dpend des programmes d'application
n Certains SGBD OO proposent diffrents types de
re-dclaration des proprits :
uredfinition avec liaison dynamique
l le rsultat doit tre compatible avec celui de la sur-
classe
usurcharge sans liaison dynamique
l le rsultat peut tre quelconque
BDA9.73
Redfinition / Surcharge (2)
n Exemple :
uPersonnel salaire() = self.sal_mensuel (1)
uMdecin salaire() = self.sal_mensuel + (2)
(self.jours_garde * PrimeJG )
n Un mdecin : Muller d'AVS 12345
n SELECT p.salaire() FROM p IN lespersonnes
WHERE AVS=12345
usalaire() redfini dans Mdecin => calcul (2)
usalaire() surcharg dans Mdecin => calcul (1)
n SELECT p.salaire() FROM p IN lesmdecins
WHERE AVS=12345
u=> calcul (2)
BDA9.74
Bibliothques de classes (ou types)
n Collections
u insert_element(e)
u remove_element(e)
u
n LIST
u insert_first_element(e)
u retrieve_element_at(position) > element
u
n Types gographiques (Point, Ligne, Polygone)
u inside(g) > BOOLEAN
u adjacent(g) > BOOLEAN
u distance(g) > FLOAT
u
n Les SGBDO offrent des bibliothques compltes
BDA9.75
FormaPerm en OO
banque
compte
agence
Personne
nom
prnoms
adresse
Etudiant Enseignant
Cours
prof
nomC cycle
tudiants
nE
dateN
diplme
anne
tudes
cours-obtenus cours-suivis
note anne
cours-assurs
tl
statut
rensbanc
est prrequis
CoursObtenu
0:n
1:1
0:n
0:n
a prrequis
0:n
0:n
o:n liste
tudiant
cours
russi
liste
1:1
1:1
0:n
liste
LesEtudiants LesEnseignants
LesCours
BDA9.76
FormaPerm - remarques
n L'tude des requtes a montr que tous les liens
de composition sont utiliss dans les deux sens
uExemple : Enseignant.cours_assursprof.Cours
uQuel est le professeur de tel cours ?
l Cours.prof > Enseignant
uQuels cours donne tel professeur ?
l Enseignant.cours_assurs > Cours
n NB Faute de place, les mthodes n'ont pas t
reprsentes sur le diagramme
BDA9.77
FormaPerm (1)
CLASS Personne
{ ATTRIBUTE nom : STRING ;
ATTRIBUTE prnoms : LIST STRING ;
ATTRIBUTE adresse : Tadresse ;
VOID afficher() ;
VOID nouvelle_adresse(nvadr : Tadresse) }
TYPEDEF Tadresse STRUCT
{ ATTRIBUTE rue : STRING ;
ATTRIBUTE numro : STRING ;
ATTRIBUTE ville : STRING ;
ATTRIBUTE NPA : STRING }
BDA9.78
FormaPerm (2)
CLASS Etudiant : Personne
EXTEND LesEtudiants
KEY nE
{ ATTRIBUTE nE : INT ;
ATTRIBUTE dateN : DATE ;
ATTRIBUTE tudes : LIST STRUCT Etude
{ anne : INT ;
diplme : STRING } ;
RELATIONSHIP cours-obtenus : LIST CoursObtenu INVERSE
CoursObtenu.tudiant ;
RELATIONSHIP cours-suivis : SET Cours INVERSE Cours.tudiants ;
VOID afficher() ;
VOID inscrire ( nvcours : Cours ) ;
VOID aobtenu ( nvcours : Cours , note : FLOAT , anne : INT ) ;
INT age() }
BDA9.79
FormaPerm (3)
CLASS Cours
EXTEND LesCours
KEY nomC
{ ATTRIBUTE nomC : STRING ;
ATTRIBUTE cycle : INT ;
RELATIONSHIP prof : Enseignant INVERSE Enseignant.cours-
assurs ;
RELATIONSHIP tudiants : SET Etudiant INVERSE Etudiant.cours-
suivis ;
RELATIONSHIP a-prrequis : SET Cours INVERSE Cours.est-
prrequis ;
RELATIONSHIP est-prrequis : SET Cours INVERSE Cours.a-
prrequis ;
RELATIONSHIP russi : SET CoursObtenu INVERSE
CoursObtenu.cours ;
VOID afficher() ;
INT nb-inscrits() }
BDA9.80
FormaPerm (4)
CLASS CoursObtenu
{ ATTRIBUTE anne : INT ;
ATTRIBUTE note : FLOAT ;
RELATIONSHIP cours : Cours INVERSE Cours.russi;
RELATIONSHIP tudiant : Etudiant INVERSE
Etudiant.cours-obtenus }
BDA9.81
FormaPerm (5)
CLASS Enseignant : Personne
EXTENT LesEnseignants
{ ATTRIBUTE tl : INT ;
ATTRIBUTE statut : ENUM ( "prof", "assist" ) ;
ATTRIBUTE rens.banc : STRUCT RensBq
{ banque : STRING ;
agence : STRING ;
compte : INT } ;
RELATIONSHIP cours-assurs : SET Cours INVERSE
Cours.prof ;
VOID afficher() ;
VOID assure (nvcours : Cours) ;
VOID nassureplus (oldcours : Cours) }
BDA9.82
CONCLUSION
n Objectifs atteints
u meilleure reprsentation du monde rel
u rutilisation
u efficacit pour les applications nouvelles
n MAIS
u Les SGBDO ne sont pas adapts tout type dapplication !
u Mthodologies de conception incompltes
l normalisation de la structure, conception des mthodes
u Comptition entre standards
u Absence de thorie, formalisation
u Vues
u Evolution du schma
u Versions, temps
u Migration difficile des SGBD classiques aux SGBDO
BDA9.83
banque
compte
agence
Personne
nom
prnoms
adresse
Etudiant Enseignant
Cours
prof
nomC cycle
tudiants
nE
dateN
diplme
anne
tudes
cours-obtenus cours-suivis
note anne
cours-assurs
tl
statut
rensbanc
est prrequis
CoursObtenu
0:n
1:1
0:n
0:n
a prrequis
0:n
0:n
o:n liste
tudiant
cours
russi
liste
1:1
1:1
0:n
liste
LesEtudiants LesEnseignants
LesCours
BDA9.84
Personnel
AVS
nom
adresse
sal-mensuel
Infirmier
horaire
Mdecin
jours-garde
bip
Gnraliste Chirurgien
nb-oper
Rhumato
spcialits
0,n
0,n
bureau
Service
personnes nom
service
0,n
BDA9.85
Personnel
salaire()
newService(servoid)
afficher()
AVS
nom
adresse
sal-mensuel
Infirmier
horaire
Mdecin
jours-garde
bip
salaire()
Gnraliste Chirurgien
nb-oper salaire()
Rhumato
spcialits
0,n
0,n
Service
personnes nom
0,n
service

You might also like