36
Vertigo/CNAM, Paris 1 Slide 1 Valeur C, 19 722, BD avancées, Paris BASES DE DONNÉES Orienté-objet M. Scholl [email protected] 2002/2003

BASES DE DONNÉES Objet - cedric.cnam.frcedric.cnam.fr/vertigo/Cours/Valeur-C/slides-oo.pdf · Dans le modèle relationnel, on ne peut que 1. appliquer le constructeur nuplet à des

Embed Size (px)

Citation preview

Vertigo/CNAM, Paris 1

Slide 1

Valeur C, 19 722, BD avancées, ParisBASES DE DONNÉES Orienté-objet

M. Scholl

[email protected]

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).