Avant  de  vous  lancer  dans  de  l’héritage  multiple,  tentez  de  voir  s’il  est  possible  de  transformer  la  hiérarchie  en 
héritage simple, d’utiliser des classes instanciant comme attributs d’autres classes ou d’utiliser les interfaces. Il n’y a 
quasiment jamais d’obligation à utiliser l’héritage multiple. 
10. Le polymorphisme 
a. Principe 
Quand  vous  héritez  d’une  classe  vous  pouvez  depuis  un  objet  de  la  nouvelle  classe  accéder  directement  aux 
méthodes des superclasses : de fait elles font toutes partie de la classe dérivée. Pourtant il est probable que si vous 
avez  dérivé  de  la  superclasse  c’est que vous avez trouvé un avantage à rajouter des nouveaux attributs et des 
nouvelles méthodes. Certaines de ces nouvelles méthodes remplacent peut­être les méthodes de la superclasse ou y 
font appel. 
Le polymorphisme des méthodes est un autre concept essentiel de la programmation objet. Polymorphisme signifie 
qu’une même chose peut prendre plusieurs formes. Certains animaux en font leur spécialité comme les abeilles : chez 
une même espèce, il y a trois formes d’individus, la femelle (reine), les mâles (faux­bourdon) et les ouvrières (femelles 
stériles). Trois formes différentes pour la même espèce, ou plutôt la même larve à la base. 
Du côté de l’objet, le polymorphisme permet de créer plusieurs méthodes qui portent le même nom. On distingue trois 
types de polymorphisme. 
b. Le polymorphisme ad hoc 
Généralement dans un langage procédural, vous ne pouvez avoir qu’une seule procédure portant le même nom dans 
un même programme. Si le sous­programme Afficher() doit être utilisé pour des données différentes, vous devez soit 
l’adapter  en  conséquence,  soit  créer  autant  de  sous­programme  Afficher_xxx()  où  xxx  nommerait  le  rôle  exact  du 
sous­programme. 
En objet, comme chaque définition de classe est indépendante de sa voisine, vous pouvez réutiliser les mêmes noms 
de méthodes dans des classes différentes, puisqu’elles n’ont aucun rapport entre elles. 
Classe lion hérite de Carnivore 
... 
méthodes publiques 
Procédure affiche_nom() 
... 
FinClasse 
Classe Ecran 
... 
méthodes publiques 
Procédure affiche_nom() 
... 
FinClasse
c. Le polymorphisme d’héritage 
Vous avez le droit, et c’est souvent le cas, de redéfinir une méthode d’une superclasse dans une classe dérivée, avec 
le même nom de méthode. Une classe Object comme en Java définit des méthodes de base, qui sont redéfinies dans 
les classes dérivées en fonction des nouvelles propriétés de celle­ci. Un exemple classique est un jeu d’échecs et ses 
pièces. Chaque pièce du jeu a un nombre plus ou moins limité de mouvements autorisés. 
Une classe pièce va définir une méthode mouvement(). Les classes dérivées pion, fou, tour, cavalier, roi et reine vont 
contenir aussi une méthode mouvement() qui déterminera leurs mouvements propres : 
Classe Pièce 
... 
méthodes publiques 
Procédure mouvement() 
Début 
Afficher "Mouvement de Pièce" 
FinProc 
... 
FinClasse 
Classe Tour hérite de Pièce 
... 
- 12 -
© ENI Editions - All rigths reserved - Jonifar lina
205
Précédent

- 205/220

Suivant