héritage, encapsulation et polymorphisme — sont les piliers de la programmation orientée objet (POO), et C# les utilise pleinement. Voici une explication claire avec des exemples simples :
🔐 Encapsulation
Définition :
C’est le fait de protéger les données d’un objet en les rendant inaccessibles directement depuis l’extérieur, sauf via des méthodes (souvent appelées "getters" et "setters").
Exemple :
public class Personne
{
private string nom; // Champ privé
public void SetNom(string n)
{
nom = n;
}
public string GetNom()
{
return nom;
}
}
Ici, nom est protégé (privé), donc on ne peut pas y accéder directement. Il faut passer par les méthodes SetNom et GetNom.
🧬 Héritage
Définition :
Une classe peut hériter des attributs et méthodes d'une autre classe. Cela favorise la réutilisation du code.
Exemple :
public class Animal
{
public void Manger()
{
Console.WriteLine("L'animal mange");
}
}
public class Chien : Animal
{
public void Aboyer()
{
Console.WriteLine("Le chien aboie");
}
}
Chien hérite de Animal, donc un objet Chien peut faire Manger() même si ce n’est pas défini dans Chien.
🎭 Polymorphisme
Définition :
C’est la capacité d’un objet à prendre plusieurs formes. En gros, on peut appeler la même méthode sur des objets différents, et obtenir des comportements différents.
Il y a deux types :
-
Polymorphisme à la compilation (surcharge)
-
Polymorphisme à l’exécution (surdéfinition)
Exemple avec la surdéfinition (override) :
public class Animal
{
public virtual void FaireDuBruit()
{
Console.WriteLine("L'animal fait un bruit");
}
}
public class Chien : Animal
{
public override void FaireDuBruit()
{
Console.WriteLine("Le chien aboie");
}
}
public class Chat : Animal
{
public override void FaireDuBruit()
{
Console.WriteLine("Le chat miaule");
}
}
Et dans un programme :
List<Animal> animaux = new List<Animal>
{
new Chien(),
new Chat()
};
foreach (var a in animaux)
{
a.FaireDuBruit(); // Appelle la bonne méthode selon le type réel
}
Résumé rapide :
| Concept | But | Mots-clés |
|---|---|---|
| Encapsulation | Protéger les données | private, get, set |
| Héritage | Réutiliser du code | : (ex. Chien : Animal) |
| Polymorphisme | Comportement différent via même interface | virtual, override |
overload et override sont deux concepts liés au polymorphisme, mais ils ne signifient pas la même chose.
🔁 Overload (Surcharge)
➤ C’est quoi ?
C’est quand plusieurs méthodes ont le même nom, mais des paramètres différents (en type ou en nombre).
👉 Ça se passe dans la même classe.
➤ Exemple :
public class Calculatrice
{
public int Addition(int a, int b)
{
return a + b;
}
public double Addition(double a, double b)
{
return a + b;
}
public int Addition(int a, int b, int c)
{
return a + b + c;
}
}
Ici,
Additionest surchargée : même nom, mais des signatures différentes.
🔁 Override (Redéfinition)
➤ C’est quoi ?
C’est quand une classe dérivée change le comportement d’une méthode définie dans la classe parente.
👉 Nécessite des mots-clés virtual (dans la classe de base) et override (dans la classe dérivée).
➤ Exemple :
public class Animal
{
public virtual void FaireDuBruit()
{
Console.WriteLine("L'animal fait un bruit");
}
}
public class Chien : Animal
{
public override void FaireDuBruit()
{
Console.WriteLine("Le chien aboie");
}
}
Ici,
Chienoverride la méthodeFaireDuBruitdeAnimal. Le comportement est différent même si le nom est identique.
📌 Résumé rapide :
| Terme | Quand ? | Mots-clés | Exemple |
|---|---|---|---|
Overload |
Même méthode, plusieurs versions | Aucun | Addition(int, int)Addition(double, double) |
Override |
Redéfinir une méthode de la classe de base | virtual + override |
Animal.FaireDuBruit() vs Chien.FaireDuBruit() |
Aucun commentaire:
Enregistrer un commentaire