+39 339 8585151
info@easytarg.com
skip to the main content area of this page
I Ferri del Mestiere
 

Implementare le Proprietà


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".


Property.h
Person.h
PropUsage.cpp
Tutte le Utility