AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Object Design: relazioni padre-figlio

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
Casper
Guest





PostPosted: Tue May 15, 2007 7:17 pm    Post subject: Object Design: relazioni padre-figlio Reply with quote



ciao,
ci sono dei pattern o comunque pareri riguardo l'uso delle relazioni
padre-figlio ?

Facendo un caso in cui un oggetto Padre ha dentro di se una Lista di
oggetti Figlio.
E' corretto inserire anche dentro il Figlio una variabile di tipo
Padre per poter essere in grado di ottenere l'oggetto Padre?
Vedo la cosa come un pò rischiosa/debole dal punto di vista della
gestione... ci sono dei pattern che voi sappiate già consolidati ?

grazie
Back to top
pole
Guest





PostPosted: Tue May 15, 2007 7:27 pm    Post subject: Re: Object Design: relazioni padre-figlio Reply with quote



Casper wrote:
Quote:
ciao,
ci sono dei pattern o comunque pareri riguardo l'uso delle relazioni
padre-figlio ?

Il composite credo sia un classico.
http://www.ugolandini.net/CompositePattern.html

Quote:
E' corretto inserire anche dentro il Figlio una variabile di tipo
Padre per poter essere in grado di ottenere l'oggetto Padre?

Spesso è una cosa utile.

Quote:
Vedo la cosa come un pò rischiosa/debole dal punto di vista della
gestione... ci sono dei pattern che voi sappiate già consolidati ?

Se ti riferisci ad eventuali problemi di riferimento (es. tutti i figli
devono puntare allo stesso padre etc.), una buona prassi è fare in modo
che il parent sia gestito automaticamente nelle operazioni di add e remove.

pole
--
ammentos - a lightweight persistence framework for JDK5
http://ammentos.biobytes.it
Flash tutorial: http://ammentos.biobytes.it/quickstart/quickstart.html
Back to top
Casper
Guest





PostPosted: Thu May 17, 2007 6:07 pm    Post subject: Re: Object Design: relazioni padre-figlio Reply with quote



Quote:
Se ti riferisci ad eventuali problemi di riferimento (es. tutti i figli
devono puntare allo stesso padre etc.), una buona prassi è fare in modo
che il parent sia gestito automaticamente nelle operazioni di add e remove.

si esattamente.
Mi si poneva però il problema di eventuali inconsistenze quando gli
oggetti dipendenti fossero inseriti senza fare un controllo.
Faccio un esempio:

class Padre {

List<Figlio> figli;

void setFigli(...) {}
void addFiglio(...) {}
}

class Figlio {

Padre padre;

}


In questo caso, se aggiungo un figlio al padre col metodo addFiglio,
potrei in questo metodo settare il padre dentro il figlio.
Ma se uso il metodo setFigli, che è un setter del bean.... mi
ritroverei a dover fare questo controllo per ogni elemento della
Lista?

Oppure: se creo un figlio, e gli setto dentro un padre, dentro questo
padre a sua volta devo settargli la lista con questo figlio stesso?

Spero di essermi spiegato Smile ci possono essere problematiche di questo
tipo?

thx!
Back to top
pole
Guest





PostPosted: Thu May 17, 2007 6:31 pm    Post subject: Re: Object Design: relazioni padre-figlio Reply with quote

Casper wrote:

Quote:
Oppure: se creo un figlio, e gli setto dentro un padre, dentro questo
padre a sua volta devo settargli la lista con questo figlio stesso?

Spero di essermi spiegato Smile ci possono essere problematiche di questo
tipo?

L'importante è che Padre gestisca correttamente le istanze di Figlio.
Il problema principale sono le incoerenze che potresti creare nel caso
in cui imposti come figlio F di un oggetto Padre B un'istanza che già
aveva un padre A: se non stai attento puoi trovarti nella situazione che
getFigli() di A ti dia F, ma F abbia come padre B.

La soluzione dipende dal caso. Alcune possibilità:

1) Padre lancia un'eccezione se provi ad impostargli un Figlio di un
altro padre; soluzione molto sicura applicabile nei casi in cui un
oggetto Figlio non debba necessariamente avere un Padre. Per esempio non
va bene per modellare un tree.

2) All'add() di un figlio viene fatta la remove() dall'eventuale vecchio
padre. Soluzione da applicare attentamente per via di eventuali
riferimenti circolari, ma molto utile per gestire efficacemente tree
dinamici.

3) Figlio è innerclass di Padre o cmq non può essere costruito in modo
autonomo. La relazione Padre/Figlio è congelata alle impostazioni
iniziali e non può cambiare; per creare le istanze di Figlio si fa
qualcosa tipo padre.createFiglio(). Utile per modellare gerarchie
immutabili tipo, appunto, alberi genealogici etc.


pole
--
ammentos - a lightweight persistence framework for JDK5
http://ammentos.biobytes.it
Flash tutorial: http://ammentos.biobytes.it/quickstart/quickstart.html
Back to top
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.