I metodi Get e Set delle classi in Visual Basic
Nel linguaggio Visual Basic i metodi get e set sono proprietà delle classi che permettono rispettivamente di leggere e modificare i valori dei campi di un oggetto della classe.
I metodi get e set vanno definiti nella classe e sono ereditati dagli oggetto quando viene istanziato alla classe.
Sono anche detti funzioni di accesso (o accessor).
Nota. Essendo metodi predefiniti della classe, i metodi get e set sono proprietà della classe.
Un esempio pratico
Questa semplice classe ha una variabile interna _nomevar del tipo Private ( riga 2) che non può essere né letta, né modificata dall'esterno.
- Public Class nomeclasse
- Private _nomevar As String
- Public Sub New()
- _nomevar="prova"
- End Sub
- Public Property Nome As String
- Get
- Return _nomevar
- End Get
- Set (ByVal valore As String)
- _nomevar=valore
- End Set
- End Property
- End Class
Per leggere e modificare il valore della variabile interna _nomevar definisco una proprietà pubblica Nome ( righe 6-13 ) con i metodi get ( righe 7-9 ) in rosso e set ( righe 10-12 ) in blu.
Istanzio un oggetto alla classe
Per semplicità lo chiamo nomeoggetto ma potrei chiamarlo in qualsiasi altro modo.
Dim nomeoggetto As New nomeclasse()
L'oggetto eredita i campi (_nomevar), il metodo costruttore New e i metodi (get, set) della proprietà pubblica Nome.
Al momento dell'istanza il metodo costruttore New assegna automaticamente alla variabile interna _nomevar il valore "prova".
Per modificare la variabile interna _nomevar utilizzo i metodi Get e Set della proprietà pubblica Nome.
Quando interrogo la proprietà pubblica Nome dell'oggetto
console.writeln(nomeoggetto.Nome)
viene invocato il metodo get che legge e restituisce tramite l'istruzione return (riga 8) il contenuto della variabile interna _nomevar.
prova
Quando modifico la proprietà Nome dell'oggetto
nomeoggetto.Nome="prova2"
viene invocato il metodo set che assegna il nuovo valore ("prova2") alla variabile interna _nomevar (riga 11).
Esempio 2 ( codice alternativo )
Quando una classe ha molti campi, definire le proprietà get e set per ciascuna può diventare scomodo.
Il linguaggio Visual Basic permette di ottenere lo stesso risultato in questo modo alternativo:
- Public Class nomeclasse
- Public Property Nome As String = "prova"
- End Class
Con una sola riga (riga 2) definisco una Public Property chiamata Nome e gli assegno il valore di default "prova".
Non definisco i metodi get e set della proprietà, ci penserà il compilatore a farlo.
Nota. In questo secondo esempio ho eliminato la variabile interna _nomevar e l'ho sostituita con la proprietà pubblica Nome.
Quando istanzio un oggetto alla classe, l'oggetto eredita il campo Nome (proprietà pubblica) e i metodi (get e set) aggiunti automaticamente dal compilatore.
Dim nomeoggetto As New nomeclasse()
Essendo una proprietà di tipo pubblico (Public Property) posso leggere direttamente il contenuto del campo Nome
console.writeln(nomeoggetto.Nome)
e scrivere il contenuto
nomeoggetto.Nome="prova2"
E' decisamente una via più sintetica rispetto all'esempio precedente.
E così via.