Ciao dna_programmer
dna_programmer ha scritto:
Scusa se ti faccio tutte queste domande, solo che è da poco che uso il .net
Come ti capisco!!! Sono nelle stesse condizioni studiando l' objective-C
dna_programmer ha scritto:
Quindi in pratica , nello specifico, point è uno struct contenuto nella classe label, ho capito bene?
si.
dna_programmer ha scritto:
Poi un'altra cosa quando ad esempio allo struct point ci passo i valori, esempio: new point(10,20),
sarebbe che lo struct è composto da due campi quindi 10 sarebbe il valore del primo campo, mentre 20 il valore del secondo campo. E' così ?
Si, perche sarà stato dichiarato un costruttore che accetta due parametri, una classe può avere molti costruttori con parametri differenti.
dna_programmer ha scritto:
Inoltre, nello specifico, cosa sarebbe una property?
Uno dei capisaldi della programmazione ad oggetti si chiama
Information hiding che prevede che i dati di una classe siano nascosti, cioè dichiarati privati, e vengono scagliati anatemi tremendi contro chi si permette di dichiarare dei campi pubblici, per chi li dichiara protetti è previsto il purgatorio. Devono sempre essere privati.
Per accedere ai campi (che sono privati) di solito si forniscono una coppia di funzioni per leggerli e scriverli, ad esempio se hai i campi x e y dichiari le funzioni GetX, GetY, SetX, SetY, la qual cosa è una bella menata.
Per agevolare questo lavoro in NetFramework sono state introdotte le property che è un sistema più agevole di fare la stessa cosa.
Public Class MyPoint
Private m_x As Double
Private m_y As Double
Public Property X() As Double
Get
'qui puoi decidere cosa restituire
Return m_x
End Get
Set(value As Double)
m_x = value
' qui puoi scrivere altre azioni da compiere quando x viene assegnato
End Set
End Property
End Class
// esempio d' uso
Dim p as MyPoint = new MyPoint
p.X = 10
dim z as double = p.X
È vero che perdi del tempo a scrivere la property, ma poi l' uso è comunque comodo,e inoltre il fatto che la lettura e l' assegnamento di un campo non avvenga direttamente ma venga mediato da delle funzioni offre dei vantaggi.
Ad esempio potresti volere che quando assegni un valore alla X ne venga controllato il range, oppure l' oggetto automaticamenste si ridisegni sullo schermo, o altro ancora. Quando leggi potresti volere ad esempio che venga sempre arrotondato a due cifre decimali o che venga elaborato in altro modo gli esempi si sprecano.
Oppure potresti non mettere la 'set' nella property ed ottenere delle property a sola lettura.