SlideShare una empresa de Scribd logo
1 de 13
AlgoWin - James RAVAILLE
http://www.algowin.fr
Surcharge
et
Polymorphisme
en C#
Spécialiste de la formation et de l’ingénierie avec la plateforme Microsoft .NET
AlgoWin - James RAVAILLE
LA SURCHARGE
S’applique uniquement aux constructeurs et aux méthodes des classes
(que les méthodes soient statiques ou non)
Concept objet permettant de décliner un service de création d’objet ou
un service d’instance ou statique, pour proposer un même traitement
ou un traitement différent mais avec des paramètres d’entrée
différents
Peut être utilisé au sein d’une même classe (constructeurs et
méthodes) ou au sein d’un arbre d’héritage (méthodes seulement)
Une méthode / un constructeur surcharge une autre méthode /
constructeur quand elle / il porte le même nom à condition qu’elle / il
n’ait pas la même liste des types de paramètre dans le même ordre
AlgoWin - James RAVAILLE
SURCHARGE DE CONSTRUCTEURS (1)
La classe Voiture propose une surcharge de constructeurs
Il existe donc deux manières de créer une instance de la classe
Voiture : avec et sans couleur
Le second constructeur appelle le premier constructeur en proposant
une couleur par défaut, la couleur blanche
• Cela permet de factoriser le code commun entre les deux constructeurs
• Lors de l’ajout de paramètres au premier constructeur, le compilateur nous
demandera de modifier ou de fournir une valeur par défaut dans le second
constructeur
public class Voiture : Vehicule {
public Voiture(string aNumeroImmatriculation, string aMarque, Color aCouleur)
: base(aNumeroImmatriculation, aMarque, aCouleur) {
}
public Voiture(string aNumeroImmatriculation, string aMarque)
: this(aNumeroImmatriculation, aMarque, Color.White) {
}
}
Les deux constructeurs n’ont
pas les mêmes paramètres
AlgoWin - James RAVAILLE
SURCHARGE DE CONSTRUCTEURS (2)
Lors de la création d’une instance de la classe Voiture, les deux
surcharges sont proposées
La voiture est de couleur blanche
La voiture est de couleur noire
Voiture oVoiture = new Voiture("123 ERT 44", "Pigeot");
Voiture oVoiture = new Voiture("123 ERT 44", "Pigeot", Color.Black);
AlgoWin - James RAVAILLE
SURCHARGE DE MÉTHODES (1)
 Avec ces méthodes, la classe Voiture propose deux manières de
