Tenho de entregar amanhã às 18h00 Lisboa (16h00 Brasília) e estou com dificuldade de por a funcionar a tempo.
Aqui vai o enunciado:
“Embora o Java disponibilize números de vírgula flutuante, há situações em que é
útil trabalhar com fracções de forma exacta, ou seja, sem erros de
arredondamento. Considere que uma fracção é um par de inteiros (numerador e
denominador) em que o denominador é necessariamente positivo.
Defina uma classe Fraccao cujos objectos representem fracções e disponibilize
as seguintes funcionalidades:
a. construtores com zero, um ou dois argumentos permitindo construir,
respectivamente, a fracção 1, uma fracção correspondendo a um número
inteiro ou uma fracção arbitrária;
b. métodos com assinatura int numerador() e int denominador() que
dão respectivamente o numerador e denominador da fracção;
c. métodos com assinaturas void soma(Fraccao f), void multiplica(Fraccao f)
e void divide(Fraccao f) permitindo, respectivamente, somar, multiplicar
ou dividir esta fracção com/pela fracção f;
d. um método com a assinatura double valor() que devolve uma
aproximação do valor representado pela fracção;
e. um método com a assinatura boolean equivalente(Fraccao other) que
verifique se a fracção é equivalente à dada;
f. um método com a assinatura Fraccao simplifica() que devolve a
fracção equivalente na sua forma irredutível (ou seja, cujo numerador e
denominador não têm divisores comuns);
g. um método com a assinatura Fraccao copia() que devolva uma fracção
igual;
h. um método com a assinatura String toString() que devolva uma
representação textual da fracção.
Escreva um cliente para testar esta classe.”