Implementazione delle interfacce in VB. NET

Quale differenza può portare un anno o due. Due anni e mezzo fa ho pensato di scrivere un libro intitolato Visual Basic 7 Unleashed per Sams. Completare le bozze finali di Sams Visual Basic. NET Unleashed mi ricorda che molto è cambiato in Visual Basic.

Per aiutarti a rendere la transizione il più completa e completa possibile, io e altri autori e collaboratori stiamo scrivendo molto su threading, reflection, assembly, COM interop e delegati. Ma, rivedendo argomenti di programmazione con un amico di recente, mi è stato ricordato che ci sono sviluppatori a tutti i livelli, non solo il livello avanzato. Per essere il più completo possibile, quindi, sto esplorando argomenti avanzati e argomenti non avanzati. (Accolgo con favore anche le query dei lettori e talvolta scrivo un articolo basato su diverse query.)

Questo articolo è al punto. In questo articolo esamineremo le interfacce: come definirle e come implementarle.

L’idea di un’interfaccia non è nuova a COM, ma in Visual Basic 6 ogni classe era un’interfaccia COM. In Visual Basic .NET ogni classe è una classe e un’interfaccia è un’interfaccia, ma non un’interfaccia COM. Le classi esistono da decenni e le interfacce non sono l’unica competenza di COM. Una classe descrive i campi, le proprietà, gli eventi e i metodi di un tipo. Un’interfaccia è più simile a un portale o un allegato. Un’interfaccia dice che un tipo implementerà questi metodi specifici, ma non definisce cosa sia un tipo. Ad esempio, una casa può avere una finestra, ma così può una macchina. Un tipo che implementa un metodo open potrebbe essere definito come qualcosa che ha una finestra, ma i tipi potrebbero definire auto, barche, case o l’anima.

Visual Basic 6 non supporta l’ereditarietà o le classi nel senso orientato agli oggetti del costrutto. VB6 supporta le interfacce COM. VB. NET, dall’altro supporta classi e interfacce, quindi è stato necessario fare una distinzione tra i due idiomi.

Definizione di classi e interfacce in VB.NET

Gli idiomi di classe e interfaccia utilizzano una sintassi molto simile quando li si definisce. L’esempio seguente definisce una classe vuota in VB. NET, seguita da un’interfaccia vuota.

Public Class AClassEnd ClassPublic Interface AnInterfaceEnd Interface

Le classi possono contenere campi, proprietà, eventi e metodi. Questi elementi di una classe, chiamati membri, possono avere modificatori che indicano che sono pubblici, privati, protetti o amici. Tutti i membri di una dichiarazione di interfaccia sono pubblici e di conseguenza non hanno bisogno né possono avere modificatori di accesso.

Le classi contengono codice; le interfacce no. Tuttavia, le classi che implementano un’interfaccia contengono codice. Tieni presente che non ci sono istanze di interfacce in VB .NET. Ogni istanza è un tipo che implementa un’interfaccia, ma non è di per sé un’istanza dell’interfaccia. (Da questo punto lasceremo la discussione delle classi per un’altra volta e ci concentreremo solo sulle interfacce.)

Implementando le interfacce

Supponendo di avere un’interfaccia denominata AnInterface, possiamo solo aggiungere dichiarazioni di metodo a quell’interfaccia. Estendendo l’interfaccia dalla sezione precedente, possiamo aggiungere un metodo chiamato WhoAmI. Il risultato viene mostrato di seguito.

Public Interface AnInterface Function WhoAmI() As StringEnd Interface

Tutti i tipi che implementano l’interfaccia AnInterface devono implementare ogni metodo dichiarato in tale interfaccia. In questo esempio abbiamo solo bisogno di implementare la funzione WhoAmI. Supponiamo che AClass implementi AnInterface; avremmo bisogno di implementare WhoAmI. Il risultato di implementare AnInterface in AClass produrrebbe il seguente codice.

Public Class AClass Implements AnInterface Public Function WhoAmI() As String Implements AnInterface.WhoAmI Return "AClass" End FunctionEnd Class

La prima cosa che dobbiamo fare è indicare che vogliamo implementare l’interfaccia per nome. Implementa AnInterface dice ai consumatori che AClass implementerà tutti i metodi descritti in AnInterface. (L’IDE di Visual Studio. NET ci ricorda che dobbiamo farlo anche noi.)

La differenza tra VB6 e VB .NET è che dobbiamo aggiungere la clausola Implements al corpo della funzione come mostrato nell’elenco. La funzione è dichiarata come normale, ma la clausola implementa AnInterface.WhoAmI completa il contratto tra la classe e l’interfaccia.

Considerazioni finali

Le strutture possono implementare interfacce in VB.NET anche. Se una classe o una struttura sta implementando un’interfaccia, sarà necessario l’istruzione Implements come dimostrato e sarà necessario implementare ogni metodo definito nell’interfaccia utilizzando la clausola Implements alla fine dell’intestazione della procedura per indicare che un particolare metodo soddisfa un particolare metodo di interfaccia.

Le interfacce possono essere molto brevi o molto lunghe. I metodi descritti da un’interfaccia possono essere subroutine o funzioni e possono essere elaborati o semplici come è necessario. Un metodo può implementare più di un metodo di interfacce. Infine, tieni presente che i metodi di interfaccia possono essere chiamati con un riferimento all’oggetto o con un riferimento all’interfaccia.

Circa l’autore

Paul Kimmel è uno scrittore freelance per Developer.com e CodeGuru.com. Cercare fresco Visual Basic. net argomenti nel suo prossimo libro Visual Basic. Net Unleashed disponibile nel gennaio del 2002.

Paul ha fondato Software Conceptions, Inc. nel 1990. Contattare Paul Kimmel a per aiuto costruzione VB.NET applicazioni o migrazione di applicazioni VB6 a. NET.

# # #

Write a Comment

Il tuo indirizzo email non sarà pubblicato.