Laboratório 9 - 30/04/2014
O último projeto que vocês irão desenvolver será uma calculadora Android que funciona em dois modos: o modo tradicional e o modo RPN (como as calculadoras financeiras e científicas da HP). Nesse laboratório, vocês irão adicionar memória ao modelo da calculadora, com uma nova fileira de botões, e implementar o modelo da calculadora RPN.
1. Baixe o projeto da calculadora. Você deve adicionar quatro novas funções à calculadora, em uma nova fileira de botões acima da primeira: M+, que adiciona o valor do display a uma memória interna da calculadora (resetar a calculadora não zera a memória), MR, que copia o valor da memória para o display, MC, que zera a memória, e +-, que troca o sinal do valor do display. Lembre de continuar seguindo a estrutura básica do padrão MVC que o projeto da Calculadora já segue, e não se esqueça de tratar corretamente a gravação e recuperação do estado da calculadora para incluir os novos dados do modelo.
2. Renomeie a classe ModeloCalc para ModeloPadrao, e crie uma nova interface ModeloCalc com os métodos que são chamados pelo controlador. Faça a aplicação ter uam referência para a interface ModeloCalc ao invés da classe ModeloPadrao.
3. Implemente a calculadora RPN como uma nova classe ModeloRPN derivada da interface ModeloCalc. As operações da calculadora RPN tem as mesmas operações da calculadora padrão, mas o funcionamento por trás é bem diferente. Ela funciona com uma pilha de operandos; toda vez uma operação igual (chamada de store, ou STO em uma calculadora RPN) é executada o valor do display é empilhado, e qualquer outro dígito após isso começa a entrada de outro número. Por exemplo, se o display é 1234 e se faz STO o número 1234 é empilhado e o display continua mostrando 1234. Se depois pressiona-se o número 5 o valor do display passa a ser 5, e pressionando o número 3 o valor do display passa a ser 53.
4. Teste seu modelo da calculadora RPN, fazendo a aplicação Android instanciar um ModeloRPN ao invés de um ModeloPadrao.
As instruções para envio, assim como o prazo, serão dadas no próximo laboratório, junto com as tarefas restantes.