Interface
Scopo delle Interfacce
Le interfacce sono un'entità
davvero singolare all'interno del .NET Framework. La loro funzione è
assimilabile a quella delle classi astratte, ma il modo con cui esse la
svolgono è molto diverso.
Il principale scopo di
un'interfaccia è definire lo scheletro di una classe; potrebbe essere
scherzosamente assimilata alla ricetta con cui si prepara un dolce. Quello che
l'interfaccia X fa, ad esempio, consiste nel dire che per costruire una classe
Y che rispetti "la ricetta" descritta in X servono una proprietà Id
di tipo Integer, una funzione GetSomething senza parametri che restituisce una
stringa e una procedura DoSomething con un singolo parametro Double. Tutte le
classi che avranno intenzione di seguire i precetti di X (in gergo implementare
X) dovranno definire, allo stesso modo, quella proprietà di quel tipo e quei
metodi con quelle specifiche signature (il nome ha importanza relativa).
Dichiarazione e implementazione
La sintassi usata per dichiarare un'interfaccia è la seguente:
Interface [nome]
'membri’
End Interface
I membri delle interfacce, tuttavia, sono un po' diversi dai membri di una
classe, e nello scriverli bisogna rispettare queste regole:
·
Nel caso di metodi, proprietà od eventi, il corpo non va specificato;
·
Non si possono mai usare gli specificatori di accesso;
·
Si possono comunque usare dei modificatori come Shared, ReadOnly e
WriteOnly.
Il primo ed il secondo punto saranno ben
compresi se ci si sofferma a pensare che l'interfaccia ha il solo scopo di
definire quali membri una classe debba implementare: per questo motivo, non se
ne può scrivere il corpo, dato che spetta espressamente alle classi
implementanti, e non ci si preoccupa dello specificatore di accesso, dato che
si sta specificando solo il "cosa" e non il "come".
Ora che sappiamo come dichiarare un'interfaccia, dobbiamo scoprire come
usarla. Per implementare un'interfaccia in una classe, si usa questa sintassi:
Class Esempio
Implements
(Nome Interfaccia)
[Membro] Implements
[Nome Interfaccia].[Membro]
End Class
Definizione di tipi in un'interfaccia
Così come è possibile dichiarare una nuova
classe all'interno di un'altra, o una struttura in una classe, o un'interfaccia
in una classe, o una struttura in una struttura, o tutte le altre possibili
combinazioni, è anche possibile dichiarare un nuovo tipo in un'interfaccia. In
questo caso, solo le classi che implementeranno quell'interfaccia saranno in
grado di usare quel tipo.
Perchè preferire
un'interfaccia a una classe astratta
Ci sono casi e casi. In genere,
un'interfaccia va preferita quando si dovranno abbracciare grandi quantità di
classi diverse: con grandi mi riferisco a numeri abbastanza grandi da rendere
difficile l'uso di una sola classe astratta. È bene usare le interfacce anche
quando si progetta di usarne più di una: una classe, infatti, può implementare
quante interfacce vuole, ma può ereditare da una sola classe base.Proprio per questi motivi, è ideale usare un'interfaccia quando si vuole delineare una caratteristica o un particolare comportamento che può essere comune a più tipi, mentre è meglio puntare a una classe astratta quando si vuole sottolineare l'appartenenza di molti tipi ad un unico archetipo base.
Nessun commento:
Posta un commento