Skip to content
Menu
Leesweb
Leesweb

Lezione 14-Interfacce in VB.NET

Posted on Gennaio 4, 2022 by admin

Nell’esercizio precedente, Compiti risolti per OOP in lezioni VB.NET 12-13, abbiamo praticato le nostre conoscenze dalle lezioni precedenti.

Nella lezione precedente, Risolto compiti per OOP in VB .NET lezioni 12-13, abbiamo praticato il lavoro con Listcollections e creato un diario elettronico in Visual Basic. NET.In today’stutorial, saremo sempre di nuovo in alcune questioni più teoriche. Stiamo andando a svelare un’altra utilità del mondo della programmazione orientata agli oggetti!

Interfaccia

Quando ci si riferisce all’interfaccia di un oggetto, ci si riferisce a come un oggettoè visibile dall’esterno. Sappiamo già che un oggetto contiene metodiche possono essere impostate come private o public. L’interfaccia dell’oggetto è composta dalla suametodi pubblici, che è il modo in cui comunichiamo con determinati tipi di oggetti.Abbiamo già affrontato i metodi pubblici nelle lezioni precedenti, ad esempio quelli che abbiamo preparato per il nostro guerriero dell’arena. La classe Guerriera che abbiamo creato ha avuto i seguenti pubblicimetodi:

  • Sub Attacco nemico Come Guerriero)
  • Sub Difendere(hit As Integer)
  • Funzione Viva() As Boolean
  • Sub SetMessage(messaggio As String)
  • Funzione GetLastMessage() As String
  • Funzione HealthBar() As String

Se salviamo un Guerriero istanza della classe in una variabile, siamo in grado di chiamare theAttack() o Difendere() metodi. Niente di nuovo, giusto?

In effetti, siamo in grado di dichiarare un’interfaccia separatamente, come facciamo con le classi, e saremmo quindi in grado di usarla come tipo di dati.

Faremo un tentativo, ma su una classe più semplice rispetto alla classe Guerriero che abbiamo fatto.Inizieremo creando un nuovo progetto, un’applicazione console, chiamandolointerfacesample e aggiungendo una classe semplice. A mio parere, teoricoi concetti dovrebbero essere spiegati usando esempi leggeri, il che significa non così gravi. Detto questo, facciamo una lezione di uccelli! Il nostro uccello sarà in grado di cinguettare,respirare e beccare. La nostra classe di uccelli sarà qualcosa di similequesto:

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

Fatto! Ora, passiamo a Module1.vb e creare un’istanza uccello:

Dim bird As Bird = New Bird()

Una volta creata un’istanza della classe bird, scrivi qualunque cosa tu abbia chiamatol’istanza, nel mio caso, è “bird”, e aggiungi un punto subito dopo. VisualStudio visualizzerà quindi tutti i suoi metodi di classe (puoi anche invokeIntelliSense premendo Ctrl + Spazio):

Ora vediamo tutto ciò che possiamo chiamare sull’istanza bird. I 3 metodi che abbiamo appena implementato ci sono così come alcuni altri che tutti gli oggetti hanno dalla sua base.

Ora creiamo un’interfaccia per il nostro uccello. Useremo la parola chiave theInterface per fare proprio questo. In VB.NET, è una buona pratica per prefisso l’interfaccia con ” I ” (come nell’interfaccia). Fare clic destro sulproject, e scegliere Aggiungi nuovo elemento -> Interfaccia.

Un’interfaccia vuota verrà aggiunta al nostro progetto. Aggiungeremo i header dei metodi che questa interfaccia richiederà. L’implementazione stessa, il contenuto del metodo, viene aggiunta in seguito dalla classe thatimplements l’interfaccia.

Aggiungiamo le intestazioni dei metodi all’interfaccia IBird, ne ometteremo di proposito uno e aggiungeremo solo cinguettio e respirazione:

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

Non specifichiamo il modificatore pubblico poiché un’interfaccia contiene solo i metodi pubblici. Non avrebbe senso altrimenti poiché specifica come lavorare con un oggetto dall’esterno.

Torniamo al Module1.vb e cambiare la linea con il birdvariable in modo che non sarà più del tipo di uccello, ma del tipo di uccello:

Dim bird As IBird = New Bird()

Ciò che il codice sopra significa è che nella variabile bird, ci aspettiamo un objectthat contiene i metodi specificati nell’interfaccia IBird. Visual Studioreports un errore poiché la classe Bird non implementa ancora l’interfaccia IBird.Sebbene abbia i metodi necessari, deve prima essere informato che implementa questa interfaccia. Passiamo alla classe Bird e lasciamo che implementi l’interfaccia di theIBird. Lo facciamo nello stesso modo in cui vogliamo che una classe erediti da un’altra, usiamo solo la parola chiave Implements per questo:

Public Class Bird Implements IBird . . .

