Newsgroup: it.comp.lang.vo-clipper
Titolo: Metodo Init() di una Classe - Spiegazioni x Favore

Ho creato (come sempre d'altronde - almeno cerco) una semplice applicazione
per il calcolo dei Contenitori per i Vuoti delle Bottiglie D'acqua.
Ecco come si svolge:
// Creo la Classe Bottiglie
CLASS Bottiglie
 EXPORT nBottiglie   AS DWORD
 EXPORT nPosti       AS DWORD
----------------------------------------
METHOD nCalcolo CLASS Bottiglie   // Creo il Metodo nCalcolo con il Metodo x
il calcolo
                                                            //  dei
contenitori che mi occorrono per depositare le nBottiglie (in questo caso
24)
 LOCAL nContenitori :=0 AS INT
 nContenitori:=SELF:nBottiglie / SELF:nPosti
    ? nContenitori
    TextBox{,"Calcolo Contenitori","Per Depositare
"+NTrim(SELF:nBottiglie)+" Bottiglie occorrono " + NTrim(nContenitori) + "
Contenitori"}:show()
 // 24 / 6 ottengo 4 Contenitori
    RETURN nContenitori
----------------------------------------
METHOD Start() CLASS App
 LOCAL oCalcolo AS Bottiglie         // definisco una variabile oCalcolo
                                                       //   a cui posso
assegnare solo istanze della Classe Bottiglie
   oCalcolo := Bottiglie{}                 //    creo l'oggetto oCalcolo
della Classe Bottiglie
   oCalcolo:nBottiglie := 24      // Assegno i valori alle 2 variabili di
istanza della Classe Bottiglie associate all'oggetto oCalcolo
   oCalcolo:nPosti := 6            //  nBottiglie = numero delle Bottiglie
da sistemare - nPosti = numero dei Posti disponibili per ogni Contenitore
   oCalcolo:nCalcolo()          // richiamo il metodo per il calcolo delle
Bottiglie
 SELF:Exec()
 RETURN NIL
----------------------------------------
Adesso riporto testualmente dal testo (scusate il gioco di parole) da cui
stò studiando (ALLA SCOPERA DI CA - VISUAL OBJECT - INFOMEDIA)
TUTTE LE CLASSI  DEVONO AVERE UN METODO Init() o Metodo di Istanziamento.
Questo Metodo è utilizzato per fornire all'oggetto che sta per essere creato
una "sostanza"    // FIN TUTTO CHIARO!!!
Il mio quesito è il seguente qual'e' la sintassi che mi permette di
assegnare alle Variabili di istanza  (nBottiglie e nPosti)  il valore da me
scelto attraverso il Metodo Init() della Classe x (in questo caso la classe
Bottiglie)
ES . Method Init() Class Bottiglie
        assegnazione Valori alle variabili di istanza - come si fa?
come viene invocato tale metodo?
e come vengono passati i valori nel Metodo nCalcolo?
come poi viene sviluppata l'applicazione?
Come sempre sperando di essere stato il più chiaro possibile
Ringrazio per l'attenzione
senza né fama e né gloria saluto tutto il Ng
Giuseppe Squitieri

 ha scritto nel messaggio
news:k9AKa.121368$Ny5.3...@twister2.libero.it...


 > Come sempre sperando di essere stato il piů chiaro possibile


Giuseppe,
Il numero dei contenitori della classe che hai creato si presta bene al
concetto di ACCESS che avevi elaborato nell'altro post.
Il numero dei contenitori puo' essere trattato come "variabile virtuale".
CLASS Bottiglie
EXPORT nBottiglie AS DWORD
EXPORT nPosti     AS DWORD
DECLARE ACCESS Contenitori
Il metodo Init(), che viene chiamato automaticamente da VO serve anche per
inizializzare le variabili della classe:
METHOD Init(nnBottiglie, nnPosti) CLASS Bottiglie
Default(@nnBottiglie, 0)
Default(@nnPosti, 0)
SELF:nBottiglie := nnBottiglie
SELF:nPosti   := nnPosti
RETURN SELF
Ed infine la variabile virtuale dei contenitori:
ACCESS Contenitori AS LONGINT PASCAL CLASS Bottiglie
LOCAL nContenitori :=0 AS LONGINT
IF SELF:nPosti > 0
   nContenitori:=SELF:nBottiglie / SELF:nPosti
ENDIF
RETURN nContenitori
Ciao
Paolo

Ho dimenticato di scriverti l'utilizzazione:
METHOD Start() CLASS App
LOCAL oBott1 AS Bottiglie, ;
              oBott2 AS Bottiglie, ;
              oBott3 AS Bottiglie
oBott1:=Bottiglie{8, 4}
oBott2:=Bottiglie{15, 3}
oBott2:=Bottiglie{}
? oBott1:Contenitori
? oBott2:Contenitori
? oBott3:Contenitori
inkey(0)
Se hai dubbi fammi sapere
Ciao
Paolo