"Andrea [Work]" <andrea.isw...@gmail.invalid> wrote in message
news:1jr19nx64k17q.2n3c3w6vq0kf$.dlg@40tude.net...
> Il Wed, 29 Feb 2012 02:12:50 -0000, LudovicoVan ha scritto:
>
>>> one question: perchè hai messo ClienteNote come sotto-classe pubblica di
>>> cliente?
>>
>> Per quel che si intuisce dall'esempio, concordo che non dovrebbe essere
>> una
>> nested class: ClienteNote rappresenta un aggregato di proprieta' di
>> Cliente, la best practice per le nested class e' di usarle per
>> incapsulare
>> logica non pubblica.
>
> Il mio intento era di far si che la classe ClienteNote (o ClienteContatti)
> potesse vivere anche di vita propria.
> Nel mio esempio, al metodo Save di un cliente la classe cliente va anche
> ad
> invocare i metodi Save delle due classi correlate.
Quelle due affermazioni suonano contraddittorie: o la classe "vive di vita
propria", o il suo ciclo di vita e' controllato dalla classe "master".
> Allo stato attuale non c'è una necessità che queste classi siano
> utilizzabili anche singolarmente e fuori dal contesto del cliente. In tal
> caso sarebbe meglio far diversamente?
Assunto che lo scenario e' una classe "master" e una o piu' classi collegate
che ne aggregano alcuni attributi:
La prima cosa che noterei e' che, in generale, la struttura delle classi non
deve corrispondere strettamente alla struttura dei dati: magari nel db hai
tabelle separate per un po' di denormalizzazione e gestione piu' efficiente
dei dati e dei pattern di accesso ai dati; al livello di classi/oggetti le
esigenze sono piuttosto diverse e la struttura puo' e spesso deve essere
diversa.
Assumendo che classi separata sia la strada da percorrere, allora anch'io
penso che cose tipo il costruttore e il metodo Save dovrebbero essere
friend, ovvero che sia la classe "master" e solo quella ad esporre
un'interfaccia per la gestione del ciclo di vita dell'entita'
corrispondente.
Comunque a questo livello non esistono regole scritte con il fuoco, solo
indicazioni di massima...
-LV