Upload
badr-elkhalyly
View
64
Download
0
Embed Size (px)
Citation preview
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-objetSQL 3
uODMG, la partie modle de donnes
n Langage de manipulation de donnes d'ODMG : OQL
nRelationnel-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
nHirarchie de gnralisation / spcialisation
n Population et persistance
nMthodes et encapsulation
nUn exemple: FormaPerm en BD OO
nConclusion
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 donnesu protection contre les accs non autoriss
n Atomicit des transactions
n Fiabilit de la base de donnesu protection conte les pannes
n Langages de requtes et de mises jour dclaratifs
n Performancesu techniques de stockageu optimisation des requtes
BDA9.6
Nouvelles applicationsu conception assiste par ordinateuruproduction assiste par ordinateurugnie logicielu systmes d'informations gographiquesu systmes multi-mdiau recherche et intgration de donnes de la toileu
nNouveaux besoinsuobjets structurs, volumineuxunouveaux types de donnesu transactions longuesuudveloppement des SI non satisfaisant
BDA9.7
Evolution des SGBD
n Applications plus complexes
nCot du dveloppement des applications
=> en faire faire plus au SGBD
SGBD
BD BD
SGBD
ApplicationApplication
BDA9.8
Evolution des SGBD
1960SGBD hirarchique (IMS)SGBD rseau (CODASYL)J schma
langage navigationnel
1970SGBD relationnelJ structure physique cache aux utilisateursJ modle simpleJ formalisation => normalisationJ langages dclaratifs
BDA9.9
Evolution des SGBD (2)1980
Modles smantiques (EA)J meilleure reprsentation du relL outils de conception uniquement
n 1986 : premiers SGBD OOJ meilleure reprsentation du rel au niveau logiqueJ rutilisationJ1993 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
nGroupe de normalisation des SGBD OO
nNorme finale publie en 2001
n A regroup de nombreux vendeurs de SGBO OOuPoetuArdentuObjectivityuVersantuGemStoneu
et des constructeurs, des utilisateurs, des chercheurs
nwww.odmg.org
BDA9.11
Le relationnel : avantages
n approche formellement dfinie (=> normalisation, algbre)
nmodle 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 : faiblessesn structure de donnes trop simple
u pas d'attribut complexe, ni multivalu ==> entits relles clates, jointuresu un seul type de lien (cl externe)
n pas de niveau conceptuel
n peu compatible avec les langages de programmation u ensemble lmentu dclaratif impratifu types de donnes
n donnes alphanumriques uniquementu 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]
nObjectif : productivit des programmeursuMoyen : rutilisation
nConcepts essentielsuobjet encapsul
l interface visible : oprations (mthodes)l implmentation cache : structure et code
uhritage
n Langages de programmation OOuEiffel, 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 dclaratifuoptimisation 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 ?
nmodles 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
nNorme ODMGmais de nombreux SGBDO ne la suivent pas.
nCe cours dfinit :u les principes communs aux SGBD OOu les alternatives importantes
nCe 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 attributmthode
lien lien de compositionbinairesans attributorient
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 : Personnenomprnomsadresse (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 objetCLASS 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 }
}
Personnenom
prnoms
liste 1,n
enfants
prnoms sexe daterue n ville NPA
adresse liste 0,n
liste 1,n
BDA9.23
Structure complexe (suite)
nConstructeurs de structure complexe :uattribut complexe : STRUCTuattribut multivalu => constructeur de collection
l ensemble : SETl liste : LISTl multi-ensemble : BAGl tableau une dimension : ARRAY
n Impact sur le SGBD :uLMD : comment accder aux valeurs ?
l notation pointel variables sur les attributs multivalus
u stockage 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 complexeudfinir des types de donnes adapts l'application
l type T-Adressel types Point, Ligne, Polygonel types Image, Son
nComme les classes d'objets, les types de donnes dfinis par l'application ont :uune structure complexeudes 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
nObjectif : Identifier les objets indpendamment de leur valeur et de leur adresse (MC ou disque)
=>?? ? ? ? ? ? ? ? ? ? ? ? ? aux changements de valeur
=> insensibilit aux dplacements internes
nChaque 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 dobjetuReprsentation directe du monde reluPermet de reprsenter des doublesuMoyen efficace pour rfrencer un objet
BDA9.27
Identits , cls , noms
n SGBD relationnels : cl = un ensemble minimum dattributsuDanger lors des :
l mises jour de la cll changements d'attribut cl
u Identit dpendante de la valeur
n Langages de programmation :noms des variablesuAttention :
l pas de test didentit : X == Y ?l temporaire
u Identit 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 OOuuniqueupermanentu immuable
n objet : (oid, valeur)
n Trois test d'galit !u test didentit ==
mme oidu test dgalit en surface =
mme valeuru test d'galit en profondeur = *
feuilles composantes de mme valeur
BDA9.30
Tests didentit / dgalit
nQui 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
Logementpossde 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
o22o3
o21BD
BDA9.32
Identit : impact sur le SGBD
n Implmentation :uadresse disque ou MCuun numro logique
l Exemple : n de classe + n de squence
n LMD udiffrents testsuoprations ensemblistes selon :
l les valeurs ?l les oids ?
BDA9.33
LIEN DE COMPOSITION
nObjectif : 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 compositionde 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 dpendantu destruction composite => destruction composant
n cardinalits :u minimale, maximaleu inverses (=> partag / dpendant)
n lien inverse
modle . moteur
Voiture
N
Moteur1,1 0,n
modlesV
BDA9.36
Liens inverses grs par le SGBD OOn 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
Moteur0,n1,1
BDA9.37
Base d'objets : rseaux d'instances
Personne
parents enfants conjoint0,2 0,n 0,1
Schma
Jean Annie
Alice
Marc
Paul
enfantsenfants
conjointconjoint
parents
parents
parents
parents parents
BD
BDA9.38
Intgrit rfrentielle
n Les SGBD OO vrifient les affectations :uattribut-rfrence = xuUPDATE Voiture
WHERE modle = 'Golf GTI'SET moteur = x
u=> x doit tre un (des) oid de la classe rfrence
n Suppression d'un objet composantuLe SGBD OO devrait mettre NULL dans les attributs
rfrence des objets composites uMAIS c'est rarement fait uSELECT v.moteur.N
FROM v IN VoitureWHERE 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
nUnit de verrouillage : objet compos / objet composant
n Transactions embotes
BDA9.40
Lien de composition / association
BD OO Entit Association
n Smantique :"composition" association gnriqueVoiture > Moteur Etudiant --inscription-- Cours
n orient non orientaccs facile objet compos > objet composantaccs 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'objetLien 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
Cours0,n
anne note cours
n Certains SGBD OO permettent les attributs rfrence en attributs composants
BDA9.42
Reprsentation des associationsn 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
Cours0,n0,n
tudiant cours
Inscription date
1,1 1,1
card. 1,1
BDA9.43
HIERARCHIE D'HERITAGE
nObjectif des LP OO : rutilisation (rduire le cot de dveloppement)==> Hritage des proprits
Redfinition des proprits pour les adapter
nObjectif des BD OO : reprsentions multiples du mme objet
l Annie est :Smembre du personnel de l'hpitalSmdecinSchirurgienSet 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 : compositionflches paisses : is-a
PersonnelAVSnom
adressesal-mensuel
Infirmier horaire Mdecinjours-gardebip
Gnraliste Chirurgien
nb-oper
Rhumato
spcialits0,n
0,n
bureau
Service
personnes nom service
0,n
BDA9.45
Proprits des liens is-a
n Inclusion des populationsuTout objet d'une sous-classe est aussi objet de sa (ses)
sur-classeuExemple : un objet de la classe Mdecin est aussi un
objet de la classe Personnel
nHritage des propritsuLa sous-classe hrite des :l attributs valeurl attributs rfrencel 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 SubstituabilituOn peut toujours employer un objet spcifique la place
dun objet gnriqueuExemple : ajouter au Service de ranimation un
infirmier, un mdecin
n Sous-typageUne sous-classe peut avoir des :uproprits supplmentaires
l Exemple : Infirmier a l'attribut horaireudes 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 attributsnRedfinition dun attribut dans une sous-classeunouvelle dfinition pour lattributu type de lattribut redfini doit tre un sous-type
l domaine et/ou cardinalites restreintsl attribut complexe complt
unexiste pas dans tous les SGBD OO
n Exemple de domaine restreint :
Personne
Etudiant Enseignant
18 < age < 60 22 < age < 70
AVsnomage (0 < age < 120)
BDA9.48
Redfinition d'attribut
n Exemple d'attribut complexe complt
Personnenom: STRING ,adresse: STRUCT { rue: STRING ,
numro: STRING,ville : STRING }
Employ : Personnenom: 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
nDynamique ?uUn objet peut-il changer de classe ?
l un infirmier devient mdecinl on apprend le type d'un personnel: c'est un mdecin
u Implmentation 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 Chirurgienu Implmentation plus complexe => En gnral non : sous-classe commune obligatoire
BDA9.50
Hritage multiple
PersonnelAVSnom
adressesal-mensuel
Infirmier horaire Mdecinjours-gardebip
Gnraliste Chirurgien
nb-oper spcialits
Rhumato
spcialits0,n
0,n
bureau0,n
Rhumato-Chirurgien
BDA9.51
Conflits dhritage multiple
nQuelles spcialits pour les Rhumato-Chirurgiens ?
n Solutions employes par les SGBD OOu Interdiction
=> renommer lattribut / mthode qui pose problmeuprfixage automatique des noms des attributs ou
mthodes par le nom de la sur-classeu choix par le systme (toujours la premire sur-classe
dans la dclaration textuelle)u choix par l'utilisateur
l statique : la dfinition du schmal dynamique : lors des accs
BDA9.52
Implmenter les hirarchies
n LMD :uaccs la population propre / globale dune classe
l SELECT * FROM PersonnelS les personnels qui ne sont ni infirmier ni mdecinS tous les personnels
selon quel format : wPersonnel wou : Personnel, Mdecin, Chirugien
u changement de classe
n Stockage dun objet :uavec hritage effectu : 1 objet = 1 enregistrement (dans
la sous-classe la plus spcifique)u sans 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 : populationsu 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 potentielles2) rcipient contenant toutes les occurrences existantes,
permanentes par dfinition
n LPOO :u Classe = 1) usine pour fabriquer des objets de mme typeu 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 BDu classe = 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 objetl cration d'un objet permanent stock dans la
population de la classel rend l'oid de l'objet cr
BDA9.55
SGBD OO issu du monde LP
nObjectif : disposer de manire souple de donnes permanentes ou non
n classe = 1) uniquementuannie := Mdecin (AVS : 123456 , nom : 'Rochat' ,
adresse : )l cration d'un objet temporairel rend l'oid de l'objet cr
n Le SGBDO fournit des outils aux utilisateurs pour grer eux-mmes u les populations des classes
l (o mettre les objets pour les retrouver ?)l une classe peut avoir 0, 1 ou plusieurs populations
u la 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'hpitalm : 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 Statiqueu systmatique : tout est permanent u classe : persistance spcifie la dclaration de la classeu instance: persistance spcifie lors de la cration de linstance
n Dynamiqueu 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 populationn Approche type BD classiqueuLes objets sont tous toujours permanentsuChaque classe a 1 (ou 0) populationuSi la population existe, les objets sont automatiquement
stocks dedans
nCLASS nom-classe[ EXTENT nom-population ]
n En plus, l'utilisateur peut associer des noms permanents certains objets
NAME directeur : Personneldclaration 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 objetsu 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 accderu mettre jouru manipuler
les objets de la classe (ou les valeurs du type de donnes)
BDA9.61
Mthode
n Signature de la mthodeunom de la mthodeu type du rsultat (si existe)uparamtres (si existent) : nom et type pour chacun
nCode de la mthode u instructions d'un LP OOu instructions du SGBD OO
l requtesSELECT ... FROM WHERE
l mises jour d'objetsuappels de mthodes sur d'autres objets
BDA9.62
Personnel d'un hpital avec mthodes
Personnelsalaire()newService(servoid)afficher()
AVSnom
adressesal-mensuel
Infirmier horaire Mdecinjours-gardebip
salaire()
Gnraliste Chirurgien
nb-oper salaire()
Rhumato
spcialits0,n
0,n
Service
personnes nom 0,n
service
BDA9.63
Encapsulation
nObjectif : cacher l'implmentation des classes pouru faciliter la rutilisation des classes : il suffit d'en
connatre l'interfaceupermettre 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 cacheu structure des objetsu code des mthodes
BDA9.64
Exemple d'encapsulation
CLASS Personnel
n Interface visible INT salaire() signaturesVOID newService(servoid : Service) desVOID afficher() mthodes
n Implmentation invisibleATTRIBUTE AVS : STRING ; structureATTRIBUTE nom : STRING ; desATTRIBUTE adresse : STRING ; donnesATTRIBUTE sal_mensuel : INT ;RELATIONSHIP service : Service
INVERSE Service.personnes
BDA9.65
Exemple d'encapsulation (2)
Implmentation invisible (suite) : code des mthodessalaire ()
{ 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)
nUn objet de la classe Personnel
AVS : 123456nom : 'Rochat'
adresse : 'Lausanne'sal_mensuel : 6600
salaire()
afficher()
newService(servoid)
Encapsulationrespecte
seuls pointsd'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'encapsulationest inutile
u=> encapsulation stricte, par exemple :l depuis LP OO : encapsulationl depuis requtes : pas d'encapsulation
BDA9.68
Redfinition des mthodes
nObjectif : adapter le code la sous-classe
n Signature inchange
n ExempleuPersonnel salaire() = self.sal_mensueluMdecin 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 diffrentsuPersonnel salaire()uMdecin medSalaire() uChirurgien chirurSalaire()
BDA9.69
Salaire mensuel de tout le personnel
n Sans redfinitionSELECT p.salaire()
FROM p IN lespersonnesWHERE NOT (p IN lesmdecins)
SELECT p.medSalaire() FROM p IN lesmdecinsWHERE 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 liensn SELECT p.salaire()
FROM p IN lespersonnes
n La mthode salaire() est redfinie dans plusieurs sous-classes
nQuelle mthode salaire() excuter ?
n Solution 1 : celle de la classe dclareu choix statique la compilationuExemple => mme formule de calcul du salaire pour
tous (= sal_mensuel)
BDA9.71
Solution 2 : liaison dynamique
nChoisir la mthode de la classe la plus spcialise contenant l'objetu choix lors de l'excution seulementu "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 souhaitableCela dpend des programmes d'application
nCertains SGBD OO proposent diffrents types de re-dclaration des proprits :u redfinition avec liaison dynamique
l le rsultat doit tre compatible avec celui de la sur-classe
u surcharge sans liaison dynamiquel 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 )
nUn mdecin : Muller d'AVS 12345
n SELECT p.salaire() FROM p IN lespersonnes WHERE AVS=12345u salaire() redfini dans Mdecin => calcul (2)u salaire() surcharg dans Mdecin => calcul (1)
n SELECT p.salaire() FROM p IN lesmdecinsWHERE AVS=12345u=> calcul (2)
BDA9.74
Bibliothques de classes (ou types)
n Collectionsu insert_element(e)u remove_element(e) u
n LISTu insert_first_element(e)u retrieve_element_at(position) > elementu
n Types gographiques (Point, Ligne, Polygone)u inside(g) > BOOLEANu adjacent(g) > BOOLEANu distance(g) > FLOATu
n Les SGBDO offrent des bibliothques compltes
BDA9.75
FormaPerm en OO
banquecompteagence
Personnenomprnomsadresse
Etudiant Enseignant
Cours
prof
nomC cycle
tudiants
nEdateNdiplme
annetudes
cours-obtenus cours-suivis
note anne
cours-assurs
tlstatutrensbanc
est prrequis
CoursObtenu
0:n
1:1
0:n
0:n
a prrequis
0:n
0:n
o:n liste
tudiant
coursrussi
liste
1:11: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 sensuExemple : Enseignant.cours_assursprof.CoursuQuel est le professeur de tel cours ?
l Cours.prof > EnseignantuQuels cours donne tel professeur ?
l Enseignant.cours_assurs > Cours
nNB 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 : PersonneEXTEND LesEtudiantsKEY 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 LesCoursKEY 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 : PersonneEXTENT 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 atteintsu meilleure reprsentation du monde relu rutilisationu efficacit pour les applications nouvelles
n MAISu Les SGBDO ne sont pas adapts tout type dapplication !u Mthodologies de conception incompltes
l normalisation de la structure, conception des mthodesu Comptition entre standards u Absence de thorie, formalisationu Vuesu Evolution du schmau Versions, tempsu Migration difficile des SGBD classiques aux SGBDO
BDA9.83
banquecompteagence
Personnenomprnomsadresse
Etudiant Enseignant
Cours
prof
nomC cycle
tudiants
nEdateNdiplme
annetudes
cours-obtenus cours-suivis
note anne
cours-assurs
tlstatutrensbanc
est prrequis
CoursObtenu
0:n
1:1
0:n
0:n
a prrequis
0:n
0:n
o:n liste
tudiant
coursrussi
liste
1:11:1
0:n
liste
LesEtudiants LesEnseignants
LesCours
BDA9.84
PersonnelAVSnom
adressesal-mensuel
Infirmier horaire Mdecinjours-gardebip
Gnraliste Chirurgien
nb-oper
Rhumato
spcialits0,n
0,n
bureau
Service
personnes nom service
0,n
BDA9.85
Personnelsalaire()newService(servoid)afficher()
AVSnom
adressesal-mensuel
Infirmier horaire Mdecinjours-gardebip
salaire()
Gnraliste Chirurgien
nb-oper salaire()
Rhumato
spcialits0,n
0,n
Service
personnes nom 0,n
service