PDA

View Full Version : [JAVA] Consigli programmazione x un progetto vasto


ceccoggi
21-05-2008, 10:06
Salve a tutti, mi trovo a dover modificare un plugin di eclipse costituito da 8 packages, ognuno dei quali contiene centinaia se non migliaia di files.
Il problema e' che voglio tenere in memoria, attraverso un oggetto per esempio, qualcosa che viene introdotto da un utente in una determinata schermata, e recuperarlo tramite un'altra classe che entra in gioco in un altro package e in tutt'altro istante.
Normalmente dovrei vedere se esiste un oggetto globale comune che sia attivo nel momento in cui vengono eseguite la prima classe (quella di introduzione di alcuni dati dall'utente) e quando viene eseguita la seconda classe. In tal modo passerei il mio nuovo oggetto all' "oggetto globale" attraverso un metodo "set" e lo recupererei attraverso un "get" nella seconda classe.

Il problema e' il seguente..come faccio a capire se esiste un oggetto globale comune (e in memoria) per le due classi?
Esiste uno script o un programma che mi aiuti a trovarlo?

Debuggare a mano e a tentativi non e' la cosa + veloce e intelligente da fare, ma per ora sto procedendo cosi'..

Spero nel vostro aiuto!

lovaz
21-05-2008, 10:12
Lo crei tu, ad esempio come singleton

http://en.wikipedia.org/wiki/Singleton_pattern#Java

ceccoggi
21-05-2008, 13:14
Qualcosa di + semplice?

Tipo specifico le classi che voglio che siano prese in considerazione, specifico i packages del progetto, e il tool mi restituisce gli oggetti in comune usati da tali classi..

Esiste qualcosa del genere?

lovaz
22-05-2008, 09:25
Allora non ho ben capito cosa ti serve, il singleton e' il modo piu'
semplice (quelle che vedi nel link sono 3 implementazioni diverse, puoi
tranquillamente usare la seconda) per creare un oggetto globale...

Esempio, la suddetta schermata prendera' la singola istanza del singleton,
passera' a questo oggetto un'altro oggetto con le informazioni
(tramite un metodo tipo set... che ovviamente devi aggiungere tu al singleton),
e a quel punto qualunque altro codice puo' accedere al singleton e recuperare
queste informazioni (tramite un metodo speculare, es. get...)

ceccoggi
22-05-2008, 09:41
io non voglio creare un oggetto globale.
Nel mio caso specifico devo customizzare un plugin di eclipse, e devo toccare il meno possibile le classi gia' implementate, ma piuttosto vorrei scoprire quali oggetti in comune usano certe classi per forzargli dei parametri.
Esempio:
classeA, migliaia di linee di codice, fa una determinata operazione. Io in questo determinato punto, ossia quando viene eseguita tale classe, voglio mettere in memoria un parametro..a chi? non lo so, suppongo ci sia un oggetto globale che possa essere letto dalla classeB e dentro il quale posso memorizzare il parametro che voglio.
classeB, tipo la classeA, ma questa volta, quando questa classe sara' eseguita (beh, voglio dire quando tale classe sara' istanziata da un oggetto..) voglio leggere il parametro precedentemente memorizzato nell'esecuzione dell'oggetto relativo alla classeA.

come trovare l'oggetto globale che sicuramente usano?

lovaz
22-05-2008, 09:53
Che sicuramente usino un oggetto globale non puoi saperlo,
il javadoc ti da' informazioni sull'uso di una !classe! da parte di altre,
in cui ad esempio sia usata come parametro di un metodo.

Se esistano dei tool (debugger) che rilevino cose del genere non lo so.

Comunque ripeto che il modo in assoluto piu' semplice - e che ti consente
di toccare il meno possibile le classi implementate - e' aggiungere
un singleton (il singleton e' accessibile da parte di tutto il codice della stessa JVM)

banryu79
22-05-2008, 10:32
Forse non ho capito bene quello che ti occore/stai cercando di fare, inoltre immagino tu lavori con Eclipse, io ho come riferimento NetBeans; alcune considerazioni:

* hai una classeA e vuoi scoprire dove viene usata nel codice?
> in NetBeans basta posizionarsi nel file .java dove č contenuta, evidenziarne il nome nella dichiarazione e premere ALT+F7: questa funzionalitą si chiama [in NetBeans] "Show Usages" e va bene sia per nomi di classe, metodi e membri... immagino ci sia qualcosa di analogo in Eclipse.

* hai sempre una classeA ma questa volta vuoi scoprire gli oggetti (altre classi) che questa utilizza (conosce)?
> in NetBeans c'č un plugin che permette di generare codice java a a partire da un documento UML e viceversa: utile in casi come questo dato che ti permette di visualizzare le dipendenze tra le classi.