Programmation Orientée objet en C++
Chapitre 1. Vocabulaire
Chapitre 2. Principes de la programmation objet
2.1. La programmation procédurale
2.2. Les objets
2.3. L'héritage
2.4. Le polymorphisme
2.5. Les langages orientés objets
Chapitre 3. Du C au C++
Chapitre 4. Les classes
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

2.4. Le polymorphisme

Les méthodes dessiner( ) et effacer( ) sont polymorphes. Leur nom est similaire dans les trois classes dérivées, mais dessiner un cercle est différent de dessiner un carré ou un triangle. Ainsi le polymorphisme se résume par : un même nom, plusieurs implémentations.
A chaque fois que l’on appelle une des deux méthodes dessiner ou effacer, il est nécessaire que l’on appelle celle qui est associée à la forme géométrique correspondante. Ce choix ne peut se faire qu’à l’exécution, on a donc une liaison dynamique. La détermination du choix de la bonne fonction se fait de manière automatique. On ne s’en s’occupe pas au moment du codage.

En programmation procédurale, on aurait (cliquez ici) :

En POO (Programmation Orientée Objet), on écrit (cliquez ici) :

Selon les langages, il est nécessaire de préciser si une méthode doit être polymorphe ou pas. C’est le cas en C++, ça ne l’est pas en Java ou en SmallTalk.

Les avantages du polymorphisme sont les suivants :
- Les fonctions ayant la même sémantique ont le même nom,
- Le programmation est plus souple. Si on veut ajouter une classe Rectangle…y’a qu’à ! Il suffit d’ajouter les méthodes dessiner et effacer dans cette classe. Dans le cas de la programmation procédurale, il aurait fallu reprendre le code et l’enrichir.

En résumé : Le polymorphisme permet d'accéder à un objet (et donc aux méthodes) d'une sous-classe à partir de la classe de base, et ce même si cet objet est inconnu lors de la compilation (il devra néanmoins être connu au moment de l'exécution !).

 

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante