Skip to content
Menu
Leesweb
Leesweb

Leçon 14 – Interfaces en VB.NET

Posted on janvier 4, 2022 by admin

Dans l’exercice précédent, les tâches résolues pour la POO dans les leçons VB .NET 12-13, nous avons mis en pratique nos connaissances des leçons précédentes.

Dans la leçon précédente, nous avons résolu des tâches pour la POO dans les leçons VB .NET 12-13, nous nous sommes entraînés à travailler avec Listcollections et avons créé un journal électronique dans Visual Basic.NET. Dans le manuel d’aujourd’hui, nous reviendrons sur des questions plus théoriques. Nous allons dévoiler une autre utilité du monde de la programmation orientée objet !

Interface

Lorsque l’on fait référence à l’interface d’un objet, ils font référence à la façon dont un objet est visible de l’extérieur. Nous savons déjà qu’un objet contient des méthodesqui peut être défini comme privé ou public. L’interface de l’objet se compose de sesméthodes publiques, qui est la façon dont nous communiquons avec certains types d’objets.Nous avons déjà traité des méthodes publiques dans les leçons précédentes, par exemple celles que nous avons mises en place pour notre guerrier d’arène. La classe de guerriers que nous avons créée avait les méthodes publiques suivantes:

  • Sous Attaque (ennemi En Tant Que Guerrier)
  • Sous Défense (frappé En Tant Qu’Entier)
  • Fonction Alive() En Tant Que Booléen
  • Sous SetMessage(message En Tant Que Chaîne)
  • Fonction GetLastMessage() En Tant Que Chaîne
  • Fonction HealthBar() En Tant Que Chaîne

Si nous stockons une instance de classe Warrior dans une variable, nous pouvons appeler les méthodes theAttack() ou Defend() dessus. Rien de nouveau, non?

En fait, nous pouvons déclarer une interface séparément, un peu comme nous le faisons avec les classes, et nous pourrions alors l’utiliser comme type de données.

Nous allons essayer, mais sur une classe plus simple que la classe Guerrière que nous avons créée.Nous allons commencer par créer un nouveau projet, une application console, le nommerinterfacesample et ajouter une classe simple. À mon avis, les concepts théoriques devraient être expliqués à l’aide d’exemples légers, c’est-à-dire moins sérieux. Tout cela étant dit, faisons un cours d’oiseaux! Notre oiseau pourra gazouiller, respirer et picorer. Notre classe d’oiseaux ressemblera à ceci:

Public Class Bird Public Sub Chirp() Console.WriteLine("♫ ♫ ♫") End Sub Public Sub Breathe() Console.WriteLine("Breathing...") End Sub Public Sub Peck() Console.WriteLine("Peck, peck!") End SubEnd Class

C’est fait ! Passons maintenant au Module1.vb et créer une instance d’oiseau:

Dim bird As Bird = New Bird()

Une fois que vous avez créé une instance de la classe bird, écrivez ce que vous avez appelé l’instance, dans mon cas, c’est « bird », et ajoutez un point juste après. VisualStudio affichera alors toutes ses méthodes de classe (vous pouvez également Invoquerintellisense en appuyant sur Ctrl + Espace):

Nous voyons maintenant tout ce que nous pouvons appeler sur l’instance bird. Les 3 méthodes que nous implémentons maintenant sont là ainsi que quelques autres que tous les objets ont de sa base.

Maintenant, créons une interface pour notre oiseau. Nous utiliserons le mot clé Interface pour le faire. En VB.NET, c’est une bonne pratique de préfixer l’Interface par « I » (comme dans Interface). Faites un clic droit sur le projet et choisissez Ajouter un nouvel élément – Interface >.

Une interface vide sera ajoutée à notre projet. Nous ajouterons les têtes de méthodes dont cette interface aura besoin. La mise en œuvre elle-même, le contenu de la méthode, est ajoutée ultérieurement par la classe qui implémente l’interface.

Ajoutons des en-têtes de méthode à l’interface IBird, nous en omettrons délibérément l’un et ajouterons seulement le gazouillis et la respiration:

Public Interface IBird Sub Chirp() Sub Breathe()End Interface

Nous ne spécifions pas le modificateur Public car une interface ne contient que des méthodes publiques. Cela n’aurait pas de sens sinon car il spécifie comment travailler avec un objet de l’extérieur.

Revenons au Module1.vb et changez la ligne avec la variable d’oiseau pour qu’elle ne soit pas plus longue du type d’oiseau, mais du type d’oiseau:

Dim bird As IBird = New Bird()

Ce que le code ci-dessus signifie, c’est que dans la variable bird, nous attendons un objectqui contient les méthodes spécifiées dans l’interface IBird. Visual Studioreporte une erreur car la classe Bird n’implémente pas encore l’interface IBird.Bien qu’il dispose des méthodes nécessaires, il doit d’abord être informé qu’il implémente cette interface. Passons à la classe Bird et laissons-la implémenter l’interface Bird. Nous le faisons de la même manière que lorsque nous voulons qu’une classe hérite d’une autre, nous utilisons simplement le mot clé Implements pour cela:

Public Class Bird Implements IBird . . .

Nous devons également spécifier quelles méthodes de la classe implémente quelle méthodede l’interface (s). Nous utilisons également le mot clé Implements, cette fois après les définitions des méthodes. La classe des oiseaux ressemblera maintenant àcette:

Public Class Bird Implements IBird Public Sub Chirp() Implements IBird.Chirp Console.WriteLine("♫ ♫ ♫") End Sub Public Sub Breathe() Implements IBird.Breathe Console.WriteLine("Breathing...") End Sub Public Sub Peck() Console.WriteLine("Peck, peck!") End SubEnd Class

