classe

Una classe è un modello contenente al suo interno dati, metodi, proprietà, ed eventi, che permette la creazione di uno o più oggetti partendo da essa.

Esempio di dichiarazione di due oggetti utilizzando la stessa classe.

Create un nuovo progetto Console Aggiungete una classe (il suo nome per impostazione predefinita sarà Class1)

Digitate quindi al suo interno il seguente codice:


' GAMBAS class file (questo commento viene aggiunto automaticamente da Gambas per facilitare l'individuazione e non va tolto)

'Queste istruzioni, dichiarano due variabili pubbliche utilizzate come proprietà.
PUBLIC f AS Float
PUBLIC s AS String

'Questo è un metodo pubblico.
PUBLIC SUB P()

'Stampa un messaggio che conferma l'esecuzione del metodo.
Print "P è stato eseguito"

'Imposta le due proprietà.
f = 4.5
s = "dalla chiamata."

END

Da SUB Main create due istanze di Class1 digitando quanto segue al suo interno.

' Gambas module file (questo commento viene aggiunto automaticamente da Gambas per facilitare l'individuazione e non va tolto)

'Dichiara 2 variabili oggetto di tipo Class1.
PUBLIC Uno AS Class1
PUBLIC Due AS Class1

PUBLIC SUB Main()

'Questa istruzione (ora non attiva) se fosse eseguita solleverebbe un' errore in quanto la classe
'non è stata istanziata. Solo le classi *statiche*, possono essere chiamate senza essere istanziate.

Class1.s = "Class1 from main"

'Crea 2 oggetti indipendenti da Class1.
Uno = NEW Class1
Due = NEW Class1

'Setta le relative proprietà.
Due.s = "Due da main"
Uno.s = "Uno da main"

'Chiama il metodo "P" dell' oggetto 'Uno'
Uno.P()

'Stampa
PRINT Uno, Uno.f, Uno.s             'Stamperà l'indirizzo di memoria dove Class1 sotto forma di oggetto Uno è locata e le sue proprietà.
PRINT Due, Due.f, Due.s             'Stamperà l'indirizzo di memoria dove Class1 sotto forma di oggetto Due è locata e le sue proprietà.

END

Da questo esempio, si può osservare che la creazione della classe, permette di definire un modello che comprenda dei dati al suo interno, e che contenga anche dei metodi per poterli elaborare. Ma tutto questo non direttamente, altrimenti il concetto di modello, verrebbe a cadere, ma "copiandolo" in altre locazioni di memoria e dicendo all'interprete tramite la parola chiave NEW che da quel momento, sono oggetti separati che devono di conseguenza trattati separatamente.

Attenzione! Una proprietà si può dichiarare in due modi, il primo semplicemente dichiarando una variabile pubblica in modo che dall' esterno della classe si possa interagire con essa. Questo approccio di tipo semplice, infrange una delle regole base della programmazione a oggetti, in quanto l'incapsulamento viene meno. Questo significa che non è possible applicare nessun controllo sulla manipolazione della proprietà da parte della classe, affidando al programmatore che la utilizza la responsabilità della congruenza ogni volta che vi accede da qualsiasi parte del programma, rendendo di fatto la classe più fragile e di conseguenza il programma stesso. Per ovviare a questo problema, si consiglia di utilizzare le procedure associate alla proprietà "Write" e "Read" quali preposte alla scrittura e alla lettura della proprietà. Queste procedure pur essendo più lente di fatto rispetto alla semplice variabile pubblica che accede direttamente alla variabile in memoria, permettono viceversa un controllo fine della proprietà interagendo con del codice opportunamente scritto ma all'interno della classe atto a controllare la correttezza della proprietà stessa; permettendo così per esempio, di intraprendere decisioni in merito allo scostamento di valore che una proprietà potrebbe avere.

Vedi anche