Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Ancora sulle Property

Penso di aver ormai capito come usare Property Get/Let/Set ma ho ancora un dubbio:
consideriamo un Form con una Property Get e una Property Let.
La domanda č questa: oltre a queste procedure io devo per forza dichiararmi una variabile locale
nella quale memorizzare il valore della proprietą?
Non č un po' strano creare una Proprietą del Form che si chiama mettiamo frmMioForm.Proprietą e
poi dover dichiarare una variabile (ad es. valProprietą) a livello locale?
Gestione a parte mi sembra di dichiarare due volte la stessa cosa.
Grazie e ciao
                Diego

Mazzaro Diego ha scritto:

Un momento: per il semplice fatto che esistano le biciclette, non significa che siano utili per
andare dalla cucina al bagno... :-)
La routine Property ti dą la possibilitą di controllare cosa viene assegnato alla variabile, e di
eseguire procedure (la stessa routine Property o altre, tramite chiamate a funzioni o subroutines)
in conseguenza del valore in arrivo.  Esempio: a che mi serve una variabile Public
blPulsantiVisibili As Boolean se impostandola a false i miei pulsanti non spariscono? Beh, dovrei,
in ogni punto specifico in cui serve visualizzare o meno i pulsanti, inserire anche il codice
necessario a farli apparire o scomparire tutti. Con la routine property, invece posso eseguire del
codice (quello che fa apparire o scomparire i  pulsanti) semplicemente assegnando un valore. La
variabile globale blPulsantiVisibili servirą alle routine interne all'oggetto che dichiara la
property, per eventuali altre procedure basate sulla visibilitą  o meno dei pulsanti, oppure servirą
alla routine property stessa per verificare lo stato di fatto e agire di conseguenza. Nel mio
esempio basterebbe testare la visibilitą di uno dei pulsanti, ma potrebbe darsi che la visibilitą di
uno solo non significhi che tutti i pulsanti sono visibili, come in conseguenza di PulsantiVisibili
= True.
Nel caso in cui la Property di un form debba essere utilizzata da altri moduli, viene impedita la
modifica diretta della variabile, che puņ essere resa Private ma accessibile tramite la relativa
Property, che eseguirą anche tutto il codice che gli altri moduli potrebbero erroneamente evitare di
eseguire, limitandosi a modificare la variabile. La stessa variabile puņ essere resa non
modificabile eliminando la relativa routine Property Let. Potresti obiettare: ma che bisogno ho io
che conosco il mio programma, di impedirmi di settare una variabile? Beh, abbiamo fatto le cose
semplici. In una applicazione Client-Server, per esempio, o in un controllo utente, le cose sono
diverse... E poi, prova a sviluppare un'applicazione con quaranta form... Se č il tuo stesso
programma a tener traccia di cosa puoi o non puoi fare le cose si semplificano parecchio.
In sostanza: la dichiarazione della property non serve a contenere valori, ma 1) a fornire
un'interfaccia per la visibilitą di variabili private; 2) a far eseguir parti di programma in base
al valore assegnato.
E pił in generale, aumentano il livello di astrazione del progetto, rendendo lo sviluppo e le
modifiche meno complessi (mica sempre :-) )
Flavio Ronco
--
f.ronco@*NonMiServeNiente*
flashnet.it
-------------------------------------------------------------
"Che pubblico in gamba! Se ci dite dove lavorate,
domani mattina se abbiamo tempo vi veniamo a vedere"
[Paolo Rossi]