Historique de développement des bases de données (Sgbd) Première génération : 1960, modèle réseau ou hiérarchique (Total, IDMS, IDS 2, IMS 2) Deuxième génération : 1970, modèle relationnel (PostgreSql, Mysql, Oracle, Informix, Sybase, DB2, Ingres) Troisième génération : 1980, modèle relationnel objet et le modèle objet Quatrième génération : support d’Internet, du Web, des objets multimédias, aide à la prise de décisions, data mining
05/28/2009 Modèle objet 2
Pourquoi une troisième génération Apparution de nouvelles applications : CAO, PAO, GL, SIG Ce qui induit de nouveaux besoins Coût des mémoires secondaires en baisse Le modèle relationnel est incapable de répondre aux nouvelles exigences
05/28/2009 Modèle objet 3
Limites du modèle relationnel Le modèle de données est trop simplifié Difficulté de représenter les entités complexes du monde réel Ensemble limité de types de base Limitation de la première forme normale Incompatibilité de SQL avec les LGP D’où besoin de développer un nouveau modèle
05/28/2009 Modèle objet 4
Besoins des nouvelles applications Puissance de structuration Définition de nouveaux types Intégration d'un LPG dans un SGBD Méthodes de stockage, d'accès (spatiaux) Gestion des transactions (longue)
05/28/2009 Modèle objet 5
Le modèle orienté objet Cherche à répondre à ces nouveaux besoins Né de la convergence de deux domaines : Les bases de données Les langages de programmation OO
05/28/2009 Modèle objet 6
La programmation procédurale Style de la programmation à la Pascal Dichotomie données et traitements Conception dirigée par les traitements Données = variables typées Opérations = procédures paramétrées
05/28/2009 Modèle objet 7
Problèmes liés à la programmation procédurale Comment partager (réutiliser) les structures de données et les opérations entre les applications ? La cohérence globale des données entre les applications est-elle assurée ? Le sous-programme est-il un élément suffisant de modularité? Peut-on facilement maintenir et/ou étendre de telles applications ?
05/28/2009 Modèle objet 8
La programmation par objets Regrouper les données et les traitements Dirigée par les données
05/28/2009 Modèle objet 9
SGBD OO SGBD LOO Persistance Identité d’objet Méthodes de stockage Encapsulation Concurrence et fiabilité Classe/Type Langages de requêtes Polymorphisme Contraintes d’intégrité Héritage
05/28/2009 Modèle objet 10
Notion d’objet Un objet est une abstraction d’une entité du monde réel Un objet est défini par : Une structure = ensemble d’attributs valués Un comportement = ensemble d’opérations (méthodes)
05/28/2009 Modèle objet 11
Exemple d’objet Un objet E définissant l’entité employé peut être représenté ainsi : E (nom=ali, prénom=hassan, salaire=10000, afficher(), saisir(), augmenterSalaire())
05/28/2009 Modèle objet 12
Identité d’objet Tout objet possède un identifiant unique et invariant (OID) qui est indépendant de sa valeur Opérateur d'identité d'objets : ==
deux objets o1 et o2 sont identiques
s'ils ont le même OID
05/28/2009 Modèle objet 13
Opérateur d’égalité d’objets Soient o1 et o2 deux objets o1= o2 ssi tous les attributs de o1 et o2 ont la même valeur, que ce soient des attributs valeur ou des attributs référence
05/28/2009 Modèle objet 14
OID : Modélisation Situation 1 : Ali a un fils qui s’appelle Hassan, Zineb a un fils qui s’appelle Hassan (le même fils) Situation 2 : Ali a un fils qui s’appelle Hassan, Zineb a un fils qui s’appelle Hassan (un fils différent)
05/28/2009 Modèle objet 15
Encapsulation des objets Les modèles à objets permettent d’encapsuler les structures des objets par des opérations (méthodes) Le principe d’encapsulation cache les structures de données et le code des méthodes en ne laissant visible que les opérations publiques
05/28/2009 Modèle objet 16
Intérêt de la notion d’objet Bonne abstraction des entités du monde réel Structure + comportement Sécurité des manipulations mécanisme d’encapsulation Partage des informations Concept d’OID Modélisation des données complexes Graphe de composition des objets
05/28/2009 Modèle objet 17
Interface d’objet Ensemble des signatures des opérations qui sont applicables depuis l’extérieur sur un objet Les opérations invisibles à l’extérieur de l’objet sont appelés opérations privées
05/28/2009 Modèle objet 18
Le concept de CLASSE Définition « usuelle » Ensemble des objets possédant même structure et même comportement Exemple : classe Employé Les trois aspects d'une classe : Description de la structure et du comportement des objets ==> Intention de la classe c-à-d un Type Modèle à partir duquel les objets sont créés ==> mécanisme d'Instanciation Ensemble des objets créés ==> Extension de la classe
05/28/2009 Modèle objet 19
Mécanisme d’instanciation Un objet est une instance de classe Un objet est créé à l'aide d'un opérateur new automatiquement associé à la classe Exemple : e : Employé; e := new Employé; Lien d’instanciation entre e et Employé
05/28/2009 Modèle objet 20
Mécanisme d’instanciation Chaque objet de la classe Employé possède une copie de la structure décrite dans la classe
Tous les objets de la classe Employé se
partagent les opérations décrites dans la classe
05/28/2009 Modèle objet 21
Exemple de classe classe Employé publique Saisie; Afficher; AugmenterSalaire (Pourcen : Entier); privée attributs Nom : Chaine; Adr : Chaine; Age : Entier; Sal : Reel; méthodes methode AugmenterSalaire (Pourcen : Entier) Sal := Sal + ( (Sal/100) * Pourcen) ); methode Saisie ... ; methode Afficher ...; fclasse Employé; 05/28/2009 Modèle objet 22 Organisation des classes Liens de spécialisation/généralisation Employé est une généralisation de Ingénieur et Commercial Ingénieur et Commercial sont des spécialisations de Employé un Ingénieur Commercial est à la fois Ingénieur et Commercial
05/28/2009 Modèle objet 23
Graphe des classes
05/28/2009 Modèle objet 24
Le mécanisme d’héritage Terminologie Employé est la super-classe de Ingénieur Commercial est une sous-classe de Employé Héritage simple par spécialisation Une sous-classe hérite des propriétés de sa super-classe (attributs + opérations) Une sous-classe peut avoir des propriétés supplémentaires qui lui sont propres Autres formes d'héritage Héritage multiple Héritage par généralisation
05/28/2009 Modèle objet 25
Redéfinition, Surcharge et Polymorphisme Redéfinition Spécification d’une méthode existante dans une super-classe au niveau d’une sous-classe, avec une implémentation différente Surcharge Possibilité de définir plusieurs codes pour une même opération d’une classe Polymorphisme Faculté pour une opération d’avoir différentes signatures avec un code spécifique attaché à chaque signature 05/28/2009 Modèle objet 26 Intérêt des notions de classe et d’héritage Modularité une classe = un module Réutilisation Attributs et opérations d'une classe héritées dans ses sous classes Eviter la redondance de code Construction d'une nouvelle classe de manière incrémentale Modélisation Organisation des classes via les liens d’héritage Graphe des classes = graphe d’héritage
05/28/2009 Modèle objet 27
Les Collections d’objets Container typé désigné par un nom, contenant des éléments multiples organisés selon une structure particulière, auxquels on accède par des opérations spécifiques au type du container
05/28/2009 Modèle objet 28
Principales collections L’ensemble (Set) : définit des collections non ordonnées sans doubles Le sac (Bag) : définit des collections non ordonnées avec doubles La liste (List) : définit des collections ordonnées avec doubles Le tableau (Array) : définit des collections ordonnées et indexées
05/28/2009 Modèle objet 29
Collection
05/28/2009 Modèle objet 30
Collections imbriquées class Phrase { List <Array <char>> Sequence; }; class Paragraphe { Phrase Theme; List <Phrase> Details; Phrase Conclusion; }; class Texte { List <Paragraphe*> Contenu; };
05/28/2009 Modèle objet 31
Communication par envoi de messages Les objets communiquent entre eux par des envois de messages Message : le nom de l'objet récepteur le nom d'une opération connue par l'objet les arguments (éventuels) de l'opération
05/28/2009 Modèle objet 32
Schéma de bases de données à objets C’est une description d’une base de données à objets particulière incluant les définitions de classes, d’attributs et d’opérations ainsi que les liens entre classes
05/28/2009 Modèle objet 33
Exemple de schéma de BOO
05/28/2009 Modèle objet 34
Illustration C++ du schéma Class Etudiant { Class caricature { Cercle* tete, oeild, oeilg; Figure* nez, bouche; Void sourire(); Void pleurer(); Graphic Dessiner (int echelle); } Class Cercle { Point Centre; Double Rayon; } Class Figure { List 05/28/2009 <Point> Forme; }Modèle objet 35 Le Manifesto de 1989 (13 règles d’or) OO (1-8), BD (9-13) : 1. objets complexes 2. identité d'objets 3. encapsulation des objets 4. types ou classes 5. héritage via la hiérarchie de classes ou de types 6. surcharge, redéfinition et liaison dynamique 7. langage de programmation 8. extensibilité 9. persistance 10. gestion de la MS 11. gestion de la concurrence 12. reprise après panne 13. langage de requêtes 05/28/2009 Modèle objet 36 Le Manifesto (suite) Aspects Optionnels héritage multiple contrôle de types et inférence de types Répartition transactions longues et/ou imbriquées gestion des versions Aspects ouverts interfaces avec les LPG structures de données types génériques "tout objet" ou pas Aspects non traités vues et données dérivées Administration de la BD contraintes d'intégrité évolution de schéma 05/28/2009 Modèle objet 37 Définition de la persistance Un objet est persistant ssi : Stocké dans la base, sa durée de vie est supérieure au programme qui le crée Un objet est transient ssi : Restant en mémoire, sa durée de vie ne dépasse pas celle du programme qui le crée
05/28/2009 Modèle objet 38
Gestion de la persistance En environnement de programmation : constructeur et destructeur En BDOO, nécessité d’assurer la persistance des objets sur disque pour pouvoir les retrouver ultérieurement
05/28/2009 Modèle objet 39
Gestion de la persistance Solution : Donner un nom à chaque objet persistant Fournir une fonction permettant de faire persister un objet préalablement construit en mémoire Signature de la fonction peut être : Oid=Persist (<nom>,<ref>) Ref est la référence en mémoire de l’objet Oid est l’identifiant attribué à l’objet dans la base
05/28/2009 Modèle objet 40
Persistance par héritage Cache au programmeur les mouvements d’objets entre la base et la mémoire Profiter de l’héritage pour assurer la persistance automatiquement Le système offre une classe racine des objets persistants, nommée Pobject
05/28/2009 Modèle objet 41
Persistance par héritage
05/28/2009 Modèle objet 42
Persistance par héritage La classe Pobjet intègre des appels aux fonctions persist et unpersist Tout objet d’une classe qui hérite de Pobjet est persistant
05/28/2009 Modèle objet 43
Persistance par référence Tout objet peut être une racine de persistance à condition d’être déclaré comme tel Tout objet pointé par un objet persistant est persistant
05/28/2009 Modèle objet 44
Exemple de déclaration employe * emp=new persistant employe(“toto”) Persistant int x; //permet de rendre x persistant
05/28/2009 Modèle objet 45
Persistance par référence (catalogue)
05/28/2009 Modèle objet 46
Algèbre pour objets complexes Les algèbres pour objets complexes résultent d’extensions de l’algèbre relationnelle aux objets complexes
05/28/2009 Modèle objet 47
Expressions de chemins et de méthodes Besoin d’appliquer des opérations sur les objets Besoin de référencer les identifiants Deux types d’expressions valuables Expression de chemin Expression de méthodes
05/28/2009 Modèle objet 48
Expression de chemin C’est une séquence d’attributs de la forme A1.A2…An tel que : Chaque attribut Ai de la classe Ci référence un objet de la classe Ci+1 dont le suivant est membre, à l’exception du dernier Exemple : Represente.Tete.centre.x est une expression de chemins
05/28/2009 Modèle objet 49
Expression de méthodes C’est une séquence d’appels de méthodes de la forme M1.M2…Mn avec d’éventuels paramètres pour certaines méthodes Mi de la forme Mi(P1,P2, …,Pj)
05/28/2009 Modèle objet 50
Groupage et Dégroupage des Relations
05/28/2009 Modèle objet 51
Groupage Opération qui consiste à transformer une relation en créant pour chaque valeur des attributs de groupement un ensemble de valeurs des attributs groupés
05/28/2009 Modèle objet 52
Groupage : exemple
Pièce Type Numéro
A 1 A 7 B 3 B 8 C 2
05/28/2009 Modèle objet 53
Groupage : exemple
Pièce Type {Numéro}
A {1,7} B {3,8} C 2
05/28/2009 Modèle objet 54
Dégroupage Opération qui consiste à transformer une relation à attributs groupés en relation plate, en créant pour cela un tuple pour chaque valeur du groupe en dupliquant les valeurs des autres attributs
05/28/2009 Modèle objet 55
Algèbre d’Encore Proche de l’algèbre relationnelle Supporte les types abstraits et les identifiants d’objets Les opérations accèdent des collections typées d’objets en invoquant l’interface publique du type
05/28/2009 Modèle objet 56
Opérations de l’algèbre d’Encore Sélection d’objets Image d’une collection Projetion d’une collection Groupage et dégroupage d’une collection Aplatissage d’une collection Jointure de collections
05/28/2009 Modèle objet 57
Algèbre Lora Opérations de recherche Opérations ensemblistes Opérations de mise à jour Opérations de groupe Arbres d’opérations algébriques