Quand on revient au Module1.vb, la ligne avec la variable du type IBird ne provoque plus d’erreur. La classe Bird implémente correctement IBirdinterface. Cela signifie que les instances Bird peuvent désormais être stockées dans des variables de ce type.

Maintenant, juste pour être complet, voyons ce qui se passe lorsque nous supprimons amethod de la classe, ce qui est requis par l’interface, comme la méthode Chirp(). Visual Studio nous avertira que l’implémentation n’est pas terminée. Une fois que vous avez une confirmation visuelle de la dépendance de l’interface à la classe, remettez la méthode à sa place.

Écrivons bird avec un point après. Encore une fois, Visual Studio proposera les méthodes suivantes:

Nous pouvons voir que maintenant nous ne pouvons appeler que les méthodes fournies par l’interface sur l’instance. C’est parce que l’oiseau est maintenant une variable du type IBird, pasle type d’oiseau. Ce qui signifie que nous ne pouvons pas appeler la méthode Peck() car nous ne l’avons pas ajoutée à l’interface.

Pourquoi l’avons-nous laissé de côté en premier lieu, demandez-vous? Beaucoup de possibilités, nous en avons déjà rencontré une. En utilisant une interface, nous simplifions un objet complexe et n’exposons que les parties nécessaires dans une certaine partie du programme.

De plus, je dois ajouter que les interfaces ne peuvent pas être instanciées. En d’autres termes, ce code ne fonctionnera pas:

' this code won't workDim bird As IBird = New IBird()

Héritage multiple

Visual Basic .NET, comme la plupart des langages de programmation, ne prend pas en charge l’héritage multiple. Ce qui signifie que nous ne pouvons pas hériter d’une classe de plus d’une autre classe. Principalement, parce que les collisions de nommage de méthode pourraient très bien se produire lorsquemultiples classes contenant des méthodes du même nom héritent de leurs méthodes dans une autre classe. L’héritage multiple est souvent contourné en utilisant des interfacesparce que nous sommes autorisés à implémenter autant d’interfaces dans une classe que nous le souhaitons. Une telle classe ne nous permet de travailler avec ses instances que de la manière que nous voulons. Nous n’aurions pas à nous soucier de quel type d’objet il s’agit réellement, ou de ce qu’il fournit au-delà des interfaces.

Ajoutons maintenant une interface ILizard à notre projet. Les lézards pourront respirer et ramper:

Public Interface ILizard Sub Crawl() Sub Breathe()End Interface

Ensuite, nous allons essayer « l’héritage multiple », plus précisément, implémenter des interfaces multiples par une seule classe. Nous ajouterons un ptérodactyle.classe vb à la project.It implémentera les interfaces IBird et ILizard:

Public Class Pterodactyl Implements ILizard, IBirdEnd Class

Si nous passons la souris au-dessus de chaque interface, c’est-à-dire cliquez sur ILizard ou IBird, il y a un raccourci « ampoule » pour implémenter l’Interface dans le contexte menu.It peut également se produire automatiquement lorsque vous écrivez un nom d’interface à implémenter.Visual Studio générera alors automatiquement les méthodes de classe nécessaires.

Après avoir implémenté les deux interfaces, le code ressemblera à ceci.Notez qu’il existe 2 méthodes Breathe() car la méthode est requise à la fois paribird et ILizard:

Public Class Pterodactyl Implements ILizard, IBird Public Sub Breathe() Implements ILizard.Breathe Throw New NotImplementedException() End Sub Public Sub Chirp() Implements IBird.Chirp Throw New NotImplementedException() End Sub Public Sub Crawl() Implements ILizard.Crawl Throw New NotImplementedException() End Sub Private Sub IBird_Breathe() Implements IBird.Breathe Throw New NotImplementedException() End SubEnd Class

Puisque la respiration sera toujours la même, supprimons la méthode IBird_Breathe() et ajoutons IBird.Breathe après le mot clé Implements de la première méthode Breathe().

Maintenant, tout ce que nous avons à faire est de spécifier ce que nous voulons que chaque méthode fasse:

Public Sub Breathe() Implements ILizard.Breathe, IBird.Breathe Console.WriteLine("I'm breathing...")End SubPublic Sub Crawl() Implements ILizard.Crawl Console.WriteLine("I'm crawling...")End Subpublic Sub Chirp() Implements IBird.Chirp Console.WriteLine("♫ ♫♫ ♫ ♫ ♫♫")End Sub

C’est à peu près tout! Maintenant, ajoutons une instance de la classe Ptérodactyle inModule1.vb:

Dim pterodactyl As Pterodactyl = New Pterodactyl()

Assurez-vous qu’il a à la fois les méthodes oiseau et lézard:

Nous allons nous en tenir aux interfaces pendant un petit moment car il y a beaucoup plus que ce que nous n’avons pas couvert. Dans la leçon suivante, tapez casting et hiérarchie d’objets dans VB.NET , vous apprendrez plustechniques avancées de la programmation orientée objet.

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Articles récents

  • Le Blog Unique
  • Comment gagnez-vous des pièces sur Draw Something?
  • Comment lancer un Plomb: Gaucher et Droitier
  • Comment Augmenter Vos Niveaux de Leptine
  • Comment exporter des contacts Hotmail?
  • code bonus bet365: entrez le code d’inscription TMG50 pour décembre 2021
  • Comment Installer Un Certificat SSL Sur Centos 7
  • comment calfeutrer un évier de cuisine en acier inoxydable (Moyen Efficace)

Archives

  • mars 2022
  • février 2022
  • janvier 2022
  • décembre 2021
  • novembre 2021

Méta

  • Connexion
  • Flux des publications
  • Flux des commentaires
  • Site de WordPress-FR
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
©2022 Leesweb | Theme: Wordly by SuperbThemes