Qu'est-ce que l'interface en C# avec exemple
โก Rรฉsumรฉ intelligent
Une interface en C# dรฉfinit une interfacetracL'attribut `t` spรฉcifie les mรฉthodes et propriรฉtรฉs qu'une classe doit implรฉmenter, sans fournir le code lui-mรชme. La classe d'implรฉmentation fournit le comportement concret, permettant un faible couplage et l'hรฉritage multiple entre types non liรฉs.

Qu'est-ce qu'Interface en C# ?
An Interface En C#, une classe est utilisรฉe pour dรฉfinir une interface.tracL'interface dรฉfinit les fonctionnalitรฉs qu'une classe doit fournir ร une application. Elle dรฉfinit les opรฉrations qu'une classe peut effectuer et dรฉclare ses propriรฉtรฉs et mรฉthodes. Il appartient ร la classe de dรฉfinir prรฉcisรฉment le comportement de chaque mรฉthode.
Regardons un exemple d'interface en changeant les classes dans notre application Console. Notez que nous nโexรฉcuterons pas le code car rien ne peut รชtre exรฉcutรฉ ร lโaide dโune interface.
Exemple d'interface C#
Crรฉons une classe d'interface. Cette classe s'appellera ยซGuru99Interface. Notre classe principale รฉtendra ensuite l'interface dรฉfinie. Tout le code doit รชtre รฉcrit dans le fichier Program.cs.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { interface IGuru99Interface { void SetTutorial(int pID, string pName); String GetTutorial(); } class Guru99Tutorial : IGuru99Interface { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1,".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Explication:-
Ici, nous expliquons les sections importantes du code
- Nous dรฉfinissons d'abord une interface appelรฉe ยซGuru99Interface. Notez que le mot-clรฉ ยซ interface ยป est utilisรฉ pour dรฉfinir une interface.
- Ensuite, nous dรฉfinissons les mรฉthodes qui seront utilisรฉes par notre interface. Dans ce cas, nous dรฉfinissons les mรชmes mรฉthodes que celles utilisรฉes dans tous les exemples prรฉcรฉdents. Notez qu'une interface dรฉclare simplement les mรฉthodes. Il n'y dรฉfinit pas le code.
- Nous faisons ensuite notre GuruLa classe 99Tutorial รฉtend l'interface. C'est ici que nous รฉcrivons le code qui dรฉfinit les diffรฉrentes mรฉthodes dรฉclarรฉes dans l'interface. Ce type de code permet d'obtenir les rรฉsultats suivants :
- Cela garantit que la classe, Guru99Tutorial ajoute uniquement le code nรฉcessaire aux mรฉthodes ยซ SetTutorial ยป et ยซ GetTutorial ยป, et rien d'autre.
- Cela garantit รฉgalement que l'interface se comporte comme une interface utilisateur.trac La classe doit se conformer ร la conventiontract. Donc si le contracSi la commande indique qu'elle devrait comporter deux mรฉthodes appelรฉes ยซ SetTutorial ยป et ยซ GetTutorial ยป, alors elle devrait รชtre conรงue ainsi.
Interface C# vs Abstract Classe
Une question frรฉquente chez les dรฉbutants est de savoir en quoi une interface C# diffรจre d'une interface de type `interface`. Abdostracclasse TLes deux dรฉfinissent une contracd'autres types suivent, mais ils servent des objectifs de conception diffรฉrents.
Les principales diffรฉrences sont รฉnumรฉrรฉes ci-dessous :
- Mise en ลuvre: Une interface ne contient que des dรฉclarations, tandis qu'une interface absoluetracLa classe T peut fournir ร la fois des abstracmembres t et mรฉthodes entiรจrement implรฉmentรฉes.
- Hรฉritage multiple : Une classe peut implรฉmenter plusieurs interfaces mais ne peut hรฉriter que d'une seule interface absolue.tracclasse t.
- รtat: Un abdostracUne classe T peut contenir des champs, des constructeurs et des propriรฉtรฉs avec des donnรฉes, tandis qu'une interface ne peut pas stocker d'รฉtat d'instance.
- Modificateurs d'accรจs : AbdostracLes membres de la classe t peuvent รชtre publics, protรฉgรฉs ou privรฉs, tandis que les membres d'interface classiques sont implicitement publics.
- Cas d'utilisation: Utilisez une interface pour ajouter une fonctionnalitรฉ ร des types non liรฉs, et une valeur absoluetracLa classe t permet de partager du code commun entre des types รฉtroitement liรฉs.
En bref, une interface dรฉcrit ce qu'une classe peut faire, tandis qu'une classe absoluetracLa classe t peut รฉgalement dรฉfinir une partie de la maniรจre dont cela est fait.
Comment implรฉmenter plusieurs interfaces en C#
Contrairement ร l'hรฉritage de classes, C# permet ร une mรชme classe d'implรฉmenter plusieurs interfaces. C'est ainsi que le langage offre une forme sรปre d'hรฉritage multiple, sans l'ambiguรฏtรฉ qui rรฉsulte de l'hรฉritage simultanรฉ de plusieurs classes de base.
Pour implรฉmenter plusieurs interfaces, listez-les aprรจs le nom de la classe et sรฉparez-les par une virgule. La classe doit ensuite dรฉfinir chaque mรฉthode dรฉclarรฉe dans chaque interface qu'elle implรฉmente.
รtape 1) Dรฉclarez deux interfaces, chacune avec sa propre mรฉthode.
รtape 2) Crรฉez une classe qui implรฉmente les deux interfaces, en sรฉparant les noms des interfaces par une virgule.
รtape 3) Fournissez un corps de mรฉthode pour chaque membre dรฉclarรฉ dans chaque interface.
L'exemple ci-dessous montre une classe Document qui implรฉmente ร la fois une interface utilisateur et une interface graphique.Readable et une interface IWritable.
using System; namespace DemoApplication { interface IReadable { void Read(); } interface IWritable { void Write(); } class Document : IReadable, IWritable { public void Read() { Console.WriteLine("Reading the document"); } public void Write() { Console.WriteLine("Writing to the document"); } static void Main(string[] args) { Document doc = new Document(); doc.Read(); doc.Write(); Console.ReadKey(); } } }
Code Explication:-
- Nous dรฉclarons deux interfaces, IReadable et IWritable. Chaque interface dรฉclare une seule mรฉthode sans corps.
- La classe Document liste les deux interfaces aprรจs les deux-points, sรฉparรฉes par une virgule, acceptant ainsi de respecter les deux.tracts.
- La classe dรฉfinit ensuite les mรฉthodes Read et Write. Ignorerping L'une ou l'autre mรฉthode provoquerait une erreur de compilation.
- La mรฉthode Main crรฉe un objet Document et appelle les deux mรฉthodes, prouvant ainsi que la classe satisfait aux deux interfaces.
Lorsque le programme s'exรฉcute, il imprime Lecture du document sur la premiรจre ligne et Rรฉdiger le document sur la deuxiรจme ligne. Ce motif conserve chaque contracElle est petite et ciblรฉe, ce qui rend la classe Document plus facile ร tester et ร รฉtendre.
Avantages de l'utilisation des interfaces en C#
Les interfaces sont largement utilisรฉes dans les projets C# professionnels car elles rendent le code flexible et plus facile ร maintenir. Elles permettent de programmer selon une approche conventionnelle.tract plutรดt que dans une classe concrรจte.
Les principaux avantages comprennent:
- Couplage lรขche: Code Cela dรฉpend de l'interface, et non d'une classe spรฉcifique ; une implรฉmentation peut donc changer sans perturber les appelants.
- Hรฉritage multiple : Une classe peut hรฉriter du comportement de plusieurs interfaces, ce que l'hรฉritage de classe classique ne permet pas.
- Testabilitรฉ : Les interfaces simplifient le remplacement d'une classe rรฉelle par un objet factice lors des tests unitaires.
- Injection de dรฉpendances : Les frameworks injectent une implรฉmentation d'interface au moment de l'exรฉcution, une idรฉe centrale des principes SOLID.
- Cohรฉrence: Chaque classe d'implรฉmentation est obligรฉe de fournir le mรชme ensemble de membres, ce qui garantit la prรฉvisibilitรฉ de l'API.
Grรขce ร ces avantages, les interfaces sont au cลur de la plupart des modรจles de conception et des frameworks d'applications C# modernes.

