SlideShare une entreprise Scribd logo
1  sur  7
Introduction au C++ 
POLYMORPHISME 
M. DIENG Abdoulaye
Le polymorphisme 
1. Définition et intérêt 
2. Liaison statique 
3. Liaison dynamique 
4. Méthode virtuelle pure 
5. Classe abstraite
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
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é.
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.
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;
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.

Contenu connexe

Tendances

Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA Asmaa BENGUEDDACH
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateursAziz Darouichi
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en PythonABDESSELAM ARROU
 
Cours d'analyse fonctions plusieurs variables - leçon 1 - t.masrour
Cours d'analyse   fonctions plusieurs variables - leçon 1 - t.masrourCours d'analyse   fonctions plusieurs variables - leçon 1 - t.masrour
Cours d'analyse fonctions plusieurs variables - leçon 1 - t.masrourtawfik-masrour
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetkemenaran
 
Introduction à la Logique Floue appliquée au Systèmes Décisionnels - Janvier ...
Introduction à la Logique Floue appliquée au Systèmes Décisionnels - Janvier ...Introduction à la Logique Floue appliquée au Systèmes Décisionnels - Janvier ...
Introduction à la Logique Floue appliquée au Systèmes Décisionnels - Janvier ...Franck Dernoncourt
 

Tendances (7)

Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateurs
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Cours d'analyse fonctions plusieurs variables - leçon 1 - t.masrour
Cours d'analyse   fonctions plusieurs variables - leçon 1 - t.masrourCours d'analyse   fonctions plusieurs variables - leçon 1 - t.masrour
Cours d'analyse fonctions plusieurs variables - leçon 1 - t.masrour
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
 
Introduction à la Logique Floue appliquée au Systèmes Décisionnels - Janvier ...
Introduction à la Logique Floue appliquée au Systèmes Décisionnels - Janvier ...Introduction à la Logique Floue appliquée au Systèmes Décisionnels - Janvier ...
Introduction à la Logique Floue appliquée au Systèmes Décisionnels - Janvier ...
 

En vedette

Palmarès racisme
Palmarès racismePalmarès racisme
Palmarès racismeLECREURER
 
Nakamura iteso ponencia_28_feb_2014
Nakamura iteso ponencia_28_feb_2014Nakamura iteso ponencia_28_feb_2014
Nakamura iteso ponencia_28_feb_2014Hatsuko Nakamura
 
Mon problème avec les mesures de l'audience des médias tamara silina - 17 f...
Mon problème avec les mesures de l'audience des médias   tamara silina - 17 f...Mon problème avec les mesures de l'audience des médias   tamara silina - 17 f...
Mon problème avec les mesures de l'audience des médias tamara silina - 17 f...Tamara Silina
 
V.verflex diap prés 2013
V.verflex diap prés 2013V.verflex diap prés 2013
V.verflex diap prés 2013SimVerflex
 
Référencement video deborah calef
Référencement video deborah calefRéférencement video deborah calef
Référencement video deborah calefdeborah_calef
 
Légendes canadiennes
Légendes canadiennesLégendes canadiennes
Légendes canadiennespersonalcare
 
Des britanniques renoncent aux plats préparés
Des britanniques renoncent aux plats préparésDes britanniques renoncent aux plats préparés
Des britanniques renoncent aux plats préparéspersonalcare
 
Las wikis fomentan el conocimiento y el uso democrátco de la red
Las wikis fomentan el conocimiento y el uso democrátco de la redLas wikis fomentan el conocimiento y el uso democrátco de la red
Las wikis fomentan el conocimiento y el uso democrátco de la redMaria Garcia
 
887f4575 9021-4a53-9ae5-596aefb2f61f
887f4575 9021-4a53-9ae5-596aefb2f61f887f4575 9021-4a53-9ae5-596aefb2f61f
887f4575 9021-4a53-9ae5-596aefb2f61fBadr Zine
 
Atelier B2 performance d'un site web - redpoint
Atelier B2 performance d'un site web - redpointAtelier B2 performance d'un site web - redpoint
Atelier B2 performance d'un site web - redpointIlle & Vilaine Tourisme
 
Preparer son contrat pluriannuel_dobjectifs_et_de_moyens
Preparer son contrat pluriannuel_dobjectifs_et_de_moyensPreparer son contrat pluriannuel_dobjectifs_et_de_moyens
Preparer son contrat pluriannuel_dobjectifs_et_de_moyensMarie Bluzet Proniewski
 
