Programmation Orientée Objet (POO)

Écrit Par :

Catégorie:

POO

Date :

Partager :

POO en .NET – Cours complet illustré

Programmation Orientée Objet (POO)

Un cours complet, illustré et pratique en .NET

📘 Qu’est-ce que la POO ?

La Programmation Orientée Objet (POO) est une manière de concevoir des logiciels en s’inspirant du monde réel. Chaque élément important du domaine métier est représenté par un objet contenant :

  • Des attributs (ou propriétés) : ce que l’objet a
  • Des méthodes : ce que l’objet sait faire

Elle a été popularisée dans les années 80 à travers des langages comme Smalltalk, puis C++, Java, et aujourd’hui .NET/C#. Elle facilite la réutilisation, la lisibilité et la maintenance du code.

🧰 Exemple simple avec une voiture

Voici une classe qui représente une voiture avec ses propriétés et son comportement :

public class Voiture
{
    public string Modele { get; set; }
    public string Couleur { get; set; }
    public int Annee { get; set; }

    public void Demarrer()
    {
        Console.WriteLine("La voiture démarre...");
    }
}

var maVoiture = new Voiture
{
    Modele = "Mercedes CLA",
    Couleur = "Noir",
    Annee = 2022
};

maVoiture.Demarrer();
  

Cet objet maVoiture est une instance concrète de la classe Voiture. D’autres voitures peuvent être créées à partir du même modèle.

⚖️ Les piliers de la POO

Encapsulation

Elle protège les données sensibles d’un objet en interdisant l’accès direct depuis l’extérieur. On y accède uniquement via des méthodes :

public class CompteBancaire
{
    private decimal solde;

    public void Deposer(decimal montant)
    {
        if (montant > 0) solde += montant;
    }

    public decimal ConsulterSolde() => solde;
}
  

Héritage

Une classe enfant hérite des propriétés d’une classe parent. Exemple avec Vehicule et Moto :

public class Vehicule
{
    public string Marque { get; set; }
}

public class Moto : Vehicule
{
    public bool AUnCasque { get; set; }
}
  

Polymorphisme

Il permet à une même méthode de se comporter différemment selon le type de l’objet :

public class Animal
{
    public virtual void Crier() => Console.WriteLine("Cri d'animal");
}

public class Chien : Animal
{
    public override void Crier() => Console.WriteLine("Wouf !");
}
  

Abstraction

Elle permet de définir une interface ou une classe abstraite qui cache les détails d’implémentation :

public interface IPaiement
{
    void Payer(decimal montant);
}

public class PaiementCB : IPaiement
{
    public void Payer(decimal montant)
    {
        Console.WriteLine($"Paiement de {montant} € par carte");
    }
}
  

🔗 Les associations entre objets

Les objets peuvent être liés entre eux par différents types de relations :

  • Association : une classe utilise une autre (relation simple)
  • Agrégation : une classe possède une autre classe, mais l’objet agrégé peut exister seul
  • Composition : l’objet contenu ne peut exister sans l’objet contenant
public class Moteur
{
    public int Chevaux { get; set; }
}

public class Voiture
{
    public Moteur Moteur { get; set; } = new Moteur();
}
  

📦 Objet de valeur (Value Object)

Un objet de valeur est une entité sans identifiant, comparée uniquement par son contenu. Très utile pour représenter des données comme une adresse ou une monnaie :

public class Adresse
{
    public string Rue { get; }
    public string Ville { get; }

    public Adresse(string rue, string ville)
    {
        Rue = rue;
        Ville = ville;
    }

    public override bool Equals(object obj)
    {
        return obj is Adresse a &&
               a.Rue == Rue &&
               a.Ville == Ville;
    }

    public override int GetHashCode() => HashCode.Combine(Rue, Ville);
}
  

✅ En résumé

  • La POO structure le code autour d’objets du monde réel
  • Elle repose sur 4 piliers : encapsulation, héritage, polymorphisme, abstraction
  • Les objets peuvent être liés par association, agrégation ou composition
  • Les objets de valeur sont immuables et comparés par leurs données
© 2025 – Cours POO illustré avec .NET par Farhat