BASES DE DONNÉES Objet - cedric.cnam.frcedric.cnam.fr/vertigo/Cours/Valeur-C/slides-oo.pdf · Dans...
Transcript of BASES DE DONNÉES Objet - cedric.cnam.frcedric.cnam.fr/vertigo/Cours/Valeur-C/slides-oo.pdf · Dans...
Vertigo/CNAM, Paris 1
Slide 1
Valeur C, 19 722, BD avancées, ParisBASES DE DONNÉES Orienté-objet
M. Scholl
2002/2003
Vertigo/CNAM, Paris 2
Slide 2
Plan
1. Introduction
(a) Les besoins actuels en gestion de données avancée
(b) Les limites de la technologie relationnelle
2. Les Bases de Données Objet
(a) Modèles Valeur� Modèle Relationnel étendu aux types abstraits� Modèle N1NF
(b) Un modèle objet� identité d’objet� Structure d’objet� composition� méthodes� héritage
Slide 3
Introduction
Problématique
A) Applications classiques (Gestion)
Les données sont simples :
1. type alphanumérique,
2. tables relationnelles
Si les traitements sont
1. simples et peu intégrés : interfaces conviviales
2. complexes : immersion SQL dans un Langage de Programmation
Vertigo/CNAM, Paris 3
Slide 4
B) Besoins actuels
1. information multi-media
2. de structure très riche
3. traitements complexes et très évolutifs
Slide 5
B) Autres besoins actuels
1. données hétérogènes
2. de nombreuses sources de données
3. intégration souple et rapide d’une nouvelle source
4. données semi-structurées
Vertigo/CNAM, Paris 4
Slide 6
Les SGBD relationnels face à ces besoins
1. simples, langage déclaratif, standard SQL
2. MAIS mauvaises performances, parce que� pauvreté de représentation,� mauvaise intégration SQL/L.P. : 2 paradigmes
Slide 7
Pauvreté de représentation relationnelle
Illustration sur un exemple
PARENTS ( NOM, EPOUX, ENFANT)
toto lulu jules
toto lulu eve
toto lulu jeremie
toto noemie julien
toto pussy medor
jean marie lucien
jean marie valentin
Vertigo/CNAM, Paris 5
Slide 8
PROBLEMES
1. Duplication (1e forme normale): pour chaque enfant du même couple, un nuplet
2. problèmes de type
(a) comment vérifier que les chaines de caractère sont des noms de personne? medor
et pussy ne sont pas des personnes
(b) il faut savoir qu’une personne est représentée par son nom (clé étrangère)
(c) en fait un époux n’est pas n’importe quelle personne, c’est un parent
Les modèles objet sont une solution à ces problèmes
Bases de Données Objet
Vertigo/CNAM, Paris 6
Slide 9
Quelques systèmes commerciaux� Objecstore (Object Design)
� Versant
� Poet
� etc.
Slide 10
Modèles par valeurs/objet
MODELES par VALEUR : relationnel, N1NF, relationnel étendu aux Types abstraits
(SQL2)
Un objet est
� représenté par sa valeur
� identifié par une partie de sa valeur (clé)
Vertigo/CNAM, Paris 7
Slide 11
MODELES OBJET
1. un objet� a une valeur� est identifié par un oid indépendant de sa valeur
2. puissance de structuration supérieure à celle des modèles valeur
Slide 12
Historique
1. 1973 Modèle relationnel
2. 1981 Modèle N1NF (non sous 1e forme normale, Nested, NF2)
Langages de requêtes (Algèbres + calculs)
3. Extension des SGBD relationnels (Types abstraits)� POSTGRES (Ingres) 1989, etc.� normes SQL2-SQL3 en cours� autres extensions spécialisées (e.g. Oracle Text, Oracle spatial data option,
Informix spatial datablade) sont à comparer à cette approche
Vertigo/CNAM, Paris 8
Slide 13
subsectionModèle relationnel étendu aux TAD
Pourquoi l’abstraction des données?
1. Méthodologie de spécification de logiciels de bonne qualité
2. Regrouper dans un même module données et traitements
3. séparer spec de implantation
4. permettre plusieurs implem pour une même spec
Slide 14
Dans la suite, un TA est défini par
1. une structure
2. un ensemble de fonctions
Une fonction est définie par sa signature :F : T1, T2, ..., Tn � TF : nom de la fonction,Ti : type des arguments,T : type du résultat
Un type est soit atomique, soit abstrait.
On peut ne pas "voir" la structure à l’extérieur;
On ne connait pas formellement la sémantique des fonctionsen particulier pas d’axiomes
Vertigo/CNAM, Paris 9
Slide 15
Relationnel étendu aux TAD
1. On rajoute aux types atomiques (entier, char, etc...):
des TAD (biblio de fct disponibles avec le SGBD)
2. les fct des TAD sont utilisées dans les clauses SELECT et WHERE
Slide 16
Relationnel étendu aux TAD: un exemple
TYPE ZONE
Creer Liste(POINT) -> ZONE
Surface ZONE -> Reel
Adjacent ZONE, ZONE -> Bool
Extent ZONE, Reel -> ZONE
Distance ZONE,POINT -> Reel
Intersect ZONE,ZONE -> Bool
Intersection ZONE,ZONE -> ZONE
TYPE LIGNE
....
TYPE POINT
....
Vertigo/CNAM, Paris 10
Slide 17
Schéma de la base
COMMUNES (Nom, nbhab, solde-pop,aire,geo)
AIRES (Id, Type, nbcommunes,nbhab,geo)
Type a pour domaine
{periurbain,route, echangeur,autoroute}
Les attributs geo ont pour domaine (type) : ZONE
Slide 18
1) Afficher les communes peri-urbaines et donner leur surface
Select COMMUNES.geo, surface (COMMUNES.geo)
From COMMUNES,AIRES
Where COMMUNES.aire= AIRES.Id
And type = ‘‘periurbain’’
2)Solde de population des communes adjacentes a Cap d’Agde
Select C1.solde-pop
From COMMUNES C1, COMMUNES C2
Where C2.nom=’’Cap d’Agde’’
And C1.geo adjacent C2.geo
Vertigo/CNAM, Paris 11
Slide 19
3) Evolution de la population dans les communes situées à moins de 15km d’1 commune
dont le nb d’habitants > 100 000
Select C1.solde-pop
From COMMUNES C1, COMMUNES C2
Where C2.nbhab > 100 000
And C1.geo Intersect Extent(C2.geo)
Slide 20
Modèle N1NF
Une autre notation
Les relations N1NF sont aussi appelées
relations imbriquées (nested relations)
Le schéma R(A1: D1,..., An: Dn) peut être noté :
R=�
[A1:D1,..., An:Dn ] � ,
[ ] est le constructeur "nuplet"� � est le constructeur ensemble (également noté : *).
Vertigo/CNAM, Paris 12
Slide 21
Génération de valeurs complexes� On part de valeurs atomiques (de type ou domaine entier, chaine de caractères, etc...)
� en utilisant les constructeurs (nuplet, ensemble, liste, tableau, bag, etc.), on génère
de nouvelles valeurs de structure de plus en plus riche
La structure peut être représentée par un arbre dont les noeuds internes correspondent
aux constructeurs et les feuilles aux attributs atomiques
Slide 22
Dans le modèle relationnel, on ne peut que
1. appliquer le constructeur nuplet à des valeurs atomiques (on obtient un nuplet)
2. appliquer le constructeur ensemble : une relation est un ensemble de nuplets
Arbre de profondeur 2 :
La racine est le constructeur ensemble,
Elle a pour fils le constructeur nuplet,
les feuilles sont les attributs (voir exemple)
Vertigo/CNAM, Paris 13
Slide 23
Relation non sous 1e forme normale
Un attribut peut avoir pour valeur :
1. une valeur atomique
2. un ensemble de valeurs atomiques
3. un ensemble de tuples (une relation N1NF))
La richesse (représentation hiérarchisée) vient de l’alternance des constructeurs nuplet et
ensemble, sans limite de profondeur
Slide 24
L’exemple des Parents
PARENTS (NOM, EPOUX, ENFANTS)
toto lulu jules
eve
jeremie
toto noemie julien
toto pussy medor
jean marie lucien
valentin
Vertigo/CNAM, Paris 14
Slide 25
Le NEST
R (A, B ) {[A:char, B: char]}
a b
a c
b a
b c
S = NestA (R) {[A:char, C: {char}]}
S (A, C)
a, {b,c}
b, {a,c}
Slide 26
L’exemple des acteurs
R(FILM ACTEURS MET-EN-SC
P.Rose Allen Allen
Farrow
Manhattan Keaton Allen
Allen
Broadway
Police Pialat
Terminator Schwar
Vertigo/CNAM, Paris 15
Slide 27
S(FILM ACTEURS)
P.Rose Allen
Farrow
Manhattan Keaton
Allen
Broadway
Police
Terminator Schwarz
Slide 28
UNNEST de S(FILM, ACTEURS)
T (FILM, ACTEUR)
P.Rose Allen
P.Rose Farrow
Manhattan Keaton
Manhattan Allen
Terminator Schwar
NEST de T par acteurs : U = Nest ��������� (T)
U (ACTEUR, FILMS)
Allen P.Rose
Manhattan
Farrow P.Rose
Keaton Manhattan
Schwarz Terminator
Vertigo/CNAM, Paris 16
Bases de Données objet
Slide 29
Bibliographie sommaire
Anne Doucet, Veronique Benzaken : Les SGBD Objets
Claude Delobel, C. Lécluse, P. Richard, Bases de Données: des systèmes relationnels
aux systèmes à objets, Interéditions, IIA, 1991
Michel Adiba, C. Collet, Le SGBD O2, Hermes
Vertigo/CNAM, Paris 17
Slide 30
Objectifs des SGBD Objet
1. manipuler des données de structure riche
2. améliorer le cycle de production de logiciels et les applications
3. être ouverts à d’autres outils: BD relationnelles, Web, Java, Outils d’interface, etc.
Slide 31
Principes des SGBD Objet
1. un modèle riche de données utilisant des valeurs complexes, l’identité d’objet et
l’héritage
2. une bonne intégration grâce à la programmation orienté-objet
Un SGBD objet (SGBDO) a deux langages, un langage de requêtes et un langage de
programmation.
Vertigo/CNAM, Paris 18
Slide 32
ODMG
Objectif: développer des standards et renforcer la portabilité des applications grâce aux
SGBDO.
Les interfaces/architectures standardisées sont les suivantes:
1. un langage de définition des objets ODL
2. un langage de requêtes : OQL
3. une possibilité d’import/export (langage binding) avec des langages comme C++,
Java
4. des liens institutionnels avec OMG (IDL, CORBA) et ANSI SQL3
O2 est compatible ODMG
Slide 33
Objet
Un objet a un identificateur�
et une valeur ou état � . La valeur peut être complexe et est
indépendante de l’identificateur. On peut faire des opérations sur les objets.
Définition:
On définit un ensemble d’attributs � , un ensemble de valeurs atomiques: ������� � , où
les � � sont des domaines de valeurs atomiques (entiers, chaine de caractères) et un
ensemble d’identificateurs d’objets . Un objet est une paire (�� � ), où
�appartient à et
la valeur � est définie comme suit:
� 1) Les éléments de � sont des valeurs.
� 2) Les éléments de sont des valeurs.
� 3) Si � � ������� ��� sont des valeurs et ��� ������� ��� des attributs, alors le n-uplet� ��������� ������� ����������� ainsi que
� 4) l’ensemble� � � ������� ��� � sont des valeurs.
Vertigo/CNAM, Paris 19
Slide 34
Exemples d’Objets
(i0, [époux: i1,
ss_nom: [ss:2234,nom:‘pascal’],
enfants: {i4}])
(i1, [époux: i0,
ss_nom: [ss:4567,nom:‘yasmine’],
enfants: {i4,i5}])
(i6, [nom: ‘turbulence’,
employés: {i1,i2}]
Les valeurs des objets sont construites à partir de valeurs atomiques et d’identificateurs
d’autres objets en utilisant les constructeurs ensemble et tuple (n-uplet) dans n’importe
quel ordre.
Slide 35
Identité et Égalité
Identité: deux objets avec le même identificateur sont identiques:������� ��� � �� � �� �� ����� � � � ��� ��� , ��� � � � � � �� ������ � ����� ��� ��� � � � ��� ��� . La variable������� ��� � �� désigne le même objet que la variable��� � � � � .
Égalité: deux objets avec la même valeur sont égaux (mais pas identiques): ������ est
égal à � ���� et �� � � ��� � � � � � est égal à � � � ��� � � � � � .
Vertigo/CNAM, Paris 20
Slide 36
Égalité en Profondeur
Est-ce que l’objet �� � � ��� � � � � � est égal à l’objet � � � ��� � � � � � ?� Deux objets égaux sont égaux en profondeur.
� Deux objets qui ont les mêmes attributs sont égaux en profondeur si les valeurs
d’attributs sont:
soit égales,
soit des identificateurs d’objets égaux en profondeur.
o1: � � � � � ��� � ��� � �o2: ��� � � � ��� � ��� �o3: ��� ����o4: ��� ����L’objet o1 n’est pas égal à o2, mais o1 est égal en profondeur à o2.
Slide 37
Retour sur l’objet et son identité
Dans le monde réel les entités ont une identité indépendante de leur valeur (état,
propriétés): Toto avait des cheveux noirs, maintenant il est chauve.
Importantes conséquences
� possibilité de référencer les objets.
� permet une représentation élégante du partage
� permet des cycles dans les données
Vertigo/CNAM, Paris 21
Slide 38
Référence
(i0, [époux: i1,
ss_nom: [ss:2234,nom:‘pascal’],
enfants:{i4}])
L’objet i0 réfère
� l’objet i1
� l’ensemble d’objets {i4}
Slide 39
Partage d’objets
Jean a une fille Marie, Suzanne a une fille Marie.
Deux cas sont possibles
1) O1: (i1, [nom: jean, fille : i3]}
O2: (i2, [nom: suzanne, fille : i3])
O3: (i3, [nom: marie, fille : nil])
O1 et O2 partagent O3 (Marie est la fille de Jean et Suzanne).
1) O1: (i1, [nom: jean, fille : i3]}
O2: (i2, [nom: suzanne, fille : i4])
O3: (i3, [nom: marie, fille : nil])
O4: (i4, [nom: marie, fille : nil])
O1 et O2 ont deux filles différentes mais qui ont même nom: O3 et O4 sont deux objets
différents de même valeur.
Vertigo/CNAM, Paris 22
Slide 40
Identité - Partage
Identité d’objets - Avantages:� l’identité d’objets est un outil logique puissant pour exprimer (objet) ou non
(valeur) le partage� gestion des identificateurs invisibles (faite par le système)� pas de redondance et mises à jour plus simples
Simulation en relationnel:� clé = identificateur� gestion des id à la charge du programmeur� contraintes d’intégrité et formes normales
EMPLOYE (No, Nom, NOss,Departement)
DEPARTEMENT (No, Patron, nbemployes)
Slide 41
Définition d’un Objet
Un objet est défini par
� sa valeur et son identificateur
� son type:
– sa structure
– les opérations (méthodes) qu’on peut faire sur des objets de même structure
On regarde pour l’instant la partie structure du type.
Vertigo/CNAM, Paris 23
Slide 42
Types Complexes
On se donne un ensemble de types atomiques (entier, réel, chaîne,...), un ensemble � de
noms de types et un ensemble � de noms d’attributs.
� Un type atomique (INT, STRING) est un type
� Un élément de � est un type
� Si � � ������� � � sont des types, et � � ������� ��� sont des attributs, alors� � � � � � ������� ��� � � ���
est un type
� Si � est un type, alors� � � est un type.
Slide 43
Schéma de la base
Ensemble des types des objets.
A chaque type construit à partir d’autres types, on donne un nouveau nom, i.e. un
élément de � .
Vertigo/CNAM, Paris 24
Slide 44
Exemple de schéma
Parent : [époux: Parent, nom: Personne, enfants: Enfants]
Enfants : {[nom : string, age: integer]}
Personne : [ss: [sexe: bit, année : integer, mois: integer, ...]
nom: string]]
Slide 45
Types: Exemple
La valeur (n-uplet)
[époux: i1,
ss_nom: [ss: 09234111, nom: ‘‘toto’’],
enfants: {i2,i3}]
est de type
tuple (époux: PERSONNE,
ss_nom: tuple (ss:INT,nom:STRING)
enfants: set(PERSONNE))
tuple (set) est une autre notation pour le constructeur nuplet(ensemble). i1,i2 et i3
sont des identificateurs d’objets de type PERSONNE.
Vertigo/CNAM, Paris 25
Slide 46
Types et Classes
Les deux notions sont très proches. La notion de classe dépend du SGBDO.
� Les objets sont regroupés ensemble par structure et comportement (méthodes)
� Une classe
– permet de regrouper des objets de même type
– est une usine à objets: elle permet de créer des objets d’un type (new)
– un objet est une instance d’un type, est membre d’une classe
– l’extension de la classe � est l’esnemble des objets de type �� dans certains SGBD, tout objet créé dans une classe est stocké: la classe � est
confondue avec son extension.
� dans d’autres SGBD, les objets créés dans une classe ne sont pas forcément stockés.
Slide 47
Traitements sur les Données: Relationnel et OO
On a une Base d’étudiants:
On veut inscrire Julien en BD
Relationnel: appels SQL à la base dans le programme d’applications
Orienté-Objet: Méthode “inscription” dans la classe Etudiants
Vertigo/CNAM, Paris 26
Slide 48
Traitements sur les Données: Relationnel et OO
Relationnel:
données dans la base, programmes dans une bibliothèque
conception et spécification indépendantes des programmes et des données: toutedonnée est accessible à tout programme
Orienté-Objet:
données et programmes dans la base
données accessibles seulement par méthodes de la même classe
Slide 49
Méthodes
Type objet = structure + méthodes: Les méthodes d’un type sont l’ensemble de
fonctions (procédures) applicables aux objets ayant ce type.
La signature d’une méthode est composée du� nom de la méthode: inscription� type des arguments: Cours� type du résultat: Boolean
Exemple: classe ETUDIANT avec méthode
inscription(cours: Cours): Boolean qui inscrit un étudiant à un cours
et retourne true si l’inscription est possible (false sinon).
Une autre notation:
inscription: ETUDIANT x COURS -> Bool
Vertigo/CNAM, Paris 27
Slide 50
Message
L’envoi d’un message à un objet permet d’exécuter un traitement:
Message: objet � méthode(a1,...,an)
“objet” est l’oid de l’objet à qui on envoie le message, “méthode” est le nom de la
méthode à exécuter sur l’objet, “a1,...,an” les arguments éventuels
Exemples:
� � � � � � � � � � � � � � � ��� � � �
autre exemple: si toto est un objet de type PERSONNE, l’envoi du message
� � � � � ��� �à l’objet toto donne son âge.
Slide 51
Schéma d’une Base de Données
Un schéma d’une base est l’ensemble des types (structures et méthodes) décrivant les
objets stockés dans la base.
Exemple:
class PERSONNE
type tuple (époux: PERSONNE,
ss_nom: tuple (ss:INT,nom:STRING)
enfants: set(PERSONNE))
method âge: INT
class ENTREPRISE
type tuple (nom: STRING,
employés: set(PERSONNE))
Vertigo/CNAM, Paris 28
Slide 52
Encapsulation
L’interface d’une classe C est un ensemble de méthodes visible à l’extérieur: par les
objets des autres classes (qui envoient des messages aux objets de la classe C). Un objet
ne peut être manipulé que via son interface (encapsulation). À l’extérieur de la classe C,
� on voit la signature des méthodes de C
� on ne voit ni la structure des objets de C ni le corps des méthodes de C.
Slide 53
Intérêts de l’encapsulation: Programmation Modulaire
Méthodologie de spec de logiciels
Séparation entre l’implantation et la spécification
Regroupement dans un même module des données et de leurs traitements
Plusieurs implantations pour une même spécification
Vertigo/CNAM, Paris 29
Slide 54
Modèle hybride Objet-ValeurCompromis impératif/objet
On a des objets et des valeurs:Une valeur
� est universelle (ne dépend pas de l’appli)
� est un élément interprété par le système (built-in)
� n’a pas de comportement (n’est pas dans une classe), mais on peut lui appliquer desfonctions
� ne peut pas changer
� n’a pas d’identificateur (n’est pas partageable)
� peut être complexe, et référencer des objets
� préexiste (n’ont pas à être créées ni détruites)
� peut être en nombre infini (e.g. les entiers)
Slide 55
Objets vs Valeurs
Un objet (abstrait)
� est une abstraction spécifique d’une appli
� appartient à une classe
� a un identificateur qui ne peut pas changer
� a un état (une valeur, des propriétés, des attributs) qui peut changer
� a un comportement complexe (méthodes, héritage)
� doit être créé (éventuellement détruit)
� existe seulement en nombre fini
Vertigo/CNAM, Paris 30
Slide 56
ODMG
interface Personne (extent personnes keys nom) {
attribute String nom;
attribute Short âge;
relationship Set(Parent) parents
inverse Parent::enfants;
};
interface Parent: Personne (extent parents) {
relationship Set(Personne) enfants
inverse Personne::parents;
relationship Parent époux inverse Parent::époux;
}
Bases de Données Objet: Héritage
Vertigo/CNAM, Paris 31
Slide 57
Héritage: Exemple
class PERSONNE
type tuple(nom:STRING, naiss: DATE, sexe: STRING)
method âge: INT
impots(declaration : DECLARATION): INT
class EMPLOYÉ
type tuple(nom:STRING, naiss: DATE, sexe: STRING,
embauche: DATE)
method âge: INT,
impots(declaration : DECLARATION): INT
salaire: INT
EMPLOYÉ hérite de (est une sous-classe de, spécialise) PERSONNE
Slide 58
Pourquoi l’Héritage
type PERSONNE, sous-type EMPLOYÉ;
spécialisaton et généralisation: chaque employé est une personne avec une date
d’embauche (raffinement de la structure) et un salaire (rajout de code)
réutilisation de code: l’age de l’employé est calculé de la même façon que celui de la
personne; age a le même nom et le même code. Les méthodes d’une classe sont
réutilisées dans ses sous-classes.
surcharge: les impots d’un employé ne sont pas calculés comme ceux d’une personne;
impot a même nom, mais pas même code.
spécification incrémentale: on peut ajouter d’autres sous-classes à la classe
PERSONNE (et à la classe EMPLOYÉ)
Vertigo/CNAM, Paris 32
Slide 59
Un modèle d’héritage: structure
On définit un ordre partiel sur les types (classes), ��� � � , de la façon suivante:
n-uplet: Si � et � � sont des n-uplets tels que � est un “raffinement” de � � (mêmes noms
d’attributs plus éventuellement d’autres) et pour tout attribut � en commun, le type
de � dans � est un sous-type de � dans � � , alors � est un sous-type de � � .ensemble: Si � et � � sont deux types ensemble ( � � � � � � , � � � � � � � � ), et � ��� � � � , alors �
est un sous-type de � � .
Slide 60
Un modèle d’héritage: Méthodes
Afin de vérifier si un schéma est bien-formé (toutes les méthodes définies dans une classe
peuvent être appliquées aux objets des sous-classes), on définit un ordre partiel sur les
(signatures de) méthodes de la façon suivante (condition de covariance):
Quelle que soit � une méthode d’une classe���
de signature � � ��� ����� � � � � � � � ilexiste une méthode � dans chaque sous-classe
�de signature � ��� ����� � � � � � telle
que (1) pour tout�, � � � � � � et � � � � .
Vertigo/CNAM, Paris 33
Slide 61
Polymorphisme d’inclusion
L’héritage définit un polymorphisme d’inclusion:
polymorphisme: une fonction avec le même code s’applique à des types différents: ici à
des types d’une hiérarchie d’héritage: � ��� � � la methode age calcule l’age.
sémantique par inclusion (interprétation du sytème de types) : un employé est une
personne.
remarque: cela ne veut pas dire que tout objet créé (et stocké) dans la classe
EMPLOYÉ est automatiquement créé (et stocké) dans la classe PERSONNE
Slide 62
Spécification de l’Héritage
Inférence de type: par inspection à la compilation, le système découvre qu’une classe
est une sous-classe d’une autre.
Déclaration explicite: on indique le raffinement et tous les attributs (et méthodes) de
PERSONNE sont automatiquement hérités
class PERSONNE
type tuple(nom:STRING, date: DATE, sexe: BOOL)
class EMPLOYÉ inherits PERSONNE
type tuple(diplômes: set(STRING))
Vertigo/CNAM, Paris 34
Slide 63
Héritage Multiple
class PERSONNE
type tuple(nom: STRING, ss: INT, naissance: INT)
method âge: INT
class PROFESSEUR inherits PERSONNE
type tuple(cours:set(COURS), salaire:INT)
method nbheures (declaration: DECLARATION): INT
class ÉTUDIANT inherits PERSONNE
type tuple (cours:set(COURS), numero-carte:INT)
method nbheures (declaration: DECLARATION): INT
class ASSISTANT inherits PROFESSEUR, ÉTUDIANT
rename cours in PROFESSEUR donne_cours
nbheures in ÉTUDIANT nbheures-suivies
type tuple (durée_contrat: INT)
method temps-recherche: INT
ASSISTANT hérite des attributs et méthodes de PERSONNE ainsi que de ses deux
Slide 64
superclasses ÉTUDIANT et PROFESSEUR � héritage multiple.
S’il y a conflit de nom (héritage répété), il faut renommer: ASSISTANT hérite deux
attributs de même nom cours, et deux méthodes de même nom heures.
Vertigo/CNAM, Paris 35
Slide 65
Typage
Système de types : Compromis entre puissance et souplesse (typage faible) et sécurité
(typage fort)
Typage Fort: vérification des types� classement et représentation des données suivant leur structure� meilleure spécification et détection des erreurs
Typage dynamique ou statique
dynamique (vérification à l’exécution): on ne connait le type d’une fonction
polymorphe qu’à l’execution; la surcharge demande une vérification de type
pendant l’exécution. Cela impose que les données conservent une information
sur leur type et ralentit l’exécution.
statique (vérification à la compilation): moins de souplesse et de puissance, mais
efficacité d’exécution: on ne garde pas d’info sur les types apres la compil.
Slide 66
Puissance de la surcharge
On veut calculer la surface de différents objets géométriques:
sans objets avec objets
----------- -----------
for all g in geo_set do for all g in geo_set
case of type(g): g->surface
cercle: surface_cercle(g)
triangle: surface_triangle(g)
rectangle: surface_rectangle(g)
� le programmeur n’a pas besoin de connaître le type de l’objet qu’il veut afficher
� l’adjonction d’un nouveau type d’objet, la modification d’une méthode de calcul de
la surface se fait sans modification ni recompilation du programme appelant la
méthode d’affichage.
Vertigo/CNAM, Paris 36
Slide 67
Fonctionnement de la surcharge (résolution tardive)
On veut calculer la surface de différents objets géométriques:
� On définit la hiérarchie Objet-geo avec pour sous-classes : cercle, triangle, rectangle.
� On écrit une méthode de nom surface dans la classe objet-geo qui ne fait rien
� Pour chacune des sous-classes, on redéfinit une méthode de même nom
� dans le programme qui appelle la méthode surface, le type de g n’est pas connu à la
compilation
� au moment de l’appel de la méthode surface, i.e. à l’exécution, le système détermine
le type, i.e. la sous-classe (résolution tardive) et fait la correspondance entre le nom
(surface) et le corps de la méthode (lien dynamique).