Visualizzazione dei risultati da 1 a 10 su 20

Discussione: utilizzo dei reference

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    315
    Vediamo se ho capito. Allora, relativamente a questo argomento ho fatto un esercizio. Questa è la traccia:
    Creare una classe Risultato che dichiari una sola variabile d'istanza di tipo float e di nome risultato. Aggiungere eventuali metodi e costruttori utili. Creare una classe CambiaRisultato con un metodo public di nome cambiaRisultato() che prende in input un oggetto di tipo risultato e ne modifica la variabile interna risultato sommandola con un altro valore. Creare una classe con un metodo main() di nome TestRisultato che stampi la variabile risultato di un oggetto di tipo Risultato, prima e dopo che questo oggetto sia passato in input al metodo cambiaRisultato() di un oggetto di tipo CambiaRisultato.
    la mia soluzione è questa:
    codice:
    public class TestRisultato
    {
        public static void main(String args[])
        {
            Risultato oggetto1 = new Risultato();
            oggetto1.stampa();
            CambiaRisultato oggetto2 = new CambiaRisultato();
            oggetto2.cambiaRisultato(oggetto1);
        }
    }
    codice:
    public class Risultato
    {
        float risultato;
        
        public float somma(float valore)
        {
            risultato = risultato + valore;
            return(risultato);
        }
        
        public void stampa()
        {
            System.out.println(risultato);
        }
    }
    codice:
    public class CambiaRisultato
    {
        public void cambiaRisultato(Risultato oggetto)
        {
            oggetto = new Risultato();
            oggetto.somma(10);
            oggetto.stampa();
        }    
    }
    E' corretto dire che le righe di codice che ho evidenziato sono esattamente quelle che permettono all'oggetto2 di puntare alla locazione di memoria di oggetto1? Inoltre direi che in particolar modo è proprio new Risultato() presente nel metodo cambiaRisultato ad "indicare" a oggetto2 dove deve puntare.
    Sono corrette queste considerazioni?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da newutente Visualizza il messaggio
    E' corretto dire che le righe di codice che ho evidenziato sono esattamente quelle che permettono all'oggetto2 di puntare alla locazione di memoria di oggetto1? Inoltre direi che in particolar modo è proprio new Risultato() presente nel metodo cambiaRisultato ad "indicare" a oggetto2 dove deve puntare.
    Sono corrette queste considerazioni?
    Il metodo cambiaRisultato riceve il riferimento ad un oggetto Risultato. Questo oggetto NON lo stai utilizzando in alcun modo, perché al parametro assegni subito un altro (nuovo) oggetto Risultato.
    Quindi, onestamente, l'esempio che hai fatto ha poco/nessun senso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    315
    Concettualmente mi è chiaro, il problema che ho in questo momento è la comprensione del codice.
    Mi sa che mi sto perdendo in un bicchier d'acqua.
    Vediamo se riesco a schemattizare le idee che ho in questo momento, seppur fatto in maniera "meccanica".
    Allora, se ho la necessità di far puntare due oggetti dello stesso tipo alla stessa locazione di memoria devo utilizzare istruzioni di questo tipo:
    codice:
    Data oggetto1 = new Data();
    Data oggetto2 = oggetto1;
    altrimenti, se ho la necessità di far puntare due oggetti di tipo diverso alla stessa locazione di memoria devo necessariamente utilizzare queste istruzioni:
    codice:
    ...
    Data2 oggetto2 = new Data2();
    Data oggetto1 = new Data();
    oggetto2.cambiaReference(oggetto1);
    ...
    codice:
    public class Data2
    {
            public void cambiaReference(Data data)
            {
                      data = new Data();
            }
    }
    E' corretto?
    Ultima modifica di newutente; 05-11-2014 a 19:01

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da newutente Visualizza il messaggio
    far puntare due oggetti di tipo diverso alla stessa locazione di memoria
    Questo che hai detto non ha praticamente senso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    315
    vabbè ci devo ragionare un po' su.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da newutente Visualizza il messaggio
    Allora, se ho la necessità di far puntare due oggetti dello stesso tipo alla stessa locazione di memoria devo utilizzare istruzioni di questo tipo:
    codice:
    Data oggetto1 = new Data();
    Data oggetto2 = oggetto1;
    Sperando di chiarirti le idee: qui non hai due oggetti! Ne hai solo uno e dopo la seconda riga, hai due variabili reference con lo stesso valore, ovvero fanno riferimento entrambe allo stesso oggetto.

    Se successivamente assegni qualcos'altro (es. un altro nuovo oggetto Data) ad una delle due variabili, l'altra variabile non cambia e continua a fare riferimento all'oggetto Data creato alla prima riga.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.