4.2 Polymorphisme
- Affectation de références dans un arbre
d’héritage
- Upcast : une référence
d’une classe B peut référencer toute
instance de la classe B ou de ses classes
dérivées
-
Downcast : une référence d’une classe
D dérivée d’une classe B peut recevoir une référence de la classe B si et seulement si :
- L’objet référencé est bien du type D ou d’un de ses types dérivés
- Le changement de type doit être explicite (en anglais,
cast) vers le nouveau type (D)
précédent suivant
Le polymorphisme revêt plusieurs aspects en matière de
programmation. Nous prendrons la définition de [Armstrong, 2006] :
« Different classes may respond to the same message and each implement it
appropriately ». L’opérateur +
permet une approche simple de cette propriété. En effet, le même opérateur peut
être utilisé avec des types différents (entier ou en virgule flottante). La
réalisation de 1 + 2 n’est pas la même que celle de 1.0 + 2. Le symbole plus dénote l’addition mais ne
s’adresse pas au même type de données.
La possibilité de généraliser ou spécialiser des classes
donne une relation qui se traduit par un arbre d’héritage. Le sommet de
cet arbre correspond à la classe la plus générale et les feuilles représentent
les classes les plus spécialisées.
La possibilité de mettre la référence d’un objet
d’une classe dérivée une référence de la classe parente est un aspect
objet du polymorphisme. Cette opération est appelée Upcast car l’arbre d’héritage est parcouru du
bas vers le haut.
Réciproquement, lorsqu’une référence d’un objet
d’une classe dérivée a été mise dans une variable pouvant recevoir une
référence sur un objet de la classe de base, nous pouvons mettre cette
référence dans une variable qui peut contenir une référence sur un objet de la
classe dérivée. Cette opération est appelée Downcast car l’arbre d’héritage est parcouru du
haut vers le bas. Christian Bac, Denis Conan, Télécom
SudParis, CSC 4002, Octobre 2015
|