|
Implementare le Proprietà
Tutti i linguaggi moderni contemplano l'utilizzo delle proprietà per interagire con gli attributi di un oggetto.
Il C++ non offre un tale costrutto...
Quando si definisce una nuova classe, si dichiara un certo numero di attributi che caratterizzeranno
gli oggetti creati a partire da quella classe.
Solitamente è buona norma definire dei metodi appositi per leggere e modificare il valore delle variabili
interne, per eseguire validazioni in scrittura o calcoli in lettura.
Le proprietà sono costrutti che consentono di svolgere in modo elegante tali attività: in pratica consentono
di isolare le variabili interne, mantendo, però, la possibilità di interagire con esse nello stesso modo, ovvero
di eseguire assegnazioni dirette come ad esempio:
Oggetto.Attributo = Valore
Valore = Oggetto.Attributo
In C++ è necessario definire ed utilizzare metodi espliciti come:
Oggetto.SetAttributo(Valore)
Valore = Oggetto.GetAttributo()
Implementazione
Di seguito ho riportato l'implementazione del supporto alle proprietà con una classe di esempio che le espone e
un esempio di codice che le utilizza:
- Property.h: Classe Template che fornisce il supporto
- Person.h: Classe di esempio che espone le proprietà
- PropUsage.cpp: Frammento di codice che usa la classe CPerson
Il supporto è abbastanza completo, consente di usare proprietà di qualsiasi tipo, di settare il tipo di accesso
(Read, Write, Read/Write) e di definire degli Handlers custom quando necessario.
Per quanto riguarda l'utilizzo, si puo vedere nella classe d'esempio che l'overhead di codice necessario è minimo.
Dal punto di vista dell'utilizzatore della classe, si opera come se le variabili fossero pubbliche e il codice risulta
molto "pulito".
|