Progettino
L'obiettivo del progettino è implementare un'aritmetica per
i numeri interi grandi in Java.
Primo, definire un tipo Natural nel package progettino per rappresentare i numeri naturali. Il tipo Natural ha le
seguenti specifiche (metodi pubblici):
- un metodo isZero tale che n.isZero() vale
true sse n rappresenta il numero 0.
- un metodo equals tale che se n1 e n2 sono due
oggetti di tipo Natural allora n1.equals(n2) vale true sse i due valori rappresentati sono uguali.
- un metodo less tale che se n1 e n2 sono due
oggetti di tipo Natural allora n1.less(n2) vale true
sse il numero naturale rappresentato da n1 è strettamente minore di quello rappresentato da n2.
- un metodo toString tale che n.toString() restituisce
il numero naturale rappresentato da n sotto forma di una stringa.
- un metodo statico makeNatural che prende un numero intero n di tipo int. Se n è positivo il metodo restituisce un oggetto di tipo Natural che rappresenta il valore n. Se n è negativo, il metodo restituisce un oggetto di tipo Natural che rappresenta il valore 0.
- un metodo plus tale che se n1 e n2 sono due
oggetti di tipo Natural allora n1.plus(n2) è un
oggetto di tipo Natural che rappresenta la somma dei due valori.
- un metodo mult tale che se n1 e n2 sono due
oggetti di tipo Natural allora n1.mult(n2) è un
oggetto di tipo Natural che rappresenta il prodotto dei due valori.
- un metodo minus tale che se n1 e n2 sono due
oggetti di tipo Natural allora n1.minus(n2) è un
oggetto di tipo Natural che rappresenta la differenza dei due valori. Se tale differenza è negativa, il metodo restituisce un oggetto di tipo Natural che rappresenta il valore 0.
Questo è il file che permette di verificare che la vostra
implementazione di Natural è corretta.
Per l'implementazione, usare due subclass di Natural che non
siano visibili fuori dal package progettino:
- La prima class Zero rappresenta il numero 0.
- La seconda class Num ha due campi.
Un campo contiene una cifra del numero e l'altro campo il resto del numero.
Si può scegliere fra un'implementazione sinistra-destra o destra-sinistra.
Per esempio, in un'implementazione sinistra-destra, l'oggetto di tipo Natural che rappresenta il numero 123 è creato cosí:
new Num(1,new Num(2, new Num(3, new Zero())))
Mentre in un'implementazione destra-sinistra, l'oggetto è creato come segue:
new Num(3,new Num(2, new Num(1, new Zero())))
Per l'implementazione dei metodi plus, minus e mult ricordarsi come si impara a fare queste operazioni a scuola.
Secondo, definire un altro tipo Int per rappresentare
l'aritmetica sui numeri interi grandi la cui implementazione utilizza
il tipo Natural. Il tipo Int dovrà avere gli stessi metodi:
isZero, equals, less, toString, makeInt, plus, minus, mult.
Questo è il file che permette di verificare che la vostra
implementazione di Int è corretta.
Laurent Théry
Last modified: Tue May 7 16:15:03 MEST 2002