Traitement d’images et média visualisation
Traitement d’images et média visualisationTraitement d’images et média visualisation
Traitement d’images et média visualisationEverardo Reyes-García
 
Imagenes test
Imagenes testImagenes test
Imagenes testleidypaez
 
Présentation de stage
Présentation de stagePrésentation de stage
Présentation de stagegblais
 
Réalisation pas à pas d'une fiche contenu
Réalisation pas à pas d'une fiche contenu Réalisation pas à pas d'une fiche contenu
Réalisation pas à pas d'une fiche contenu Helene Weber
 

En vedette (20)

Palmarès racisme
Palmarès racismePalmarès racisme
Palmarès racisme
 
Nakamura iteso ponencia_28_feb_2014
Nakamura iteso ponencia_28_feb_2014Nakamura iteso ponencia_28_feb_2014
Nakamura iteso ponencia_28_feb_2014
 
Mon problème avec les mesures de l'audience des médias tamara silina - 17 f...
Mon problème avec les mesures de l'audience des médias   tamara silina - 17 f...Mon problème avec les mesures de l'audience des médias   tamara silina - 17 f...
Mon problème avec les mesures de l'audience des médias tamara silina - 17 f...
 
V.verflex diap prés 2013
V.verflex diap prés 2013V.verflex diap prés 2013
V.verflex diap prés 2013
 
Référencement video deborah calef
Référencement video deborah calefRéférencement video deborah calef
Référencement video deborah calef
 
Légendes canadiennes
Légendes canadiennesLégendes canadiennes
Légendes canadiennes
 
Des britanniques renoncent aux plats préparés
Des britanniques renoncent aux plats préparésDes britanniques renoncent aux plats préparés
Des britanniques renoncent aux plats préparés
 
ThirdBrain Weatlh Management
ThirdBrain Weatlh ManagementThirdBrain Weatlh Management
ThirdBrain Weatlh Management
 
June 5 Classwork
June 5 ClassworkJune 5 Classwork
June 5 Classwork
 
Las wikis fomentan el conocimiento y el uso democrátco de la red
Las wikis fomentan el conocimiento y el uso democrátco de la redLas wikis fomentan el conocimiento y el uso democrátco de la red
Las wikis fomentan el conocimiento y el uso democrátco de la red
 
887f4575 9021-4a53-9ae5-596aefb2f61f
887f4575 9021-4a53-9ae5-596aefb2f61f887f4575 9021-4a53-9ae5-596aefb2f61f
887f4575 9021-4a53-9ae5-596aefb2f61f
 
Cpp3 : heritage
Cpp3 : heritageCpp3 : heritage
Cpp3 : heritage
 
Atelier B2 performance d'un site web - redpoint
Atelier B2 performance d'un site web - redpointAtelier B2 performance d'un site web - redpoint
Atelier B2 performance d'un site web - redpoint
 
AG_TCM_2013
AG_TCM_2013AG_TCM_2013
AG_TCM_2013
 
Preparer son contrat pluriannuel_dobjectifs_et_de_moyens
Preparer son contrat pluriannuel_dobjectifs_et_de_moyensPreparer son contrat pluriannuel_dobjectifs_et_de_moyens
Preparer son contrat pluriannuel_dobjectifs_et_de_moyens
 
Traitement d’images et média visualisation
Traitement d’images et média visualisationTraitement d’images et média visualisation
Traitement d’images et média visualisation
 
Imagenes test
Imagenes testImagenes test
Imagenes test
 
Plaquette ape
Plaquette apePlaquette ape
Plaquette ape
 
Présentation de stage
Présentation de stagePrésentation de stage
Présentation de stage
 
Réalisation pas à pas d'une fiche contenu
Réalisation pas à pas d'une fiche contenu Réalisation pas à pas d'une fiche contenu
Réalisation pas à pas d'une fiche contenu
 

Plus de Abdoulaye Dieng

Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturelAbdoulaye Dieng
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobilesAbdoulaye Dieng
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPressAbdoulaye Dieng
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchronesAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 

Plus de Abdoulaye Dieng (20)

Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturel
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobiles
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPress
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 

Cpp4 : polymorphisme

  • 1. Introduction au C++ POLYMORPHISME M. DIENG Abdoulaye
  • 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. 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. 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. 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. 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. 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.