Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-01-2012, 13:49   #1
Fire Fox II
Senior Member
 
L'Avatar di Fire Fox II
 
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 : ...... "Che lingua è, Doc?!?"
Fire Fox II è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2012, 14:37   #2
demos88
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
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2012, 15:00   #3
Fire Fox II
Senior Member
 
L'Avatar di Fire Fox II
 
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 : ...... "Che lingua è, Doc?!?"
Fire Fox II è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2012, 15:21   #4
demos88
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;
Poi nei costruttori di A, B e C c'è una istruzione che istanzia un oggetto di tipo D:
Codice:
D d = new D();
Io non so cosa facciano questi oggetti d (sono 3 in tutto, uno per a, uno per b e uno per c), ma se dentro a d vuoi avere un riferimento a "valore", devi o modificare i costruttori di A, B e C in modo che prendano come parametro un riferimento a "valore" (sempre se questo non è un tipo primitivo, che allora devi incapsulare in una classe) e che poi lo girano al costruttore di D; oppure se il metodo in cui crei a, b e c è statico, devi rendere "valore" un campo statico della classe e poi ti riferisci ad esso così: NomeClasse.valore .
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
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2012, 15:34   #5
Fire Fox II
Senior Member
 
L'Avatar di Fire Fox II
 
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 : ...... "Che lingua è, Doc?!?"
Fire Fox II è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2012, 15:35   #6
tomminno
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.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2012, 17:47   #7
Fire Fox II
Senior Member
 
L'Avatar di Fire Fox II
 
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 : ...... "Che lingua è, Doc?!?"
Fire Fox II è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2012, 15:17   #8
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Fire Fox II Guarda i messaggi
La classe contenente la variabile necessaria è quella principale e deve esistere per forza...
Nella programmazione ad oggetti non esiste il concetto del "deve esistere per forza"

Quote:
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 ?
Se non ho capito male il tuo problema è l'aver legato troppo strettamente la GUI alla logica del programma.
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.
tomminno è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
Reddit punterà sull'AI per miglio...
Samsung ha obiettivi molto ambiziosi per...
I produttori non faranno sconti sulle me...
Ubisoft potrebbe cedere pezzi se il pian...
Qualcomm potrebbe utilizzare una tecnolo...
Starfield per Nintendo Switch 2 potrebbe...
Un MacBook Pro a -300€, i MacBook Air M4...
Amazon abbassa i prezzi sugli iPhone: sc...
Amazon, ancora sconti sugli smartphone A...
iPhone Air 2 'riciclerà' alcuni c...
Offerta Amazon da non perdere: lo speake...
Nioh 3 debutta alla grande su Steam: pri...
Al centro della Via Lattea ci potrebbe e...
Elon Musk ora guarda alla Luna: SpaceX p...
La Cina ha lanciato nuovamente lo spazio...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:38.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v