BASES DE DONNÉES Objet - Cedric

Transcription

BASES DE DONNÉES Objet - Cedric
Vertigo/CNAM, Paris
1
Valeur C, 19 722, BD avancées, Paris
BASES DE DONNÉES Orienté-objet
Slide 1
M. Scholl
[email protected]
2002/2003
Vertigo/CNAM, Paris
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
Slide 2
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
Introduction
Problématique
A) Applications classiques (Gestion)
Les données sont simples :
Slide 3
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
B) Besoins actuels
1. information multi-media
Slide 4
2. de structure très riche
3. traitements complexes et très évolutifs
B) Autres besoins actuels
1. données hétérogènes
Slide 5
2. de nombreuses sources de données
3. intégration souple et rapide d’une nouvelle source
4. données semi-structurées
3
Vertigo/CNAM, Paris
4
Les SGBD relationnels face à ces besoins
1. simples, langage déclaratif, standard SQL
Slide 6
2. MAIS mauvaises performances, parce que
pauvreté de représentation,
mauvaise intégration SQL/L.P. : 2 paradigmes
Pauvreté de représentation relationnelle
Illustration sur un exemple
PARENTS
Slide 7
( NOM, EPOUX,
toto
toto
toto
toto
toto
jean
jean
lulu
lulu
lulu
noemie
pussy
marie
marie
ENFANT)
jules
eve
jeremie
julien
medor
lucien
valentin
Vertigo/CNAM, Paris
5
PROBLEMES
1. Duplication (1e forme normale): pour chaque enfant du même couple, un nuplet
2. problèmes de type
Slide 8
(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
Quelques systèmes commerciaux
Objecstore (Object Design)
Slide 9
Versant
Poet
etc.
Modèles par valeurs/objet
MODELES par VALEUR : relationnel, N1NF, relationnel étendu aux Types abstraits
(SQL2)
Slide 10
Un objet est
représenté par sa valeur
identifié par une partie de sa valeur (clé)
Vertigo/CNAM, Paris
7
MODELES OBJET
1. un objet
Slide 11
a une valeur
est identifié par un oid indépendant de sa valeur
2. puissance de structuration supérieure à celle des modèles valeur
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)
Slide 12
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
subsectionModèle relationnel étendu aux TAD
Pourquoi l’abstraction des données?
1. Méthodologie de spécification de logiciels de bonne qualité
Slide 13
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
Dans la suite, un TA est défini par
1. une structure
2. un ensemble de fonctions
Slide 14
Une fonction est définie par sa signature :
F : T1, T2, ..., Tn
T
F : 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 fonctions
en particulier pas d’axiomes
8
Vertigo/CNAM, Paris
9
Relationnel étendu aux TAD
Slide 15
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
Relationnel étendu aux TAD: un exemple
TYPE
Slide 16
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
Schéma de la base
COMMUNES (Nom, nbhab, solde-pop,aire,geo)
AIRES (Id, Type, nbcommunes,nbhab,geo)
Slide 17
Type a pour domaine
{periurbain,route, echangeur,autoroute}
Les attributs geo ont pour domaine (type) : ZONE
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’’
Slide 18
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
10
Vertigo/CNAM, Paris
11
3) Evolution de la population dans les communes situées à moins de 15km d’1 commune
dont le nb d’habitants > 100 000
Slide 19
Select C1.solde-pop
From COMMUNES C1, COMMUNES C2
Where C2.nbhab > 100 000
And C1.geo Intersect Extent(C2.geo)
Modèle N1NF
Une autre notation
Les relations N1NF sont aussi appelées
relations imbriquées (nested relations)
Slide 20
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
Génération de valeurs complexes
On part de valeurs atomiques (de type ou domaine entier, chaine de caractères, etc...)
Slide 21
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
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
Slide 22
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
Relation non sous 1e forme normale
Un attribut peut avoir pour valeur :
1. une valeur atomique
Slide 23
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
L’exemple des Parents
PARENTS
Slide 24
(NOM, EPOUX, ENFANTS)
toto lulu
jules
eve
jeremie
toto noemie julien
toto pussy medor
jean marie lucien
valentin
Vertigo/CNAM, Paris
14
Le NEST
R
Slide 25
(A,
a
a
b
b
B
b
c
a
c
)
{[A:char, B: char]}
S = NestA (R)
S
{[A:char, C: {char}]}
(A,
C)
a, {b,c}
b, {a,c}
L’exemple des acteurs
R(FILM
P.Rose
Manhattan
Slide 26
ACTEURS
Allen
Farrow
MET-EN-SC
Allen
Keaton
Allen
Allen
Broadway
Police
Terminator Schwar
Pialat
Vertigo/CNAM, Paris
S(FILM
P.Rose
Manhattan
Slide 27
15
ACTEURS)
Allen
Farrow
Keaton
Allen
Broadway
Police
Terminator Schwarz
UNNEST de S(FILM, ACTEURS)
T (FILM,
P.Rose
P.Rose
Manhattan
Manhattan
Terminator
Slide 28
ACTEUR)
Allen
Farrow
Keaton
Allen
Schwar
NEST de T par acteurs : U = Nest (T)
U (ACTEUR,
Allen
Farrow
Keaton
Schwarz
FILMS)
P.Rose
Manhattan
P.Rose
Manhattan
Terminator
Vertigo/CNAM, Paris
16
Bases de Données objet
Bibliographie sommaire
Anne Doucet, Veronique Benzaken : Les SGBD Objets
Slide 29
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
Objectifs des SGBD Objet
1. manipuler des données de structure riche
Slide 30
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.
Principes des SGBD Objet
1. un modèle riche de données utilisant des valeurs complexes, l’identité d’objet et
l’héritage
Slide 31
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
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
Slide 32
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
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:
Slide 33
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.
des attributs, alors le n-uplet
3) Si des valeurs et sont
ainsi que
sont des valeurs.
4) l’ensemble 2) Les éléments de sont des valeurs.
Vertigo/CNAM, Paris
19
Exemples d’Objets
Slide 34
(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.
Identité et Égalité
Slide 35
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): égal à et est égal à .
est
Vertigo/CNAM, Paris
20
est égal à l’objet ?
Est-ce que l’objet Égalité en Profondeur
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,
Slide 36
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.
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.
Slide 37
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
Référence
Slide 38
(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}
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])
Slide 39
O1 et O2 partagent O3 (Marie est la fille de Jean et Suzanne).
1) O1:
O2:
O3:
O4:
(i1,
(i2,
(i3,
(i4,
[nom:
[nom:
[nom:
[nom:
jean, fille : i3]}
suzanne, fille : i4])
marie, fille : nil])
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
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
Slide 40
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)
Définition d’un Objet
Un objet est défini par
sa valeur et son identificateur
Slide 41
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
Types Complexes
On se donne un ensemble de types atomiques (entier, réel, chaîne,...), un ensemble
noms de types et un ensemble de noms d’attributs.
de
Un type atomique (INT, STRING) est un type
Slide 42
Un élément de
est un type
sont des types, et
Si est un type
Si est un type, alors sont des attributs, alors
est un type.
Schéma de la base
Slide 43
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
Exemple de schéma
Parent : [époux: Parent, nom: Personne, enfants: Enfants]
Slide 44
Enfants : {[nom : string, age: integer]}
Personne : [ss: [sexe: bit, année : integer, mois: integer, ...]
nom: string]]
Types: Exemple
La valeur (n-uplet)
[époux: i1,
ss_nom: [ss: 09234111, nom: ‘‘toto’’],
enfants: {i2,i3}]
Slide 45
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
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
Slide 46
– 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
confondue avec son extension.
est
dans d’autres SGBD, les objets créés dans une classe ne sont pas forcément stockés.
Traitements sur les Données: Relationnel et OO
Slide 47
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
Traitements sur les Données: Relationnel et OO
Relationnel:
données dans la base, programmes dans une bibliothèque
Slide 48
conception et spécification indépendantes des programmes et des données: toute
donné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
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
Slide 49
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
Message
L’envoi d’un message à un objet permet d’exécuter un traitement:
Slide 50
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.
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:
Slide 51
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
Encapsulation
Slide 52
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.
Intérêts de l’encapsulation: Programmation Modulaire
Méthodologie de spec de logiciels
Slide 53
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
Modèle hybride Objet-Valeur
Compromis 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)
Slide 54
n’a pas de comportement (n’est pas dans une classe), mais on peut lui appliquer des
fonctions
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)
Objets vs Valeurs
Un objet (abstrait)
est une abstraction spécifique d’une appli
appartient à une classe
Slide 55
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
ODMG
Slide 56
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
Héritage: Exemple
Slide 57
class PERSONNE
type tuple(nom:STRING, naiss: DATE, sexe:
method âge: INT
impots(declaration : DECLARATION):
class EMPLOYÉ
type tuple(nom:STRING, naiss: DATE, sexe:
embauche: DATE)
method âge: INT,
impots(declaration : DECLARATION):
salaire: INT
STRING)
INT
STRING,
INT
EMPLOYÉ hérite de (est une sous-classe de, spécialise) PERSONNE
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)
Slide 58
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
Un modèle d’héritage: structure
On définit un ordre partiel sur les types (classes), , de la façon suivante:
Slide 59
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 (
est un sous-type de .
,
), et , alors Un modèle d’héritage: Méthodes
Slide 60
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 existe une méthode dans chaque sous-classe de signature et .
que (1) pour tout , il
telle
Vertigo/CNAM, Paris
33
Polymorphisme d’inclusion
L’héritage définit un polymorphisme d’inclusion:
Slide 61
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
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.
Slide 62
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
Héritage Multiple
Slide 63
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
superclasses ÉTUDIANT et PROFESSEUR
Slide 64
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
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
Slide 65
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.
Puissance de la surcharge
On veut calculer la surface de différents objets géométriques:
Slide 66
sans objets
----------for all g in geo_set do
case of type(g):
cercle: surface_cercle(g)
triangle: surface_triangle(g)
rectangle: surface_rectangle(g)
avec objets
----------for all g in geo_set
g->surface
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
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
Slide 67
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).
36

Documents pareils