Base de Données Orientée Objet2

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