No, spetta un momento, mica mi hai preso per Nostradamus ?
Scherzi a parte, ormai quello che vuoi ottenere sembra abbastanza chiaro, ma da qui al cosa farai domani ce ne passa...
La logica più o meno sembra tu l'abbia compresa, il codice che hai postato sembra corretto, a parte la nota che ti ho inserito (nota, non sei ancora stato bocciato...
).
Se quella è stata una svista, ok, altrimenti c'è ancora qualcosa che non hai digerito...
Molti linguaggi usano definire ad inizio metodo (o funzione, o classe) il tipo di variabile che andrà ad utilizzare. In gambas, come in VisualBasic, questo si fà con la parolina DIM. Questo, però, in effetti non fà ancora nulla, ma dice solo al compilatore che quel nome di variabile verrà utilizzato per puntare ad un particolare tipo di dato.
Una volta stabilito il tipo, la variabile deve essere istanziata, ovvero creata relamente in memoria. Questo, dipendentemente dal tipo di variabile, se è un oggetto si usa la sintassi NEW, mentre per le variabili normali l'assunzione in memoria avviene alla prima assegnazione o al primo utilizzo, sempre premesso che il linguaggio azzeri in qualche modo il dato ivi contenuto.
A questo punto, se si tratta d una semplice, ad esempio, String che di default viene inizializzata a "" (vuoto), basta utilizzarla che viene immediatamanete istanziata. Nel caso di oggetti, come sopra accennato, dato che contengono sia codice (metodi) che dati (proprietà), la cosa assume alcune differenze. La prima è che l'oggetto deve essere esplicitamente creato, ovvero fornita sufficiente memoria per contenerlo, poi chiamato il suo costruttore. In alcuni linguaggi come Gambas, questo è implicito con l'uso dell'istruzione NEW, che provoca prima la creazione in memoria dell'oggetto, poi esegue il suo costruttore, in tutti i casi il metodo _new(). In altri linguaggi questo assume diverse modalità, ad esempio in C/C++, o in Java, il costruttore è un metodo che ha lo stesso nome della classe, senza valori di ritorno.
Inoltre, ogni oggetto prevede anche un metodo distruttore, che in gambas viene assunto da un'altro metodo nascosto _free().
Ora, non voglio appesantire il discorso, per cui ometto di parlarti di free() e di delete(), anche perchè gambas ha un sistema che li chiama automaticamente quando l'oggetto non viene più usato. Semmai ne parleremo in seguito. Tieni conto che anche io lo uso molto poco, anche perchè, in alcuni, casi crea dei problemi che tocca tener ben presenti.