Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2014
    residenza
    Cantalupa (TO)
    Messaggi
    24

    Problema con puntatore ad un oggetto

    Sto cercando di creare una classe Frazione ma ho un problema con il metodo somma. La classe Frazione è molto semplice: ha solo due parametri a e b (rispettivamente il numeratore e il denominatore). Vorrei che il metodo somma venisse invocato su un oggetto Frazione passando per parametro un secondo oggetto Frazione da sommare. Il metodo restituisce il puntatore ad un oggetto Frazione.



    codice:
        public Frazione somma(Frazione frz) {
            //se uno dei 2 numeratori è 0 allora la somma è l'oggetto che ha il numeratore diverso da 0
            //se tutte e 2 le frazioni hanno il numeratore uguale a 0 viene gestito dal primo if sempre restituendo il puntatore all'oggetto su cui il metodo è stato invocato (dato che 0/n = 0)
                  
            //dichiaro il numeratore e denominatore della frazione somma
            int num, den;
    
                    
            if(a==0)
                              //il problema è alla prossima riga di codice, quello che vorrei fare è:
                              //ritorna il puntatore all'oggetto su cui il metodo somma è stato chiamato.
                  return (.......);
                             //Cosa scrivo all'interno del return?
    
    
             //calcoli vari
    
            //creazione della frazione e ritorno del puntatore
             
            return new Frazione(num,den);
        }



    E' corretto quello che sto cercando di fare? Cosa scrivo all'interno del return?
    Il programma sarebbe più leggibile se creassi un metodo statico da cui passo 2 oggetti Frazione e restituisco un nuovo oggetto Frazione (la somma delle due frazioni passate per parametro)?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da Ankarir Visualizza il messaggio
    E' corretto quello che sto cercando di fare? Cosa scrivo all'interno del return?
    return this;

    Quote Originariamente inviata da Ankarir Visualizza il messaggio
    Il programma sarebbe più leggibile se creassi un metodo statico da cui passo 2 oggetti Frazione e restituisco un nuovo oggetto Frazione (la somma delle due frazioni passate per parametro)?
    Mah... personalmente non mi piace tanto come soluzione.
    Io terrei un metodo di somma dentro Frazione che restituisce una nuova Frazione che è la somma di this e di quella passata come parametro.
    Ultima modifica di Alex'87; 06-05-2014 a 17:43
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ankarir Visualizza il messaggio
    codice:
                              //ritorna il puntatore all'oggetto su cui il metodo somma è stato chiamato.
                  return (.......);
    Cosa scrivo all'interno del return?
    Se il problema è principalmente il fatto che non sai ancora come restituire il riferimento all'oggetto su cui somma è stato invocato, beh, sappi che questo riferimento è dato dalla parola chiave "this".

    return this;

    Considera però anche una cosa. Se fai così, il tuo metodo somma può tecnicamente restituire un nuovo oggetto (quando arriva al fondo) oppure lo stesso oggetto su cui è invocato somma.
    Se i tuoi oggetti Frazione sono "immutabili" (non ci sono setter es. setNum(....) o setDen(....), allora è assolutamente ok questo che vuoi fare. Essendo immutabili sono assolutamente "condivisibili" e il chiamante non deve preoccuparsi di altro.
    Se i tuoi oggetti sono "mutabili", pensaci bene .....

    Pensa a cosa potrebbe succedere con del codice "ingenuo" del tipo:

    codice:
    Frazione frazC = frazA.somma(frazB);
    frazC.setDen(1);

    Se frazB fosse tale per cui quel a==0 e tu restituisci in pratica frazA, il povero codice "ingenuo" andrebbe a settare su frazA e potrebbe non essere quello che si vuole!

    Quote Originariamente inviata da Ankarir Visualizza il messaggio
    Il programma sarebbe più leggibile se creassi un metodo statico da cui passo 2 oggetti Frazione e restituisco un nuovo oggetto Frazione (la somma delle due frazioni passate per parametro)?
    No, sarebbe meno "object-oriented".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2014
    residenza
    Cantalupa (TO)
    Messaggi
    24
    Grazie mille per le risposte! Mi ero ingenuamente dimenticato del return this;
    PS La classe frazione è immutabile!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.