Le polymorphisme
CHAPITRE 13
278
méthode affiche, on peut définir la méthode affiche de la classe Point de manière
qu’elle :
• affiche les coordonnées (action commune à toutes les classes),
• fasse appel à une autre méthode (nommée par exemple identifie) ayant pour vocation
d’afficher les informations spécifiques à chaque objet. Ce faisant, nous supposons que chaque descendante de Point redéfinira identifie de façon appropriée (mais elle n’aura
plus à prendre en charge l’affichage des coordonnées).
Cette démarche nous conduit à définir la classe Point de la façon suivante :
class Point
{ méthode Point (int x, int y) { abs := x ; ord := y }
méthode affiche
{ identifie
écrire « Mes coordonnees sont : », x, « », y
}
méthode identifie
{ écrire «Je suis un point »
}
entier abs, ord
}
Dérivons une classe Pointcol en redéfinissant de façon appropriée la méthode
identifie :
classe Pointcol dériveDe Point
{ méthode Pointcol (entier x, entier y, entier c)
{ base (x, y)
couleur := c
}
méthode identifie
{ écrire «Je suis un point coloré de couleur », couleur
}
entier couleur
}
Considérons alors ces instructions :
Pointcol pc
pc := Création Pointcol (8, 6, 2)
pc.affiche
L’instruction pc.affiche entraîne l’appel de la méthode affiche de la classe Point (puisque cette méthode n’a pas été redéfinie dans Pointcol). Mais dans la méthode affiche de
Point, l’instruction identifie appelle la méthode identifie de la classe correspondant
à l’objet effectivement concerné (autrement dit, celui de référence courant). Comme ici, il
s’agit d’un objet de type Pointcol, il y aura bien appel de la méthode identifie de
Pointcol.
Précédent

- 301/370

Suivant