/* AI: n rappresenta un numero intero in notazione decimale con eventuale segno negativo d rappresenta un numero naturale maggiore di 0 in notazione decimale AF: crea il numero razionale con n al numeratore e d al denominatore */ public Rational (String n, String d)
I metodi pubblici sono i seguenti:
/* AF: restituisce una stringa che rappresenta il numeratore (numero intero in notazione decimale con eventuale segno negativo) */ public String numerator() /* AF: restituisce una stringa che rappresenta il denominatore (numero naturale maggiore di 0 in notazione decimale) */ public String denominator() /* AI: r != null AF: restituisce la somma del ricevente e di r */ public Rational add(Rational r) /* AI: r != null AF: restituisce la differenza tra il ricevente ed r */ public Rational subtract(Rational r) /* AI: r != null AF: restituisce il prodotto del ricevente e di r */ public Rational multiply(Rational r) /* AI: r != null AND r non e' 0 AF: restituisce il quoziente tra il ricevente ed r */ public Rational divide(Rational r)
Questa settimana non vengono assegnate "letture" per la parte di laboratorio. LEGGETE PERO' LE PARTI DI LIBRO INDICATE ALLA PAGINA DEL Programma delle Lezioni tenute dal prof. Martelli .
Per eventuali chiarimenti rivolgersi ai docenti.
NOTA: lo stesso TestRational.class, prodotto senza essere a conoscenza dei dettagli di implementazione della classe Rational dovra' funzionare in entrambi i casi.
A tal fine utilizzare il seguente algoritmo per calcolo del MCD (tale algoritmo si basa sulle seguenti proprieta' del MCD di due numeri interi positivi:
MCD(x,y) = { // x,y SONO NUMERI INTERI MAGGIORI DI 0 a=x; b=y; // MCD(a,b)=MCD(x,y) while (a DIVERSO DA b) if (a>b) a=a-b; else b=b-a; // a=b=MCD(x,y) return a; }ATTENZIONE: in quale classe ritenete sia opportuno codificare l'algoritmo per il calcolo del MCD (notate che servono due codifiche: una per int e una per BigNumber)? Pensate alla soluzione che vi sembra piu' opportuna e, prima di procedere, consultate il docente.
/* AF: restituisce una stringa che rappresenta il numero razionale */ public String toString() /* AF: restituisce un double che rappresenta il numero razionale */ public doubleValue()e modificare la classe TestRational (modificare il file TestRational.java in v1, compilare e poi copiare il .class in v2) in modo che usi i due nuovi metodi.
// Memorizza il numeri di conti che sono stati emessi private static int numberOfAccounts=0; // Numero del conto (assegnato in modo progressivo da numberOfAccounts) private int accountNumber;modificando il costruttore in modo che scriva su una finestra di dialogo il numero del conto creato e modificando i metodi deposit e withdraw in modo che soddisfino la seguente specifica:
// Se number==accountNumber procede come prima, altrimenti // scrive su finestra di dialogo il messaggio: // "errore: numero di conto errato" // e restituisce false public boolean deposit(in amount, int number) // Se number==accountNumber procede come prima, altrimenti // scrive su finestra di dialogo il messaggio: // "errore: numero di conto errato" // e restituisce false public boolean withdraw(in amount, int number)