Dobbiamo anche specificare quali metodi dalla classe implementa quale metododall’interfaccia(s). Usiamo anche la parola chiave Implements, questa volta dopo le definizioni dei metodi. La classe degli uccelli ora assomiglieràquesto:

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

Quando torniamo al Module1.vb, la linea con la variabile del tipo IBird non causa più un errore. La classe Bird implementa correttamente IBirdinterface. Significa che le istanze di uccelli possono ora essere memorizzate in variabili di thistype.

Ora, solo per completezza, vediamo cosa succede quando rimuoviamo amethod dalla classe, che è richiesto dall’interfaccia, come il metodo Chirp (). Visual Studio ci avviserà che l’implementazione non è completa. Una volta che hai la conferma visiva della dipendenza dell’interfaccia dalla classe, rimetti il metodo a cui appartiene.

Scriviamo uccello con un punto dopo di esso. Ancora una volta, Visual Studio offrirà metodi thefollowing:

Possiamo vedere che ora possiamo chiamare solo i metodi forniti dall’interfaccia sull’istanza. Questo perché l’uccello è ora una variabile del tipo IBird, non il tipo di uccello. Significa che non possiamo chiamare il metodo Peck () perché non l’abbiamo aggiunto all’interfaccia.

Perché abbiamo lasciato fuori, in primo luogo, si può chiedere? Un sacco di potenzialreasons, abbiamo già incontrato uno di loro. Usando un’interfaccia, semplifichiamo un oggetto complesso ed esponiamo solo le parti necessarie in una certa parte del programma.

Inoltre, devo aggiungere che le interfacce non possono essere istanziate. In altre parole, thiscode non funzionerà:

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

Ereditarietà multipla

Visual Basic. NET, come la maggior parte dei linguaggi di programmazione, non supporta multipleinheritance. Significa che non possiamo ereditare una classe da più di un’altra classe. Principalmente, perché le collisioni di denominazione dei metodi potrebbero benissimo verificarsi quandomoltiple classi contenenti metodi con lo stesso nome ereditano i loro metodiin un’altra classe. L’ereditarietà multipla viene spesso aggirata usando le interfacceperché ci è permesso implementare tutte le interfacce in una classe che vogliamo. Aclass del genere ci consente solo di lavorare con le sue istanze in modi che vogliamo. Non dovremmo preoccuparci di quale tipo di oggetto è effettivamente, o di cosa fornisce oltre le interfacce.

Ora aggiungiamo un’interfaccia ILizard al nostro progetto. Lucertolesarà in grado di respirare e gattonare:

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

Successivamente, proveremo “ereditarietà multipla”, in modo più accurato, implementeremo multipleinterfaces da una singola classe. Aggiungeremo uno pterodattilo.classe vb al project.It implementerà le interfacce IBird e ILizard:

Public Class Pterodactyl Implements ILizard, IBirdEnd Class

Se passiamo il mouse sopra ogni interfaccia, cioè fare clic su ILizard o IBird, c’è una scorciatoia “lampadina” per implementare l’interfaccia nel contesto menu.It può anche accadere automaticamente quando si scrive un nome di interfaccia da implementare.Visual Studio genererà automaticamente i metodi di classe necessari.

Dopo aver implementato entrambe le interfacce, il codice sarà simile a questo.Si noti che ci sono 2 metodi Breathe() poiché il metodo è richiesto sia daIBird che da 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

Poiché la respirazione sarà sempre la stessa, rimuoviamo il metodo IBird_Breathe () e aggiungiamo IBird.Respirare dopo la parola chiave Implementa del primo metodo Breathe ().

Ora tutto ciò che dobbiamo fare è specificare cosa vogliamo che ogni metodo faccia:

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

Questo è praticamente tutto! Ora, aggiungiamo un’istanza della classe Pterodattile inModule1.VB:

Dim pterodactyl As Pterodactyl = New Pterodactyl()

Assicurati che abbia entrambi i metodi di uccello e lucertola:

Ci atterremo alle interfacce per un po ‘ di tempo poiché c’è molto di più per themthat non abbiamo coperto. Nella lezione successiva, digitare il cast e la gerarchia degli oggetti in VB.NET, Lei imparerà tecniche di moreadvanced della programmazione object-oriented.

Lascia un commento Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Articoli recenti

  • Il Blog Single
  • Come si fa a guadagnare monete su Disegnare qualcosa?
  • Come lanciare un piombino: mancino e destrorso
  • Come aumentare i livelli di leptina
  • Come esportare i contatti Hotmail?
  • bet365 bonus code: inserire codice d’iscrizione TMG50 per il mese di dicembre 2021
  • Come installare il certificato SSL su Centos 7
  • come calafatare un lavello in acciaio inox (un modo efficace)

Archivi

  • Marzo 2022
  • Febbraio 2022
  • Gennaio 2022
  • Dicembre 2021
  • Novembre 2021

Meta

  • Accedi
  • Feed dei contenuti
  • Feed dei commenti
  • WordPress.org
  • 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