Newsgroup: it.comp.java
Titolo: Come posso ridurre la dipendenza tra oggetti?

Ho un gruppo di oggetti fortemente accoppiati.
In questo gruppo praticamente ogni oggetto conosce almeno un'istanza
di ogni classe del gruppo e interagisce.
Alcuni oggetti hanno compiti fortemente centralizzati per gestire la
logica.
Il codice sta diventando troppo complicato da gestire e capire, e
vorrei ridurre la dipendenza tra gli oggetti.
Mi potete consigliare qualche pattern?



Il make-a-good-project-planning-pattern dovrebbe fare al caso tuo.
Ma perche' pensate sempre che esista una bacchetta magica che faccia il 
lavoro di studio e progettazione al posto vostro ? Che cavolo vuol dire 
'mi consigliate un pattern' ? Hai progettato male il programma, basta, 
quello che devi fare e' metterti a tavolino e cominciare a disegnare 
(con carta e matita) come le varie funzioni del programma interagiscono 
tra loro. Arrivare poi alla definizione delle classi e' un gioco da ragazzi.

 di ogni classe del gruppo e interagisce.
Non ci sono troppe info, comunque in queste situazioni si usa tipicamente
il Mediator
hth,
uL
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 tra loro. Arrivare poi alla definizione delle classi e' un gioco da ragazzi.
beh...


 wrote in message
news:HHhDd.18030$_E5.4...@twister2.libero.it...

perchč il diavolo fa i programmi ma non i progetti ^_^
miaoo maks.

 e se i requisiti cambiano in maniera non prevista che si fa?
si rivede l'analisi e si valuta l'impatto delle modifiche ... e se è davvero
troppa si riscrive da capo ... imo ^_^


 beh...
Mai provato ? Prova, scoprirai un mondo nuovo...

 Se il programma e' progettato bene, il problema non sussiste.
dice muco:
"se ti chiedono un hello world poi ci ripensano e vogliono un webserver 
il programma è progettato bene, per essere un hello world però"
hai confuso analisi con design.
per l'OP:
le metodologie Agile si pongono proprio nella posizione di risolvere i 
problemi in contesti in cui i requisiti sono in continuo cambiamento, se 
ti interessa la questione ti consiglio di consultare:
http://www.objectmentor.com
http://www.controlchaos.com/about/
http://agilemovement.it
-- 
sbi

 Mai provato ? Prova, scoprirai un mondo nuovo...
Fare programmi è un gioco da ragazzi fino a quando si è ragazzi e si
gioca... poi purtoppo, a volte, diventa un lavoro da adulti... 
Ti auguro di continuare a lungo a vivere nel tuo mondo!!!!
Ciao.


 di ogni classe del gruppo e interagisce.
 > [...]
Ciao devil, per quanto riguarda il pattern mi associo ovviamente alla 
risposta del maestro Landini :)
Visto che comunque sei disposto ad affrontare un refactoring del codice 
mi permetto di consigliarti (se ce ne fosse bisogno) una revisione del 
livello di incapsulamento delle tue classi: interazioni troppo strette 
tra oggetti spesso (non sempre) possono essere sintomo di un errato 
incapsulamento; magari classi che sono state implementate separatamente 
potevano essere una classe sola, o al limite una poteva essere 
innerclass dell'altra. L'uso (non abuso) di interfacce e classi astratte 
č il modo principe di ridurre le dipendenze. E alla fine di tutto questo 
lavoro, se effettivamente nei tuoi diagrammi UML permangono ancora un 
sacco di linee, č proprio il caso di introdurre un (o piů) mediator. E 
visto che il sistema č realmente complesso un bel Facade verso i poveri 
utilizzatori č la ciliegina sulla torta :)
-- 
_ _ _  _  /_
  _ /_//_///_' ___
   / and yet it does move...

 troppa si riscrive da capo ... imo ^_^
meglio il refactoring se non troppo costoso...cioè - tra le altre - 
applicare pattern ove prima non era stato previsto. Cioè proprio quello 
chiesto da devil
ciao

 Se il programma e' progettato bene, il problema non sussiste.
BUM!
capodanno č gią passato!!!

 ha scritto nel messaggio 
news:HHhDd.18030$_E5.4...@twister2.libero.it...

Tu che sai tutto, ho un mio amico che ha sta sviluppando un'applicazione 
web, dove si sta un pò incasinando tutto, ci sono connessioni al database, 
query sql sparse qua e là, un sacco di codice duplicato nelle servlet, jsp 
con script inleggibili....non é che potresti consigliargli un pattern che 
faccia al caso suo?
cosa? riprogettare tutto? ah si ottima idea!
Io gli consiglierei di guardarsi pattern MVC, uno dei 
make-a-good-project-planning-pattern forse. Ma avrai ragione te di sicuro.

 make-a-good-project-planning-pattern forse. Ma avrai ragione te di sicuro.
