|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
[Java] Come ottenere riferimenti da altre classi...
Salve raga...
descrivo il mio problema... Ho tre classi A, B, e C create in sequenza ognuna delle quali crea una nuova classe D... Quest'ultima però deve far riferimento ad un valore contenuto nella classe A... Quindi come posso ( se posso ) chiamare da D il metodo della classe A inizialmente creata? Thanks
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
Ma parli di classi o oggetti?
Da una classe istanzi un oggetto, per accedere a un metodo di un oggetto di A da dentro un oggetto D, D deve avere un riferimento ad A e chiami il metodo su quello. Alternativamente puoi usare un valore statico in A, però il discorso è troppo generico, oltre che poco chiaro. Probabilmente scrivendo il programma in modo diverso risulta molto più semplice.
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
Mi rendo conto di non essere una cima in quanto a spiegazioni...
Comunque stando al grafico qui di seguito, la creazione D dovrebbe stamparmi x... Possibile?
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
Sinceramente il grafico non è molto chiaro, dice tutto e niente, di fatto non descrive nulla del comportamento del programma...
Posso solo intuire che da una classe (probabilmente in un metodo static main) vengono creati 3 oggetti istanziandoli da A, B e C rispettivamente. Poi dentro ad ognuno dei costruttori delle suddette classi, viene istanziato un oggetto dalla classe D. La variabile "valore" che viene impostata a x, non appartiene alla classe A, ma alla classe nella quale viene eseguito il codice che istanzia A. Qualcosa del genere insomma: Codice:
A a = new A(); B b = new B(); C c = new C(); valore = x; Codice:
D d = new D(); Oppure ancora, se il metodo non è statico, passi ai costruttori di A, B e C un riferimento this, e prevedi un metodo di get. Esistono anche altre soluzioni, ma non so nulla del contesto, quindi è poco utile formulare altre ipotesi. Comunque è troppo vago... è una esercitazione? un esempio?
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
Mmmm, praticamente ho un JFrame principale con all'interno diversi pulsanti...
Ognuno di questi una volta premuto crea una nuova classe la quale usa D per connettersi ad un database... L'indirizzo del database però viene stabilito nella classe principale quindi dovrei fare in modo che D riesca a risalire a tale indirizzo... Spero che spiegandolo così risulti più comprensibile... Passare i riferimenti non è facile in quanto il percorso in alcuni casi potrebbe essere lungo... Però da quello che sto capendo mi sa che è l'unico modo...
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Detta così sembra un bel problema di disegno delle classi.
C crea D che deve accedere ad una variabile di A? E se A non esistesse? Una soluzione che non coinvolga il ridisegno completo delle classi (secondo me sarebbe la soluzione da seguire) potrebbe essere quella di far implementare ad A una interfaccia per la proprietà che interessa e passarla al costruttore di B, C e di conseguenza D. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Salerno
Messaggi: 4338
|
La classe contenente la variabile necessaria è quella principale e deve esistere per forza...
Ridisegnare le classi significa usare la soluzione proposta da demos88 che passi sempre il riferimento this? Ma la classe principale non può creare un riferimento a cui possa accedere D ?
__________________
Doc : "Ovviamente, il continuum temporale è stato interrotto creando questa nuova temporale sequenza di eventi risultante in questa realtà alternativa" Marty : ...
|
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Quote:
Intanto come mai la stringa di connessione ce l'ha la classe principale? Non potresti usare una classe con metodi statici per l'accesso alla configurazione? Immagino che la stringa di connessione sia una variabile configurabile del programma e non cablata nel codice, ma anche se lo fosse potresti incorporarla in una classe Configurations e imporre sul costruttore di D che debba essere passata la stringa di connessione (e se non viene fatto se la recupera da Configurations, diciamo che non è bellissimo ma può andare). Dovresti (a questo punto direi per il prossimo progetto) separare la parte grafica dalla logica. |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:38.




