démarrer un objet de type Voiture, avec et sans une vitesse à atteindre
public void Demarrer(byte aVitesse)
{
// Implémentation.
}
public void Demarrer()
{
// Implémentation.
}
Les deux méthodes ont le même nom
mais pas les mêmes paramètres
AlgoWin - James RAVAILLE
SURCHARGE DE MÉTHODES (2)
Lors de la création d’une instance de la classe Voiture, les deux
surcharges de la méthode Demarrer sont proposées :
La voiture a démarré
La voiture a démarré pour atteindre la vitesse de 50 km/h
oVoiture.Demarrer();
oVoiture.Demarrer(50);
AlgoWin - James RAVAILLE
LA REDÉFINITION (1)
S’applique uniquement aux accesseurs et méthodes d’instance des
classes
Pour comprendre le polymorphisme :
• Poly : plusieurs
• Morphisme : forme
Technique permettant aux accesseurs et méthodes d’avoir plusieurs
formes (implémentations, blocs de code), en fonction de la classe dans
laquelle ces membres de situent
Différentes manières de mettre en œuvre le polymorphisme :
• Le polymorphisme par héritage
• Le polymorphisme par abstraction
• Le polymorphisme par interface
AlgoWin - James RAVAILLE
LA REDÉFINITION (2)
Soit l’arbre d’héritage suivant :
Classe de base
Classes dérivées ou
héritées
AlgoWin - James RAVAILLE
LE POLYMORPHISME PAR HÉRITAGE (1)
Le polymorphisme par héritage consiste à définir des méthodes /
accesseurs virtuels (avec le mot clé virtual) dans une classe afin d’avoir
la possibilité de les redéfinir dans les classes dérivées (avec le mot clé
override)
Pourquoi redéfinir la méthode ou l’accesseur dans une classe dérivée
(au choix) ?
• Pour compléter le comportement de la méthode dans la classe de base (mode
complétion)
• Pour remplacer le comportement de la méthode dans la classe de base (mode
annule et remplace)
AlgoWin - James RAVAILLE
LE POLYMORPHISME PAR HÉRITAGE (2)
Dans le classe Vehicule, ajout d’une méthode nommée Vendre() dont
l’implémentation est la suivante :
Par exemple, dans la classe Voiture, cette méthode est redéfinie :
public virtual string Vendre()
{
this.Etat = EtatsVehicule.Vendu;
return "Le véhicule a été vendu.";
}
Cette méthode peut être redéfinie dans les classes dérivées
public override string Vendre()
{
base.Vendre();
return "La voiture a été vendue.";
}
Appel du comportement de la méthode
Vendre dans la classe de base
AlgoWin - James RAVAILLE
LE POLYMORPHISME PAR ABSTRACTION (1)
Le polymorphisme par abstraction consiste à définir des méthodes
abstraites (avec le mot clé abstract) dans une classe, car même si ce
service doit être proposé dans la classe, il est trop haut dans l’arbre
d’héritage pour proposer une implémentation (un bloc de code)
Conséquences :
• L’obligation de définir la classe comme étant abstraite
• L’obligation de redéfinir dans les classes héritées immédiates (avec le mot clé
override). Toutefois, une classe héritée peut être déclarée comme étant aussi
abstraite afin de déléguer de nouveau l’implémentation aux classes qui en
dérivent
• Impossibilité d’instancier la classe devenue abstraite
AlgoWin - James RAVAILLE
LE POLYMORPHISME PAR ABSTRACTION (2)
Dans le classe Vehicule, ajout d’une méthode nommée Garer() dont
l’implémentation est la suivante :
La classe devient donc abstraite :
La méthode doit être redéfinie dans la classe Voiture :
La méthode doit être redéfinie dans la classe Camion :
public abstract string Garer();
public abstract class Vehicule {
public override string Garer()
{
return "La voiture est garée avec succès.";
}
public override string Garer()
{
return "Le camion est garé avec succès.";
}
Les méthodes ont les mêmes signatures
AlgoWin - James RAVAILLE
TABLEAU RÉCAPITULATIF DES DIFFÉRENCES
Surcharge Redéfinition
Membres concernés Constructeurs et méthodes Accesseurs et méthodes
Signature identique Non Oui
Notion de contrat Non Oui
Peut s’appliquer aux membres statiques Oui Non

Más contenido relacionado

Último

Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfssuserc72852
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...Faga1939
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxRayane619450
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...Nguyen Thanh Tu Collection
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 

Último (13)

Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 

Destacado

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 

Destacado (20)

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 

C# - Surcharge et polymorphisme

