“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 281 — #291
i
i
i
i
i
i
i
i
6.3 Les classes comme abstractions incrémentales
281
6.3.1 Le graphe d’héritage
L’héritage est une manière de construire de nouvelles classes à partir des classes
existantes. Il définit les attributs et les méthodes qui sont disponibles dans la nouvelle
classe. Nous restreignons notre discussion de l’héritage aux méthodes. Les mêmes
règles s’appliquent aux attributs. Les méthodes disponibles dans une classe C sont
définies par une relation de précédence sur les méthodes qui apparaissent dans la
hiérarchie de classes. Nous appelons cette relation la relation de redéfinition :
– Une méthode dans une classe C redéfinit toute les méthodes avec la même
étiquette dans toutes les superclasses de C.
Une classe peut hériter d’une ou plusieurs classes, qui apparaissent après le mot
clé from dans sa déclaration. Une classe qui hérite exactement d’une classe utilise
l’héritage simple. Une classe qui hérite de plusieurs classes utilise l’héritage multiple.
Une classe B est une superclasse d’une classe A si :
– B apparaît dans la déclaration from de A, ou
– B est une superclasse d’une classe qui apparaît dans la déclaration from de A.
Une hiérarchie de classe avec la relation de superclasse peut être vue comme un graphe
orienté dont la classe définie est la racine. Les arêtes sont dirigées vers les sous-classes.
Il y a deux conditions pour que l’héritage soit légal. D’abord, la relation d’héritage
doit être orientée et acyclique. La hiérarchie suivante n’est pas admise :
class A from B ... end
class B from A ... end
Ensuite, si on barre toutes les méthodes redéfinies, chaque méthode qui reste devra
avoir une étiquette unique et être définie dans une seule classe de la hiérarchie. Donc,
la classe C dans l’exemple suivant est illégale parce qu’il reste deux méthodes avec
étiquette m :
class A1 meth m(...) ... end end
class B1 meth m(...) ... end end
class A from A1 end
class B from B1 end
class C from A B end
La figure 6.4 montre cette hiérarchie et une autre légèrement différente qui est légale.
La classe C ci-dessous est illégale aussi, parce qu’il y a deux méthodes m disponibles
dans C :
class A meth m(...) ... end end
class B meth m(...) ... end end
class C from A B end
© Dunod – La photocopie non autorisée est un délit
Précédent

- 296/370

Suivant