next up previous contents
Next: Associer un nom à Up: Héritage simple Previous: Utiliser ou hériter ?

Relation d'héritage

Précisons un peu la terminologie: on dira aussi bien A hérite de B que B est un ancêtre de A. On dit aussi parfois (en smalltalk par exemple, que A est une sousclasse de B ou que B est une superclasse de A, mais la terminologie ``officielle du C++'' est A est une classe dérivée de B, ou de façon équivalente que B est une classe de base de A. Il est souvent utile de représenter cette relation d'héritage sous forme graphique:

picture442

A est une classe de base pour B, C, D, B est une classe de base pour C

Il est parfois utile de distinguer entre héritage et l'héritage direct: la relation d'héritage est la fermeture transitive de la relation d'héritage direct.

Alors qu'en smalltalk, on parle de superclasse et de sousclasse pour décrire cette relation d'héritage (la classe des avions est une superclasse de la classe des avions à réaction, ou la classe des avions à réaction est une sous-classe de la classe des avions), en C++ on parlera plutôt de classe de base et de classe dérivée.

Dans le cas où une classe ne peut hériter directement que d'une seule classe, on parlera d'héritage simple.

   figure461
Figure 5.1: héritage simple et multiple

Dans ce cas la relation d'héritage est une relation linéaire (chaque sommet a au plus un unique antécédent): si on considère l'ensemble des ancêtres d'une classe A est une ensemble totalement ordonné par la relation d'héritage. Par contre pour l'héritage multiple, l'ensemble des ancêtres de A est un ordre partiel.




Mon Oct 20 14:02:48 MET 1997