Le classi in Visual Basic
Le classi sono tipi di riferimento definiti dallo sviluppatore che si affiancano ai tipi di riferimento predefiniti di Visual Basic (stringhe, oggetti).
Gli elementi di una classe possono essere variabili, funzioni e procedure e sono detti membri della classe.
I principali membri di una classe sono:
- Campi
le variabili interne della classe (dati) - Metodi
le funzioni e le procedure della classe (comportamento)
Differenza tra classi e strutture. Le strutture sono tipi di valore definiti dallo sviluppatore che si affiancano ai tipi di valore predefiniti di Visual Basic (int, float, boolean, ecc.). Le classi, invece, sono tipi di riferimento che si affiancano alle stringhe e agli oggetti predefiniti del linguaggio.
Le caratteristiche delle classi in Visual Basic
Nel linguaggio VB.NET le classi rispettano le proprietà di ereditarietà, polimofismo e incapsulamento.
- Ereditarietà
Una classe derivata (classe figlia) eredita dalla superclasse (classe madre o classe base) gli attributi e i comportamenti.Nota. La classe derivata è una specializzazione della classe madre. Tutte le classi nel .NET Framework sono classi derivate dalla classe System.Object.
- Polimorfismo
Le classi derivate da una stessa superclasse possono implementare in modo diverso uno stesso comportamento, definito dalla classe madre. - Incapsulamento
Una classe può proibire l'accesso ai suoi dati e metodi.
Come creare una classe in Visual Basic
Per creare una classe in Visual Basic utilizzo l'istruzione Class seguita dal nome della classe.
Class nome
End Class
Tutto ciò che è compreso tra Class ed End Class definisce il comportamento della classe, i suoi metodi e le sue proprietà.
Per definire i campi dichiaro le variabili interne della classe tramite l'istruzione Dim.
Class nome
Dim _anno As Integer
End Class
Per definire i metodi utilizzo l'istruzione Function.
Class nome
Dim _anno As Integer
Function NomeMetodo() As String
'...
End Function
End Class
Gli eventi
Gli eventi sono componenti della classe che inviano una notifica quando si verifica un particolare avvenimento.
Agli eventi può essere associate un'azione (handler).
Le proprietà get e set
Le proprietà sono metodi predefiniti della classe.
Permettono di accedere in lettura e scrittura ai campi (dati) della classe.
Le principali proprietà di una classe sono le funzioni di accesso:
- Get
legge il valore di un campo - Set
scrive un valore in un campo
Nota. Le funzioni di accesso sono anche dette accessor. Nella programmazione OOP i due metodi sono anche conosciuti come getter e setter.
Un esempio pratico
Creo una classe un solo campo privato _nome di tipo stringa.
Il campo privato è inizializzato con il valore "non conosciuto".
- Public Class Persone
- Private _nome As String = "non conosciuto"
- End Class
Poi aggiungo i metodi getter e setter relativi al campo con una Public Property per definire le proprietà del campo _name.
- Public Class Persone
- Private _nome As String = "non conosciuto"
- Public Property Nome As String
- Get
- Return _nome
- End Get
- Set(ByVal valore As String)
- _nome = valore
- End Set
- End Property
- End Class
Quindi creo un nuovo oggetto nella classe
Dim Andrea As New Persone()
Quando interrogo il campo Andrea.Nome VB usa il metodo get e restituisce il valore "non conosciuto".
Debug.Write(Andrea.Nome)
Quando assegno un valore al campo Andrea.Nome VB usa il metodo set e salva il valore destro nel campo
Andrea.Nome = "Andrea Minini"
Ora interrogando di nuovo il campo viene restituita la stringa "Andrea Minini".
Esempio 2
Quando i campi sono molti mi conviene usare una forma più compatta.
Indico ogni campo con una Public Property.
- Public Class Persone
- Public Property Nome As String = "non conosciuto"
- End Class
In questa forma le proprietà sono create automaticamente dal compilatore.
Non devo scriverle manualmente per ogni singolo campo.
I modificatori di accessibilità
L'accesso alle classi e ai membri di una classe (campi, proprietà, metodi) è regolato dai modificatori di accessibilità (access modifier).
- Public
Rende accessibile l'elemento a tutte le classi. - Protected
Rende accessibile l'elemento solo alle classi derivate. - Private
Rende inaccessibile l'elemento. - Friend
Rende accessibile l'elemento all'interno dell'assembly. - Protected Friend
Rende accessibile l'elemento alle classi derivate e all'interno dell'assembly.
La parola chiave del modificatore va posta prima del nome della classe o del membro.
- Public Class nome {
- Private Dim _nomevar as Integer
- ...
- }
In assenza di access modifier VB considera di default la parola Private.
Nota. E' consigliabile definire i campi della classe come privati rendendoli eventualmente accessibili tramite una proprietà getter/setter.
Come istanziare un oggetto nella classe
Per istanziare un oggetto nella classe utilizzo il metodo costruttore New.
Dim nomeoggetto As New nomeclasse
Con l'istanza il Commun Language Runtime (CLR) alloca un'area di memoria dedicata all'oggetto.
L'oggetto eredita campi, proprietà e metodi della classe.
nomeoggetto.membroclasse
Cos'è il metodo costruttore
Il metodo costruttore New viene invocato quando si istanzia un oggetto nella classe.
Posso personalizzare il metodo costruttore assegnando dei valori di default alle variabili della classe.
- Public Class nomeclasse
- Private _nomevar As String
- Public Sub New()
- _nomevar="prova"
- End Sub
- End Class
Al momento dell'istanza, l'oggetto eredita il campo nomevar con il valore "prova".
Oltre al costruttore di default, una classe può contenere diversi costruttori al suo interno sfruttando l'overloading.
E così via.