base de données orientée objet2
TRANSCRIPT
-
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