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 (fauxbourdon) 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 sousprogramme Afficher() doit être utilisé pour des données différentes, vous devez soit
l’adapter en conséquence, soit créer autant de sousprogramme Afficher_xxx() où xxx nommerait le rôle exact du
sousprogramme.
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 celleci. 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
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 (fauxbourdon) 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 sousprogramme Afficher() doit être utilisé pour des données différentes, vous devez soit
l’adapter en conséquence, soit créer autant de sousprogramme Afficher_xxx() où xxx nommerait le rôle exact du
sousprogramme.
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 celleci. 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
