Originariamente inviato da Nikopol
codice:
class Numero {
    public Numero (double m){
        this.m=m;
    }
    private double m;
    private double nuovoM;
    public double getM (){
        return m;
    }
    public double somma (Numero unM){
        nuovoM=m+unM.getM();
        return nuovoM;
    }
    public double sottrai (Numero unM){
        nuovoM=m-unM.getM();
        return nuovoM;
    }
    public int compareTo (Numero unM){
        int x=0;
        nuovoM=m;
        if (nuovoM<unM.getM()){
            x=-1;
        }
        else if (nuovoM==unM.getM()){
             x=0;
        }
        else if (nuovoM>unM.getM()){
            x=1;
        }

        return x;

    }
    @Override
    public String toString(){
        return nuovoM+"\n";
    }
}
Tralasciamo per un momento la classe Main e concentriamoci sulla classe Numero che ha alcune cose che non vanno.

Innanzitutto la classe Numero ha lo scopo di "modellare" 1 numero ... non 2. Quindi non devi avere 2 campi di istanza ma 1 solo.

Poi quando si devono compiere delle "operazioni" come somma/sottrai, a livello concettuale ci sono (tipicamente) due modi per gestire la modifica lavorando a livello di oggetti:

Modo 1)
I metodi somma/sottrai modificano lo "stato" dell'oggetto su cui sono invocati. Quindi ad esempio:

public void somma(Numero unM) { ..... }

e invocando: num1.somma(num2);

Lo stato di num1 si aggiorna con il risultato di num1+num2

Modo 2)
I metodi somma/sottrai restituiscono un nuovo oggetto Numero senza alterare né lo stato dell'oggetto su cui sono invocati, né quello passato come argomento. Ad esempio:

public Numero somma(Numero unM) { ..... }

e invocando: Numero numSomma = num1.somma(num2);

si ottiene un nuovo oggetto Numero con la somma senza alterare num1 e num2.

Tieni bene a mente queste questioni concettuali.


Il compareTo come forma del metodo può anche andare bene. Tieni però presente che esiste la interfaccia Comparable che ha proprio il compareTo. Questo però è per generalizzare la comparazione degli oggetti. Non sei certo obbligato a sfruttare tutto questo. Insomma, il tuo compareTo è solo un metodo come gli altri.

Tecnicamente mi pare corretto il compareTo, salvo il fatto che si potrebbe compattare di più.

I punti più importanti che dovresti sistemare sono i due iniziali: il fatto che deve avere solo 1 campo e la questione delle operazioni somma/sottrai.