SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Dernier

SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 

Dernier (19)

SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 

En vedette

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
 

En vedette (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