Cpp4 : polymorphisme

399 vues

Publié le

c++ : polymorphisme

Publié dans : Logiciels
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
399
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Cpp4 : polymorphisme

  1. 1. Introduction au C++ POLYMORPHISME M. DIENG Abdoulaye
  2. 2. Le polymorphisme 1. Définition et intérêt 2. Liaison statique 3. Liaison dynamique 4. Méthode virtuelle pure 5. Classe abstraite
  3. 3. Définition et intérêt • Le polymorphisme désigne la faculté pour un pointeur, une référence, un opérateur ou une méthode de se comporter différemment suivant le contexte. • Le polymorphisme permet de manipuler d’une façon uniforme un ensemble d’objets appartenant à une même hiérarchie de classes
  4. 4. Liaison statique • Connecter un appel de fonction à un corps de fonction est appelé liaison (ou binding en anglais) • Quand la liaison est effectuée avant que le programme ne soit exécuté, elle est appelée liaison statique ( ou early binding). • Avec une liaison statique, l’appel d’une méthode pour un objet pointé conduit à invoquer la méthode correspondant au type du pointeur, et non pas au type effectif de l’objet pointé.
  5. 5. Liaison dynamique • La liaison dynamique est le mécanisme qui lie le corps de la fonction lors de l’exécution. • Avec une liaison dynamique, l’appel d’une méthode pour un objet pointé conduit à appeler la méthode correspondant au type effectif de l’objet pointé. • C++ utilisant par défaut la liaison statique, toute méthode à liaison dynamique doit être explicitement signalée. • Utiliser le mot-clef virtual devant la déclaration de la méthode à liaison dynamique (appelée aussi méthode virtuelle). • Ce mot-clef ne doit pas être utilisé devant la définition de la méthode, ni devant les redéfinitions dans les sous-classes.
  6. 6. Méthode virtuelle pure • Certaines méthodes sont « trop » générales pour pouvoir être implémentées. • Exemple : un cercle et un rectangle ont tous une aire, mais la méthode de calcul est différente d’une figure à l’autre. • Solution : déclarer la méthode aire() dans la classe parente Figure sans lui donner d’implémentation. • Syntaxe de la déclaration d’une méthode virtuelle pure : virtual <typeDeRetour> <nomMéthode>(<arg>) = 0;
  7. 7. Classe abstraite • Toute classe contenant (au moins) une méthode virtuelle pure est appelée classe abstraite. • Une classe abstraite ne peut être instanciée. • Toute classe non abstraite dérivant d’une classe abstraite doit implémenter toutes les méthodes virtuelles pures.

×