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!!