Problemas de Lógica de programação e POO;
1- Numerão:
Dependendo das aplicações científicas, um número com 1000 casas é insuficiente (por exemplo para armazenar a massa de um planeta ou a energia dele em órbita).
Para isso, os cientistas do ITO (Institute of Tecnology at Oz-asco) decidiram contratar você para implementar uma classe Java chamada NumeroGrande, capaz de ser criado com uma precisão definida pelo usuário. Exemplo:
NumeroGrande ng = new NumeroGrande(1000);
Significa que o usuário cria um número inteiro grande com 1000 casas. Para que seja possível implementar esse número, ele deve receber uma String como valor (e obviamente essa String deve ser decodificada para que o número possa ser manipulado. Exemplo:
ng.setValorString(“1827232318390128309128301938102938129038”);
Além disso, na operação de soma (a única que ele implementa), um número grande recebe como argumento outro número grande para ser calculado, como no exemplo abaixo.
NumeroGrande n3 = n1.soma(n2); // n3 = n1 + n2;
A implementação da soma deve ser feita da seguinte maneira (vamos somar 350 com 971)
2- Número Fracionário
Um número fracionário é definido como uma estrutura que armazena 2 valores inteiros (numerador e denominador). Dessa forma, um número fracionário pode, inclusive realizar operações de soma, subtração, multiplicação e divisão, dadas abaixo.
Neste sentido, um número fracionário a/b pode se somar ao número fracionário c/d seguindo-se a fórmula descrita, onde “a” representa o numerador do primeiro elemento e “b" seu denominador.
Uma operação em Java é sempre denotada por métodos. Portanto se quisermos, por exemplo, somar 2 números fracionários, é necessário que haja um método que calcule isso. De que forma?
Supondo que N1 e N2 sejam objetos da classe NumeroFracionario, obteremos um número N3 através do seguinte comando
N3 = N1.soma(N2);
3-Clientes da Loja
s Lojas P&I possuem agora, além do modelo Pré-Pago de compras para seus clientes comuns, uma nova modalidade: Clientes VIP. Independente do tipo de cliente, sempre há um crédito disponível na loja que permite com que cada um faça suas compras. Obviamente o cliente que estiver com seu saldo zerado não poderá fazer mais compras. Caso queira continuar comprando, o cliente pode “quitar suas dívidas” adicionando valores ao seu saldo remanescente (tipo uma conta de celular mesmo). Porém para o Cliente VIP há um saldo extra (o famoso “fiado” do interior). Mesmo que não haja saldo, porém havendo limite, o cliente VIP pode efetuar suas compras. Observe o Modelo abaixo
Implemente as classes descritas e uma aplicação exemplo para testar as compras tanto dos clientes normais quanto dos clientes VIP.