Pagina 1 di 1
[Gambas2] Approfondire le Classi
Inviato: domenica 17 giugno 2007, 12:51
da andy60
Saro' stanco stamattina, ma non riesco a comprendere l'uso delle proprietà nelle classi Gambas, ho trovato questo esempio ma non mi ha chiarito:
Codice: Seleziona tutto
PROPERTY Enabled AS Boolean
PROPERTY READ Handle AS Integer
...
PRIVATE $bEnabled AS Boolean
PRIVATE $iHandle AS Integer
' Implements the Enabled property
FUNCTION Enabled_Read() AS Boolean
RETURN $bEnabled
END
SUB Enabled_Write(bEnabled AS Boolean)
$bEnabled = bEnabled
UpdateEverything
END
' Implements the Handle property
FUNCTION Handle_Read() AS Integer
RETURN $iHandle
END
ancora, l'help di gambas dice questo:
This declares a class property.
If the keyword READ is specified, then the property will be read-only.
Once declared, a property must be implemented : you must write a function to read the property, and, if not read-only, a function to write the property.
The name of the read function is the name of the property followed by an underscore and the word Read. This function takes no argument and must return a data whose type is the same as the property datatype.
The name of the write function is the name of the property followed by an underscore and the word Write. This function is a procedure that returns nothing, and that takes only one argument whose type is the same as the property datatype.
Qualcuno puo' postare un esempio maggiormente esplicativo? Grazie
Re: [Gambas2] Approfondire le Classi
Inviato: domenica 17 giugno 2007, 15:35
da andy60
prossimamente , auto-stimolato dal mio post, scrivero' un articolo dettagliato sulle classi
Re: [Gambas2] Approfondire le Classi
Inviato: domenica 17 giugno 2007, 18:01
da prampa
guarda io non conosco assolutamente gambas pero' conoscevo molto bene VB e quindi mi ci raccapezzo ugualmente. E', secondo me, soltanto un modo brutto per definire l'incapsulamento nelle classi. Proprietà private e metodi pubblici di get/set per leggere ed impostare le proprietà della classe per la sicurezza dei dati, senza pero' la possibilità, ad esempio, di poter utilizzare altre modalità, come "protected".
Non capisco pero' la necessità di definire le property all'inizio.
Sono solo queste le modalità per realizzare una classe? In fase di utilizzo delle classi, occorre scrivere oggetto.Enabled_Write(valore) oppure pippo = oggetto.Enabled_Read()? Ci sono dei framework che si appoggiano a questo modo di scrivere le classi oppure gambas è ancora un progetto giovane (e quindi magari c'e ancora la possibilità di espanderlo)?
ciao
Re: [Gambas2] Approfondire le Classi
Inviato: domenica 17 giugno 2007, 22:31
da andy60
prampa ha scritto:
guarda io non conosco assolutamente gambas pero' conoscevo molto bene VB e quindi mi ci raccapezzo ugualmente. E', secondo me, soltanto un modo brutto per definire l'incapsulamento nelle classi. Proprietà private e metodi pubblici di get/set per leggere ed impostare le proprietà della classe per la sicurezza dei dati, senza pero' la possibilità, ad esempio, di poter utilizzare altre modalità, come "protected".
Non capisco pero' la necessità di definire le property all'inizio.
Sono solo queste le modalità per realizzare una classe? In fase di utilizzo delle classi, occorre scrivere oggetto.Enabled_Write(valore) oppure pippo = oggetto.Enabled_Read()? Ci sono dei framework che si appoggiano a questo modo di scrivere le classi oppure gambas è ancora un progetto giovane (e quindi magari c'e ancora la possibilità di espanderlo)?
ciao
Ciao! Ho trovato un bellissimo articolo vb sulle classi e sto approfondendo l'argomento. sai xche ho chiesto questa cosa? giravagando su sourceforge ho trovato un (fantastico) programma che permette di editare database postgres, scritto in Gambas. Dato che la cosa migliore x programmare è studiare il lavoro altrui, ho visto il codice del programma. L'Autore, un vero 'asso', ha scritto molti pezzi del programma sfruttando routine a me sconosciute, da qui la voglia di studiare x migliorare.
Per precisione ti mando anche un frammento di questo super programma, il programmatore è veramente forte:
Codice: Seleziona tutto
INHERITS Application
' Properties
STATIC PROPERTY READ Config AS CConfig 'Application settings
STATIC PROPERTY READ Log AS CLog 'Application log
STATIC PROPERTY READ ProjectContainer AS CProjectContainer 'Project container
STATIC PRIVATE $Config AS CConfig 'Application settings
STATIC PRIVATE $Log AS CLog 'Application log
STATIC PRIVATE $ProjectContainer AS CProjectContainer 'Project container
STATIC PRIVATE $MainWindow AS MainForm 'Main window
'---
' Start the application. Initialize objects, configuration and the main window.
STATIC PUBLIC SUB Run()
'Initialize the generator casual numbers
RANDOMIZE
'Create configuration object of application
$Config = NEW CConfig("pgdesigner.conf", User.Home &/ ".pgdesigner")
'Create log object of application
$Log = NEW CLog("pgdesigner.log", User.Home &/ ".pgdesigner" &/ "log")
'Enable tooltips
ME.ToolTip.Enabled = $Config.ShowTooltip
'Printer init
ME.InitPrinter()
'Show initial splash
IF ($Config.ShowSplash) THEN
ME.ShowSplash()
END IF
'Create project container
$ProjectContainer = NEW CProjectContainer
'Create the main form
ME.CreateMainForm()
END
ciao
Re: [Gambas2] Approfondire le Classi
Inviato: mercoledì 20 giugno 2007, 16:33
da pippolo
andy60 ha scritto:
prossimamente , auto-stimolato dal mio post, scrivero' un articolo dettagliato sulle classi
LETTO!
Ottimo lavoro!!