E secondo te cosa fara' una volta che ha visto come funziona il pattern 
MVC ? Forse c'e' una classe Java del tipo new PatternMVC() che prende 
tutte le classi gia' scritte e le riordina per bene secondo quel modello 
? Oppure dovra' comunque riscrivere quasi tutto il codice ?
Il pattern MVC e' solo un modello di come dovrebbe essere realizzato un 
programma. Ci sono alcuni strumenti/librerie che aiutano ad implementare 
questo modello, ma non c'e' una bacchetta magica che prende un programma 
progettato e scritto male e lo trasforma in un programma ben 
ingegnerizzato. E finche' non butti giu' uno schema a blocchi del 
programma non riuscirai mai ad utilizzare efficacemente qualsiasi 
modello, o pattern che dir si voglia.
D'altra parte quando si discute con degli universitari che credono di 
sapere tutto ma non hanno mai nemmeno provato ad andare oltre 
System.out.println("Hello, World!"); non si puo' pretendere molto. 
Comincia a lavorare nel mondo reale prima di dare consigli a chi ha piu' 
esperienza di te.

 ha scritto nel messaggio 
news:PRtDd.18945$H%6.78...@twister1.libero.it...





Ti stgai arrampicando sugli specchi. In poche parole tu stai dicendo che i 
patetrn non servono a un cavolo.
Probabilmente tu programmi male.
Certo che applicare il pattern richiede di riprogettare tutto! che discorsi 
stai facendo?
Solo che anziché dire riprogetta tutto, gli dico riprogetta tutto con questo 
pattern, o insieme di patterns.
Beh e dove sta l'errore? Se tu fai tutto di testa tua bravo complimenti, 
sarai un genio probabilmente.
Non commento neppure la parte finale, perché non merita. 

 Non commento neppure la parte finale, perché non merita. 
Colto nel vivo ?

 programmatori fanno da piu' di 20 anni.
Sei arrabbiato perché non sei riuscito a laurearti? (professori
cattivoni!!!)
Non ti preoccupre: prima o poi passa.
Nel caso tu ci volessi riprovare con l'università ti dò una dritta: se, ad
un esame, un professore ti fa una domanda del tipo "Quali sono i tipi
primitivi di java?" non gli dire "vai su google e digita 'java tipi
primitivi'"... tendono ad incazzarsi (i prof.).
Bye.


L'errore sta nel dire 'usa il pattern MVC' come se fosse la panacea di
tutti i mali di programmazione e come se fosse la bacchetta magica che
risolve tutti i problemi. Senza un'adeguata progettazione a tavolino (e
PC spento) puoi applicare tutti i pattern del mondo ma non riuscirai mai
a tirare fuori un programma decente.
Sei tu che non comprendi. Dire guardati il pattern MVC in questo caso 
significa offrigli una grande opportunità in piu' di ricerca sull'argomento 
e studio, basterà infatti andare suj google per trovare un sacco di 
materiale utile.
Se gli dici riprogetta tutto bene come dici tu non gli dai niente.

 Se gli dici riprogetta tutto bene come dici tu non gli dai niente.
Ma non mi dire... mi domando come abbiamo fatto a programmare fino ad 
oggi senza MVC...

 ha scritto nel messaggio 
news:2TwDd.18876$_E5.4...@twister2.libero.it...



Vedo che non hai abbastanza connessioni neuronali per capire...gli altri 
hanno capito di sicuro 


Allora, senza pretese di essere completo o illuminante, e in ordine 
rigorosamente sparso:
1) crea delle interfacce (in Java: interface e abstract class)
Se riesci a individuare dei "contratti" fra diverse classi, allora rendi 
il tutto "ufficiale" ! Meglio comunque le interfacce, sono più "pure"
2) se hai bisogno di funzionalità comuni, evita di risolvere il tutto 
con l'ereditarietà, ma creati delle mini-librerie da riutilizzare 
(magari in altri progetti, no ?)
Se procedi con lucidità vedrai che utilizzerai tu stesso dei design 
pattern senza neanche saperlo.
Perché Java è buono qui, è buono qui :)

 wrote in message
news:41de9ba1$0$8207$5fc...@news.tiscali.it...

oppure tacciono per non insultare ^_^ ( a chi poi ... non è dato sapere
^_^ )
cmq a parte tutto capisco che Coder se la prenda ... sembra che la gente
pretenda di risolvere i problemi con la bacchetta magica, mentre a volte si
tratto solo di mettersi a lavorare ... e il ng dovrebbe riguardare
discussioni "interessanti" su java ( anche a livello basilare ovviamente ) e
non semplice halpdesk a scrocco ...
^___^
miaooo maks.

 non semplice halpdesk a scrocco ...
guarda che chiedere quello che ha chiesto devil non significa chiedere "help 
desk" a scrocco.
E noi non abbiamo dato la bacchetta magica...non abbiamo mai detto che i 
pattern di programmazione lo sono, non abbiamo mai detto che non bisogna 
progettare la propria applicazione...nulla di tutto questo.
Comunque trovo molto piu' interessanti discussioni sui pattern di 
programmazione piuttosto che domande su come si fa a passare da int a float, 
se permetti. Leggeti il manuale se non lo sai... 

 wrote in message
news:41dfb7d4$0$8201$5fc...@news.tiscali.it...

ma avete mangiato yogurt ultimamente ???
miaooo maks.
p.s.
bella la discussione che parte da devil e finisce quasi in flame ^___^. ci
vedo un tocco di gibsoniana memoria ... hi hi hi ^___^

 hanno capito di sicuro
Io più che altro sro apprezzando il tuo quoting
-- 
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it/imsv/

 Mai provato ? Prova, scoprirai un mondo nuovo...
          \|||/
          (o o)
,----ooO--(_)-------.
| PLEASE            |
|   DON'T FEED THE  |
|     TROLLS !!     |
'--------------Ooo--'
         |__|__|
          || ||
         ooO Ooo 
