Differenze tra le versioni di "Creare da codice una Classe specifica"
(Creata pagina con "Oltre alle Classi fornite nativamente da Gambas, è possibile creare da codice ''Classi'' specifiche aventi risorse proprie: ''Proprietà'', ''Meto...") |
|||
Riga 8: | Riga 8: | ||
==Le "Proprietà" della Classe specifica== | ==Le "Proprietà" della Classe specifica== | ||
− | Le ''Proprietà'' di una Classe | + | In via generale la ''Proprietà'' di una Classe è una risorsa che determina le ''caratteristiche'' di quella Classe. |
+ | <BR>L'attribuzione di tali caratteristiche ad un'istanza concreta (''Oggetto'' ) della Classe avviene attraverso l'assegnazione con l'operatore "'''='''" di una valore alla variabile che rappresenta la particolare Proprietà. | ||
+ | |||
+ | Le ''Proprietà'' di una Classe specifica sono a questa attribuite in fase progettuale mediante la parola-chiave '''[https://gambaswiki.org/wiki/lang/propdecl?l=it Property]'''. <SUP>[[[#Note|nota 2]]]</sup> | ||
Leggiamo dalla guida ''in linea'': | Leggiamo dalla guida ''in linea'': | ||
Riga 49: | Riga 52: | ||
La Classe ''Automobile'' sarà costruita come segue: | La Classe ''Automobile'' sarà costruita come segue: | ||
− | <FONT color=#006400>' '''''Definisce le Properità'''''</font> | + | <FONT color=#006400>' '''''Definisce le Properità:'''''</font> |
'''Property''' Colore As Integer | '''Property''' Colore As Integer | ||
'''Property''' Modello As String | '''Property''' Modello As String | ||
Riga 64: | Riga 67: | ||
<FONT Color=gray>' ''La Proprietà di "sola" lettura potrà comunque essere valorizzata una sola volta con il metodo nascosto "_new()", passandogli un valore esclusivamente all'atto della creazione dell'istanza (Oggetto) della Classe specifica nella Classe superiore''</font> | <FONT Color=gray>' ''La Proprietà di "sola" lettura potrà comunque essere valorizzata una sola volta con il metodo nascosto "_new()", passandogli un valore esclusivamente all'atto della creazione dell'istanza (Oggetto) della Classe specifica nella Classe superiore''</font> | ||
− | '''Public''' Sub _new(versione As String | + | '''Public''' Sub _new(versione As String) |
$Allestimento = versione | $Allestimento = versione | ||
Riga 88: | Riga 91: | ||
'''End''' | '''End''' | ||
− | '''Private''' Function Cilindrata_Read() As | + | '''Private''' Function Cilindrata_Read() As Short |
Return $Cilindrata | Return $Cilindrata | ||
'''End''' | '''End''' | ||
− | '''Private''' Sub Cilindrata_Write(Value As | + | '''Private''' Sub Cilindrata_Write(Value As Short) |
$Cilindrata = Value | $Cilindrata = Value | ||
'''End''' | '''End''' | ||
Riga 99: | Riga 102: | ||
Return $Allestimento | Return $Allestimento | ||
'''End''' | '''End''' | ||
+ | |||
+ | |||
+ | ==I "Metodi" della Classe specifica== | ||
+ | In via generale il ''[https://gambaswiki.org/wiki/lang/methoddecl?l=it Metodo]'' di una Classe è una risorsa che determina la capacità della Classe di compiere un'azione (''fare qualcosa'' ), e più precismente lo svolgimento di un'operazione. | ||
+ | <BR>L'azione/operazione viene compiuta dal ''Metodo'' su uno o più valori che - solitamente - gli vengono passati come argomenti nelle parentesi operative. | ||
+ | |||
+ | I ''Metodi'' di una Classe specifica sono a questa attribuiti in fase progettuale mediante una delle seguenti parole-chiave: '''Function''' (se il Metodo ritorna comunque un valore), oppure '''Procedure''' oppure '''Sub'''. | ||
+ | |||
+ | In ogni caso il ''Metodo'' va dichiarato preceduto dalla parola-chiave '''[https://gambaswiki.org/wiki/lang/public?l=it Public]'''. | ||
+ | |||
+ | ====Esempio pratico==== | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
Versione delle 16:23, 18 gen 2022
Oltre alle Classi fornite nativamente da Gambas, è possibile creare da codice Classi specifiche aventi risorse proprie: Proprietà, Metodi ed Eventi. [nota 1]
Il progetto della Classe particolare deve essere creato dall'interfaccia IDE di Gambas cliccando con il tasto destro del mouse sull'elemento "Progetto" visibile nella colonna ad albero a sinistra.
Indice
Le risorse della Classe specifica
Le risorse specifiche della Classe specifica devono essere definite via codice all'interno della pagina del progetto nell'IDE di Gambas.
Le "Proprietà" della Classe specifica
In via generale la Proprietà di una Classe è una risorsa che determina le caratteristiche di quella Classe.
L'attribuzione di tali caratteristiche ad un'istanza concreta (Oggetto ) della Classe avviene attraverso l'assegnazione con l'operatore "=" di una valore alla variabile che rappresenta la particolare Proprietà.
Le Proprietà di una Classe specifica sono a questa attribuite in fase progettuale mediante la parola-chiave Property. [nota 2]
Leggiamo dalla guida in linea:
In automatico una volta dichiarata una proprietà, l'editor di Gambas crea una funzione per la lettura e una subroutine per la scrittura della proprietà stessa. Se invece opzionalmente viene utilizzata la parola chiave facoltativa READ, allora la proprietà così creata diventa a sola lettura, e l'editor di Gambas non crerà la subroutine di scrittura. Una volta dichiarata nella classe specificata, una proprietà deve essere implementata. Si tratta in pratica di scrivere del codice nella funzione che legge la proprietà. E se la proprietà non è a sola lettura, e cioè la si può anche scrivere, di scrivere del codice anche nella subroutine di scrittura. Il nome della funzione per la lettura, è il nome della proprietà seguito da un carattere di sottolineatura e dalla parola Read. Questa funzione così composta non necessita di argomenti e deve restituire un valore il cui tipo sia lo stesso dichiarato nella proprietà. Il nome della subroutine di scrittura, è il nome della proprietà seguito da un carattere di sottolineatura e dalla parola Write. Questa subroutine essendo tale non ritorna ovviamente niente, ma prende un argomento (uno solo) che gli viene passato che deve essere dello stesso tipo dichiarato nella proprietà per poterlo poi assegnare alla funzione Read di lettura eventualmente elaborato.
In particolare va considerato che
Property Nome As Tipo
definisce una Proprietà in lettura/scrittura.
Property Read Nome As Tipo
definisce una Proprietà in sola lettura.
Non è possibile, invece, creare una Proprietà in sola scrittura.
Alla Proprietà deve essere poi associato un simbolo (una variabile ) dello stesso tipo per contenerne il valore.
Private Simbolo As Tipo
Ad essa, infine, sono associate due funzioni (una sola, se la Proprietà è di sola lettura), per consentire di leggervi un valore assegnato:
Private Function Nome_Read() As Tipo Return Simbolo End
e per assegnare alla Proprietà un valore:
Private Sub Nome_Write(Value As Tipo Simbolo = Value End
Esempio pratico
Supponiamo di aver creato da codice una Classe specifica, che chiameremo Automobile: per ciascuna automobile bisognerà gestire diversi parametri:
- Colore
- Cilindrata
- Modello
La Classe Automobile sarà costruita come segue:
' Definisce le Properità: Property Colore As Integer Property Modello As String Property Cilindrata As Short Property Read Allestimento As String ' In questo caso è definita anche una "Proprietà" di "sola" lettura ' Definisce i simboli associati alle Proprietà: Private $Colore As Integer Private $Modello As String Private $Cilindrata As Short Private $Allestimento As String ' Definisce le Funzioni per gestire le suddette Proprietà: ' La Proprietà di "sola" lettura potrà comunque essere valorizzata una sola volta con il metodo nascosto "_new()", passandogli un valore esclusivamente all'atto della creazione dell'istanza (Oggetto) della Classe specifica nella Classe superiore Public Sub _new(versione As String) $Allestimento = versione End ' Con questa funzione si "legge" dalla Proprietà Colore, in quanto la funzione ritorna appunto il valore contenuto dalla variabile/simbolo associata alla predetta Proprietà: Private Function Colore_Read() As Integer Return $Colore End ' Con questa funzione si "scrive" nella variabile/simbolo associata alla Proprietà Colore; e pertanto le si assegna un valore: Private Sub Colore_Write(Value As Integer) $Colore = Value End Private Function Modello_Read() As String Return $Modello End Private Sub Modello_Write(Value As String) $Modello = Value End Private Function Cilindrata_Read() As Short Return $Cilindrata End Private Sub Cilindrata_Write(Value As Short) $Cilindrata = Value End Private Function Allestimento_Read() As String Return $Allestimento End
I "Metodi" della Classe specifica
In via generale il Metodo di una Classe è una risorsa che determina la capacità della Classe di compiere un'azione (fare qualcosa ), e più precismente lo svolgimento di un'operazione.
L'azione/operazione viene compiuta dal Metodo su uno o più valori che - solitamente - gli vengono passati come argomenti nelle parentesi operative.
I Metodi di una Classe specifica sono a questa attribuiti in fase progettuale mediante una delle seguenti parole-chiave: Function (se il Metodo ritorna comunque un valore), oppure Procedure oppure Sub.
In ogni caso il Metodo va dichiarato preceduto dalla parola-chiave Public.
Esempio pratico
Note
[1] Una Classe specifica, appositamente creata, può sostituire una Struttura, in quanto si riserva una quantità di memoria determinata dal tipo di variabili da esse formata.
[2] Seguiremo in questo paragrafo, per quello che riguarda l'uso della parola chiave Property, in buona parte quanto descritto in analoga discussione nel forum di Gambas-it.org dall'utente sotema.
Pagina in costruzione !