Newsgroup: it.comp.java
Titolo: Sull' architettura...

Salve,
sto scrivendo il mio primo programma in java in modo articolato.
Mi stanno venendo alcuni dubbi sull'architettura del progetto e non 
riesco a trovare direttive che mi illuminino a riguardo.
Premettendo che sto usando swing, la situazione è:
ho fatto un file programma.java che chiama una classe finestra esterna 
(extends JFrame) che al suo interno crea due pannelli p1 e p2 (che in 
realtà sono due classi esterne che si estendono su JPanel)
Ora:
la divisione che ho fatto è corretta?
(so bene che avrei potuto fare tutto dentro ad un unico file, ma visto 
che ci si deve lavorare in tanti su questo progetto ho pensato di 
dividere i file ... senza contare che mi trovo meglio io, ilprogramma è 
più leggibile etc)
nel dettaglio: come faccio a gestire gli ActionListener tra nel caso i 
due pannelli p1 e p2 devono comunicare tra loro?
Faccio controllare tutto da finestra? Creo un action listener in 
finestra che senda a sua volta delle action ai due pannelli? (magari la 
sto sparando grossa, ma abbiate pazienza :) )
In generale: esiste un "metodo da manuale" che mi può guidare nel 
progettare l'architettura di un programma quando due o più classi di 
questo hanno necessità di comunicare direttamente tra di loro?
Se non esiste un "metodo da manuale" quale può essere un approccio per 
una corretta pianificazione?
Grazie mille e scusate il disturbo
--
Cristian

 questo hanno necessità di comunicare direttamente tra di loro?
"Strive for loosely coupled designs between objects that interact."
-- 
Andrea Sansottera
UGIdotNET [Italian] 
http://www.ugidotnet.org
My weblog [Italian] 
http://blogs.ugidotnet.org/andrew/

 "Strive for loosely coupled designs between objects that interact."
Grazie mille dell'hint :D

 la divisione che ho fatto è corretta?
Bisogna vedere cosa rappresentano i pannelli. Non estendere un componente
solo per riusarne i metodi. Cerca di creare un oggetto ad un livello logico
più alto. 
Esempio: devi fare una finestra con un pannello che mostri i dati di una
persona. Crei una classe che estende JPanel con i vari textfield per i dati
anagrafici. Il resto dell'applicazione non deve accedere a questo pannello
ottenendo un riferimento ai textfield ma ad esempio tramite un metodo
setPersona (Persona p) che prende i dati dall'oggetto che gli passi. 
A quel punto il tuo componente è qualcosa di nuovo e utile che facilita il
compito al resto del programma, non solo una contenitore di cose che poi
devono cmq essere gestite dall'esterno. Più l'oggetto è coeso (contiene
tutto quello che gli serve e niente di più) e meno dovrà comunicare col
resto del mondo (basso accoppiamento, come già ti hanno scritto).
Ricordati che puoi sempre definire degli eventi (ed i conseguenti Listener)
per gestire i tuoi eventi di livello più alto. Ad esempio una JList non ti
costringe a ricevere tutti gli eventi di click del mouse ma genera un
evento quando cambia la selezione. Il cambiamento della selezione è la
conseguenza di una serie di eventi di basso livello di cui il componente ti
fornisce un'astrazione
Ciao
-- 
chi sono e soprattutto chi non sono:
http://www.softeaware.it

 Ciao
Ciao e grazie :)
--
Cristian

 l'oggetto, sia esso il JPanel o altro.. ci sono? >:|
Scusami ma non ti seguo :)
