Problemi con un costruttore

di il
3 risposte

Problemi con un costruttore

Ciao a tutti!

In una classe NRaz ("Numero Razionale") devo definire due costruttori: uno che crea un oggetto nei campi variabili di esemplare numeratore e denominatore, un secondo che assegna all'oggetto numero razionale il valore di zero (di conseguenza, che assegni al numeratore il valore zero, ed al denominatore un valore qualsiasi, diverso da zero).

public class NRaz {

//Campi di esemplare
private int num,den;

//Costruttore 1
public NRaz (int n, int d) {
  num=n;
  den=d;  //Come faccio a dire che il denominatore deve essere diverso da 0?
}

//Costruttore 2 che assegna il valore zero all'oggetto numero razionale
public NRaz () {
  num=0;
  den=//?? Cosa inserisco in questo campo?
}
}
Come definisco il secondo costruttore? Come faccio a dire al compilatore che al denominatore può assegnare un qualsiasi valore?
Ed inoltre, come faccio nel primo costruttore a dire che il denominatore deve essere diverso da zero?

Probabilmente sono domande banali, ma sono veramente agli inizi della programmazione con JAVA.

Grazie in anticipo

3 Risposte

  • Re: Problemi con un costruttore

    Ragiona: riguardati la definizione dei numeri razionali in matematica.
    Sei sicuro che dicono che il numero razionale '0' ha come denominatore qualunque numero?
    Ma anche se dovesse avere qualunque numero, perche' non scegli 'qualunque numero'? E poi tra tutti i numeri possibilo, c'e' ne uno che e' il migliore di tutti!.

    Oppure vedila cosi': come si rappresentano i numeri interi in forma razionale? E lo zero e' un numero intero? E quanto fa '0+5'? E in forma razionale?

    Per il problema di dire che il denominatore deve essere diverso da zero: tu non lo dici, tu controlli. E se non soddisfa il controllo, generi un'eccezione

    Questo non ha nulla a che fare con Java: e' valido per qualunque linguaggio di programmazione.
  • Re: Problemi con un costruttore

    migliorabile ha scritto:


    Ragiona: riguardati la definizione dei numeri razionali in matematica.
    Sei sicuro che dicono che il numero razionale '0' ha come denominatore qualunque numero?
    Ma anche se dovesse avere qualunque numero, perche' non scegli 'qualunque numero'? E poi tra tutti i numeri possibilo, c'e' ne uno che e' il migliore di tutti!.
    Effettivamente è vero, posso semplicemente ottenere il numero razionale 0 optando per la forma 0/1. D'altronde a me basta avere il numero 0, non mi interessa il denominatore.

    (Per quanto riguarda il fatto che il numero razionale 0 non abbia qualunque denominatore sono ancora dubbioso: che intendi? 0 nei numeri razionali può essere espresso come una frazione 0/x con x qualsiasi diverso da 0)

    migliorabile ha scritto:


    Per il problema di dire che il denominatore deve essere diverso da zero: tu non lo dici, tu controlli. E se non soddisfa il controllo, generi un'eccezione
    Immagino tu stia parlando di utilizzare un costrutto "if". Se così fosse, dobbiamo ancora affrontare l'"if" nel programma scolastico fin'ora svolto. Se così non fosse, non ho in mente altri metodi per creare un' "eccezione".
  • Re: Problemi con un costruttore

    buffer_overflow ha scritto:


    non è molto elegante
    Infatti le asserzioni non vanno usate per "validare" l'input (parametri, intendo) di costruttori/metodi pubblici accessibili da chiunque.
    Detto in altro modo: lo sviluppatore non deve usare le asserzioni per verificare se qualcun'altro sta usando "male" la funzionalità che ha sviluppato.
Devi accedere o registrarti per scrivere nel forum
3 risposte