New Technology Design

Programmation C#

Module 1: Introduction à la programmation orientée objet

Objectifs:

  • Acquérir une compréhension fondamentale des concepts clés de la programmation orientée objet (POO) en C#.
  • Illustrer ces concepts à l’aide d’exemples de code clairs et concis.
  • Familiariser les débutants avec la syntaxe et les structures de base du langage C#.

Concepts clés de la POO:

  1. Classes:

Une classe est un modèle ou un plan qui définit la structure et le comportement d’un ensemble d’objets. Elle sert de base à la création d’objets individuels. Une classe contient des membres, qui peuvent être des champs, des propriétés, des méthodes et des constructeurs.

  • Exemple de code:
class Voiture
{
    // Champs (attributs) pour stocker les caractéristiques d'une voiture
    public string marque;
    public string modele;
    public string couleur;
    public int annee;

    // Constructeur pour initialiser les champs d'une voiture
    public Voiture(string marque, string modele, string couleur, int annee)
    {
        this.marque = marque;
        this.modele = modele;
        this.couleur = couleur;
        this.annee = annee;
    }

    // Méthodes pour définir le comportement d'une voiture
    public void demarrer()
    {
        Console.WriteLine("La voiture " + marque + " " + modele + " démarre.");
    }

    public void arreter()
    {
        Console.WriteLine("La voiture " + marque + " " + modele + " s'arrête.");
    }
}

  1. Objets:

Un objet est une instance individuelle d’une classe. Il possède les caractéristiques et les comportements définis par la classe. Les objets sont créés à partir de classes en utilisant des constructeurs.

Exemple de code:

// Création d'objets Voiture
Voiture maVoiture1 = new Voiture("Ford", "Mustang", "rouge", 2023);
Voiture maVoiture2 = new Voiture("Toyota", "Camry", "bleue", 2022);

// Accès aux champs et appel des méthodes des objets
Console.WriteLine("Marque de maVoiture1 : " + maVoiture1.marque);
maVoiture2.demarrer();

  1. Héritage:

L’héritage permet aux classes de dériver des propriétés et des comportements d’autres classes. Cela permet de créer une hiérarchie de classes où les classes plus spécifiques héritent des caractéristiques des classes plus générales.

Exemple de code:

class Camion : Voiture
{
    // Champ spécifique aux camions
    public int capaciteCharge;

    // Constructeur pour initialiser les champs d'un camion
    public Camion(string marque, string modele, string couleur, int annee, int capaciteCharge)
        : base(marque, modele, couleur, annee)
    {
        this.capaciteCharge = capaciteCharge;
    }

    // Méthode spécifique aux camions
    public void charger()
    {
        Console.WriteLine("Le camion " + marque + " " + modele + " est chargé.");
    }
}

// Création d'un objet Camion
Camion monCamion = new Camion("Ford", "F-150", "gris", 2021, 3500);

// Accès aux champs et appel des méthodes héritées et spécifiques
Console.WriteLine("Marque de monCamion : " + monCamion.marque);
monCamion.demarrer();
monCamion.charger();

  1. Polymorphisme:

Le polymorphisme permet aux objets de répondre à la même méthode de différentes manières, en fonction de leur type réel. Cela permet d’écrire du code flexible et extensible qui peut fonctionner avec différents types d’objets.

Exemple de code:

class Vehicule
{
    public virtual void afficher()
    {
        Console.WriteLine("Informations générales du véhicule.");
    }
}

class Voiture : Vehicule
{

  1. Encapsulation:

L’encapsulation est un principe fondamental de la POO qui consiste à regrouper les données (attributs) et les comportements (méthodes) associés dans une classe et à contrôler l’accès à ces membres depuis l’extérieur de la classe. Cela permet de protéger les données internes de la classe et de promouvoir une bonne conception modulaire.

Objectifs de l’encapsulation:

  • Protection des données: En encapsulant les données, vous pouvez contrôler l’accès et empêcher la modification accidentelle ou intentionnelle des données critiques de votre classe.
  • Modularité: L’encapsulation favorise une conception modulaire en regroupant les responsabilités associées à une entité unique (la classe).
  • Contrôle d’accès: Vous pouvez définir des niveaux d’accès (public, privé, protected) pour les membres de la classe, ce qui vous permet de contrôler la façon dont ces membres sont utilisés à partir d’autres parties de votre programme.

Exemple d’encapsulation:

Reprenons l’exemple de la classe Voiture :

class Voiture
{
    // Champs (attributs) privés pour encapsuler les données
    private string marque;
    private string modele;
    private string couleur;
    private int annee;

    // Propriétés publiques pour fournir un accès contrôlé aux champs
    public string Marque
    {
        get { return marque; }
        set { marque = value; }
    }

    public string Modele
    {
        get { return modele; }
        set { modele = value; }
    }

    public string Couleur
    {
        get { return couleur; }
        set { couleur = value; }
    }

    public int Annee
    {
        get { return annee; }
        set { annee = value; }
    }

    // Constructeur pour initialiser les champs
    public Voiture(string marque, string modele, string couleur, int annee)
    {
        Marque = marque;
        Modele = modele;
        Couleur = couleur;
        Annee = annee;
    }

    // Méthodes pour définir le comportement d'une voiture
    public void demarrer()
    {
        Console.WriteLine("La voiture " + Marque + " " + Modele + " démarre.");
    }

    public void arreter()
    {
        Console.WriteLine("La voiture " + Marque + " " + Modele + " s'arrête.");
    }
}

Dans cet exemple, les champs marque, modele, couleur, et annee sont déclarés comme privés. Cela signifie qu’ils ne sont pas directement accessibles depuis l’extérieur de la classe. Pour permettre un accès contrôlé à ces données, nous avons défini des propriétés publiques (Marque, Modele, Couleur, et Annee). Ces propriétés encapsulent la logique d’accès (get) et de modification (set) des champs privés.

  1. Abstraction:

L’abstraction est un autre concept clé de la POO qui consiste à masquer les détails d’implémentation et à ne fournir que les informations essentielles à l’utilisateur. Cela permet de simplifier l’utilisation des classes et de promouvoir la modularité.

Objectifs de l’abstraction:

  • Simplifier l’utilisation des classes: L’abstraction permet de cacher les complexités internes d’une classe et de ne présenter à l’utilisateur que les fonctionnalités et les comportements qu’il a besoin d’utiliser.
  • Améliorer la maintenabilité: En cachant les détails d’implémentation, l’abstraction permet de modifier le fonctionnement interne d’une classe sans affecter les parties du programme qui l’utilisent.
  • Définition de concepts généraux: L’abstraction permet de définir des concepts généraux et des modèles de conception qui peuvent être réutilisés dans différentes parties du programme.

Exemple d’abstraction:

Nous pouvons illustrer l’abstraction en C# à l’aide de classes abstraites et d’interfaces :

  • Classes abstraites: Une classe abstraite est une classe qui ne peut pas être directement instanciée. Elle peut contenir des membres abstraits, qui sont des méthodes sans implémentation. Les classes dérivées de la classe abstraite doivent fournir des implémentations pour les méthodes abstraites.
public abstract class Vehicule

Leave a Reply