  • 1. AlgoWin - James RAVAILLE http://www.algowin.fr Surcharge et Polymorphisme en C# Spécialiste de la formation et de l’ingénierie avec la plateforme Microsoft .NET
  • 2. AlgoWin - James RAVAILLE LA SURCHARGE S’applique uniquement aux constructeurs et aux méthodes des classes (que les méthodes soient statiques ou non) Concept objet permettant de décliner un service de création d’objet ou un service d’instance ou statique, pour proposer un même traitement ou un traitement différent mais avec des paramètres d’entrée différents Peut être utilisé au sein d’une même classe (constructeurs et méthodes) ou au sein d’un arbre d’héritage (méthodes seulement) Une méthode / un constructeur surcharge une autre méthode / constructeur quand elle / il porte le même nom à condition qu’elle / il n’ait pas la même liste des types de paramètre dans le même ordre
  • 3. AlgoWin - James RAVAILLE SURCHARGE DE CONSTRUCTEURS (1) La classe Voiture propose une surcharge de constructeurs Il existe donc deux manières de créer une instance de la classe Voiture : avec et sans couleur Le second constructeur appelle le premier constructeur en proposant une couleur par défaut, la couleur blanche • Cela permet de factoriser le code commun entre les deux constructeurs • Lors de l’ajout de paramètres au premier constructeur, le compilateur nous demandera de modifier ou de fournir une valeur par défaut dans le second constructeur public class Voiture : Vehicule { public Voiture(string aNumeroImmatriculation, string aMarque, Color aCouleur) : base(aNumeroImmatriculation, aMarque, aCouleur) { } public Voiture(string aNumeroImmatriculation, string aMarque) : this(aNumeroImmatriculation, aMarque, Color.White) { } } Les deux constructeurs n’ont pas les mêmes paramètres
  • 4. AlgoWin - James RAVAILLE SURCHARGE DE CONSTRUCTEURS (2) Lors de la création d’une instance de la classe Voiture, les deux surcharges sont proposées La voiture est de couleur blanche La voiture est de couleur noire Voiture oVoiture = new Voiture("123 ERT 44", "Pigeot"); Voiture oVoiture = new Voiture("123 ERT 44", "Pigeot", Color.Black);
  • 5. AlgoWin - James RAVAILLE SURCHARGE DE MÉTHODES (1)  Avec ces méthodes, la classe Voiture propose deux manières de démarrer un objet de type Voiture, avec et sans une vitesse à atteindre public void Demarrer(byte aVitesse) { // Implémentation. } public void Demarrer() { // Implémentation. } Les deux méthodes ont le même nom mais pas les mêmes paramètres
  • 6. AlgoWin - James RAVAILLE SURCHARGE DE MÉTHODES (2) Lors de la création d’une instance de la classe Voiture, les deux surcharges de la méthode Demarrer sont proposées : La voiture a démarré La voiture a démarré pour atteindre la vitesse de 50 km/h oVoiture.Demarrer(); oVoiture.Demarrer(50);
  • 7. AlgoWin - James RAVAILLE LA REDÉFINITION (1) S’applique uniquement aux accesseurs et méthodes d’instance des classes Pour comprendre le polymorphisme : • Poly : plusieurs • Morphisme : forme Technique permettant aux accesseurs et méthodes d’avoir plusieurs formes (implémentations, blocs de code), en fonction de la classe dans laquelle ces membres de situent Différentes manières de mettre en œuvre le polymorphisme : • Le polymorphisme par héritage • Le polymorphisme par abstraction • Le polymorphisme par interface
  • 8. AlgoWin - James RAVAILLE LA REDÉFINITION (2) Soit l’arbre d’héritage suivant : Classe de base Classes dérivées ou héritées
  • 9. AlgoWin - James RAVAILLE LE POLYMORPHISME PAR HÉRITAGE (1) Le polymorphisme par héritage consiste à définir des méthodes / accesseurs virtuels (avec le mot clé virtual) dans une classe afin d’avoir la possibilité de les redéfinir dans les classes dérivées (avec le mot clé override) Pourquoi redéfinir la méthode ou l’accesseur dans une classe dérivée (au choix) ? • Pour compléter le comportement de la méthode dans la classe de base (mode complétion) • Pour remplacer le comportement de la méthode dans la classe de base (mode annule et remplace)
  • 10. AlgoWin - James RAVAILLE LE POLYMORPHISME PAR HÉRITAGE (2) Dans le classe Vehicule, ajout d’une méthode nommée Vendre() dont l’implémentation est la suivante : Par exemple, dans la classe Voiture, cette méthode est redéfinie : public virtual string Vendre() { this.Etat = EtatsVehicule.Vendu; return "Le véhicule a été vendu."; } Cette méthode peut être redéfinie dans les classes dérivées public override string Vendre() { base.Vendre(); return "La voiture a été vendue."; } Appel du comportement de la méthode Vendre dans la classe de base
  • 11. AlgoWin - James RAVAILLE LE POLYMORPHISME PAR ABSTRACTION (1) Le polymorphisme par abstraction consiste à définir des méthodes abstraites (avec le mot clé abstract) dans une classe, car même si ce service doit être proposé dans la classe, il est trop haut dans l’arbre d’héritage pour proposer une implémentation (un bloc de code) Conséquences : • L’obligation de définir la classe comme étant abstraite • L’obligation de redéfinir dans les classes héritées immédiates (avec le mot clé override). Toutefois, une classe héritée peut être déclarée comme étant aussi abstraite afin de déléguer de nouveau l’implémentation aux classes qui en dérivent • Impossibilité d’instancier la classe devenue abstraite
  • 12. AlgoWin - James RAVAILLE LE POLYMORPHISME PAR ABSTRACTION (2) Dans le classe Vehicule, ajout d’une méthode nommée Garer() dont l’implémentation est la suivante : La classe devient donc abstraite : La méthode doit être redéfinie dans la classe Voiture : La méthode doit être redéfinie dans la classe Camion : public abstract string Garer(); public abstract class Vehicule { public override string Garer() { return "La voiture est garée avec succès."; } public override string Garer() { return "Le camion est garé avec succès."; } Les méthodes ont les mêmes signatures
  • 13. AlgoWin - James RAVAILLE TABLEAU RÉCAPITULATIF DES DIFFÉRENCES Surcharge Redéfinition Membres concernés Constructeurs et méthodes Accesseurs et méthodes Signature identique Non Oui Notion de contrat Non Oui Peut s’appliquer aux membres statiques Oui Non