realbasic-nug.it
[Top] [All Lists]

Re: Comportamento normale, bizzarro o bug delle computed property?

To: REALbasic NUG Italian <realbasic-nug dot it at lists dot realsoftware dot com>
Subject: Re: Comportamento normale, bizzarro o bug delle computed property?
From: Massimo Valle <maxduepuntozero at yahoo dot it>
Date: Thu, 29 Nov 2007 11:51:51 +0100
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot it at lists dot realsoftware dot com
References: <2CB96CDB-0313-4C48-B523-9FFD98CDD9A4 at menssana dot to dot it> <FF7DE1A1-7CF5-4060-AB3C-C1195CFECBC1 at yahoo dot it> <D6EA9DDD-B439-4308-A4D5-5378FC5E5556 at menssana dot to dot it>

On 29/nov/07, at 11:38, Fabio Soggia wrote:

Grazie della risposta.
A parte il fatto che non si parlava di shared properies, ma di computed properies, ma credo sia un refuso ripetuto, il mio problema rimane: come faccio a invocare un evento al cambiare del valore dell'istanza dell'oggetto? È possibbbbile?
Fabio

Il giorno 29/nov/07, alle ore 11:08, Massimo Valle ha scritto:
...

Hai ragione, parlavamo di computed properties.
Per risolvere il tuo problema è sufficiente creare una sottoclasse di Date dove definisci alcuni metodi tipo:

Function GetMonth() as Integer
  // fai quello che ti pare
  return self.month
End Function

Sub SetMonth(theMonth as Integer)
  // fai quello che ti pare
  self.month = theMonth
End Sub

e così via per le altre proprietà.
A questo punto, puoi usare la tua sottoclasse invece di Date e, quando ti serve ottenere la proprietà Month, usi invece GetMonth e se devi assegnarla usi SetMonth.

Purtroppo nella classe Date, le proprietà Month, Day, ecc. sono per l'appunto proprietà. Se fossero stati metodi avresti potuto fare l'override direttamente ridefinendo un metodo Month nella tua sottoclasse. Invece essendo proprietà devi per forza usare dei metodi accessori. In teoria potresti definire un metodo che si chiama Month che va a coprire la proprietò della super classe, ma questa tecnica (che si chiama "shadowing") non è una buona pratica e potrebbe portare problemi.

Massimo



<Prev in Thread] Current Thread [Next in Thread>