Trabalho I – Algoritmos e Programação II Descrição: Este trabalho, que deverá ser feito individualmente, consiste em implementar em Java o conjunto de classes de acordo com o enunciado abaixo. Enunciado do problema: Estamos interessados em desenvolver um novo tipo de dados chamado Racional para uma aplicação matemática que utiliza números racionais (que podem ser representados por uma fração). Através da análise de requisitos da aplicação, chegou-se à modelagem UML apresentada a seguir. De forma resumida, cada método é descrito abaixo: • Racional(num:int, den:int) é o construtor de números racionais que recebe os valores para o numerador e denominador. Sabe-se que o denominador não pode ser zero. • Racional(numero:int) é o construtor de números racionais que recebe um valor inteiro para ser representado como um racional. Por exemplo, o número 5 é representado por 5/1. • getNumerador() retorna o valor do numerador. • getDenominador() retorna o valor do denominador. • toString() retorna o número racional como uma string no formato “numerador/denominador”. Por exemplo “5/2”. • toDouble() retorna o valor em ponto flutuante referente ao número racional. Por exemplo, o número 5/2 retorna o valor 2,5. • somar(rac:Racional) soma um número racional a outro número racional recebido por parâmetro e retorna o número racional resultante da soma. Este método não deve alterar os valores sendo somados. Por exemplo, 3/2 somado a 5/2 é igual a 8/2. • subtrair(rac:Racional) subtrai de um número racional o valor de outro número racional recebido por parâmetro e retorna o número racional resultante da subtração. Este método não deve alterar os valores sendo subtraídos. Por exemplo, 3/2 subtraído de 5/2 é igual a -2/2. • • • multiplicar(rac:Racional) multiplica um número racional por outro número racional recebido por parâmetro e retorna o número racional resultante da multiplicação. Este método não deve alterar os valores sendo multiplicados. Por exemplo, 1/3 multiplicado por 2/4 é igual a 2/12. dividir(rac:Racional) divide um número racional por outro número racional recebido por parâmetro e retorna o número racional resultante da divisão. Este método não deve alterar os valores sendo divididos. Por exemplo, 1/3 dividido por 2/4 é igual a 4/6. simplificar(rac:Racional) é um método de classe responsável pela simplificação do numerador e denominador de um número racional, retornando um novo número racional simplificado. Este método não deve alterar o número racional recebido como parâmetro. Por exemplo, 10/4 é simplificado para 5/2. Adicionalmente, deverá ser criado um pequeno programa de teste da classe, onde sejam criados vários números racionais e o resultado de cada operação seja impresso na saída do console (via System.out.println). Objetivos: Consolidar o conhecimento sobre definição e implementação de classes em Java. Incentivar a pesquisa de algoritmos para a solução de problemas. Observação: O desenvolvimento do trabalho pode ser realizado em qualquer ambiente de programação. Entretanto, a avaliação será realizada utilizando-se o prompt do sistema operacional (Windows ou Linux) usando-se a máquina virtual java. Sendo assim, O trabalho deverá ser executado com os recursos disponíveis nas máquinas dos laboratórios da FACIN/PUCRS. Trabalhos que não puderem ser executados no ambiente do laboratório receberão nota zero. Documentação: Cada aluno deve ENTREGAR uma mídia contendo uma cópia dos PROGRAMAS FONTE (.java). Todo o programa deverá estar comentado de acordo com o padrão Javadoc. Avaliação: os trabalhos serão avaliados de acordo com critérios a serem estabelecidos pelo professor da disciplina, considerando o que é pedido no enunciado e o que foi realizado com sucesso pelo aluno. A classe Racional desenvolvida será testada através de um programa com casos de teste, por isso é fundamental que os métodos sejam implementados da maneira como foram apresentados no diagrama da classe. Todos os trabalhos deverão ser entregues na data marcada. Não serão aceitos trabalhos fora do prazo. Trabalhos copiados resultarão em nota zero para todos os alunos envolvidos. Mensagens de erro apresentadas pelo Java durante a execução do programa, mesmo que a aplicação não pare de executar, serão consideradas como erros de execução. Programas com erros de compilação receberão nota zero.