Aller au contenu principal
Publié le

Interfaces en C#

Partager :

Introduction

Les interfaces sont l'une des pierres angulaires de la programmation orientée objet en C#. Elles fournissent un moyen de créer des contrats au sein de votre logiciel et de garantir que les classes implémentent certaines méthodes ou propriétés.

Qu'est-ce qu'une Interface ?

En termes simples, une interface est comme un contrat. Ce contrat stipule que toute classe qui implémente l'interface doit également implémenter ses méthodes et propriétés définies. Cependant, contrairement aux classes, les interfaces ne contiennent aucune logique d'implémentation. Elles définissent uniquement ce qui doit être fait, et non comment le faire.

L'Importance des Interfaces

Flexibilité et Extensibilité

L'utilisation des interfaces apporte de la flexibilité à votre code. Comme les interfaces ne contiennent pas d'implémentation, elles vous permettent de définir plusieurs implémentations pour différentes situations sans modifier le contrat initial.

Testabilité

En utilisant des interfaces, vous pouvez créer des mocks ou des stubs pour vos tests unitaires, ce qui vous permet de tester des composants de manière isolée sans dépendances externes.

Réutilisabilité

Vous pouvez utiliser la même interface dans différentes parties de votre projet ou dans différents projets, en garantissant que les classes qui implémentent l'interface disposent de certaines méthodes et propriétés.

Exemple Pratique

Dans l'exemple fourni, nous avons une interface IVoiture qui déclare une méthode Informations(). La classe Voiture implémente cette interface, garantissant que la méthode Informations() est définie.

using System;

namespace Base {
  class Interfaces {
    public void Run() {
      var voiture = new Voiture("Nissan", "Juke", "Avant", "Manuelle", "Diesel", 1461, 175, 110, 25070);
      voiture.Informations();

      /*
        Marque : Nissan
        Modèle : Juke
        Emplacement du moteur : Avant
        Transmission : Manuelle
        Carburant : Diesel
        Cylindrée : 1461 cc
        Vitesse maximale : 175 km/h
        Puissance maximale : 110 ch
        Prix : 25070 euros
      */
    }
  }

  class Voiture : IVoiture {
    private string marque, modele, emplacementMoteur, transmission, carburant;
    private int cylindree, vitesseMaximale, puissanceMaximale;
    private double prix;

    public Voiture(string marque, string modele, string emplacementMoteur, string transmission, string carburant,
                    int cylindree, int vitesseMaximale, int puissanceMaximale, double prix) {
      this.marque = marque;
      this.modele = modele;
      this.emplacementMoteur = emplacementMoteur;
      this.transmission = transmission;
      this.carburant = carburant;
      this.cylindree = cylindree;
      this.vitesseMaximale = vitesseMaximale;
      this.puissanceMaximale = puissanceMaximale;
      this.prix = prix;
    }

    public void Informations() {
      Console.WriteLine($"Marque : {marque}");
      Console.WriteLine($"Modèle : {modele}");
      Console.WriteLine($"Emplacement du moteur : {emplacementMoteur}");
      Console.WriteLine($"Transmission : {transmission}");
      Console.WriteLine($"Carburant : {carburant}");
      Console.WriteLine($"Cylindrée : {cylindree} cc");
      Console.WriteLine($"Vitesse maximale : {vitesseMaximale} km/h");
      Console.WriteLine($"Puissance maximale : {puissanceMaximale} ch");
      Console.WriteLine($"Prix : {prix} euros");
    }
  }

  interface IVoiture {
    void Informations();
  }
}

Considérations lors de l'Utilisation des Interfaces

Lorsque vous travaillez avec des interfaces, il est crucial de garder quelques points à l'esprit :

  1. Nommage : Il est courant en C# de préfixer le nom d'une interface par la lettre 'I', comme IVoiture.
  2. Simplicité : Gardez vos interfaces simples et focalisées. Si une interface commence à avoir trop de membres, il est peut-être temps de la refactoriser ou de la diviser.

Conclusion

Les interfaces jouent un rôle crucial dans la programmation orientée objet, notamment dans des langages comme C#. Elles offrent une structure robuste qui favorise la séparation des responsabilités, la réutilisation du code et l'extensibilité. Avec une bonne compréhension des interfaces, vous serez en mesure de créer des logiciels plus modulaires, testables et maintenables.

Happy coding!