representa a data de hoje ontem = new Data(); // ontem ainda representa hoje ontem.somarDia(-1); // agora, temos a data de ontem umExtrato = umaConta.criarExtrato(ontem, hoje); // Imprime o extrato System.out.println(umExtrato.formatar()); System.out.println("Saldo: " + umaConta.getSaldoMonetario()); // Vamos atualizar as informacoes persistentes Agencia.fecharCaixa(); } // main} // Banco5 A saida do programa:Voce tem R$966,00 na contaQuanto voce quer sacar? 53Extrato de conta entre 31/05/2001 16:35 e 01/06/2001 16:35Data Debito Credito Valor Descricao01/06/2001 16:18 0000000 0000001 R$1000,00 deposito01/06/2001 16:18 0000001 0000002 R$34,00 transferencia para conta 201/06/2001 16:35 0000001 0000000 R$53,00 saque Saldo: R$913,00 Observe as varias classes usadas Quais sao? Observe como as referencias sao inicializadas O objeto "umaConta" nao e criado com new mas recebido como retorno do metodo localizarConta() da classe Agencia A classe Agencia achou este objeto num arquivo (salvo no programa Banco4) Observe com que facilidade manipulamos e usamos datas para tirar um extrato Na OO, tudo vira um objeto, ate datas, extratos, etc. Estamos fazendo coisas ate complexas sem dificuldade Porque abstracoes adequadas (classes) ja existem para modelar um mundo Exercicio: gere um extrato em formato HTML Dica: ver a documentacao da classe ExtratoProximo Programa: um Exemplo Usando while e switch A solucao esta no arquivo Banco8.java/* * Laco: leitura/processamento (ate um marcador final) */ import p1.aplic.banco.*;import p1.aplic.geral.*;// para mexer com a classe Pessoaimport p1.io.*; // para fazer entrada de dados public class Banco8 { public static void main(String args[]) { final int DEPOSITAR = 1; final int SACAR = 2; final int SALDO = 3; final int SAIR = 4; // o caractere de fim de linha pode ser diferente de um sistema para outro // exemplo: "\r\n" no MSDOS/Windows, "\n" no UNIX, "\r" no MacIntosh. etc. final String fimDeLinha = System.getProperty("line.separator"); final String prompt = "Digite a opcao desejada:" + fimDeLinha + DEPOSITAR + ". Depositar" + fimDeLinha + SACAR + ". Sacar" + fimDeLinha + SALDO + ". Saldo" + fimDeLinha + SAIR + ". Sair" + fimDeLinha + "Opcao: "; if(args.length != 3) { System.err.println("Sintaxe: java Banco8 titular cpf numeroDaConta"); System.exit(1); } ContaSimples aConta = new ContaSimples(args[0], args[1], Integer.parseInt(args[2])); int opcao = Entrada.in.lerInt(prompt); while(opcao != SAIR) { switch(opcao) { case DEPOSITAR: double valorADepositar = Entrada.in.lerdouble("Entre com o valor a depositar: "); aConta.depositar(valorADepositar); break; case SACAR: double valorASacar = Entrada.in.lerdouble("Entre com o valor a sacar: "); aConta.sacar(valorASacar); break; case SALDO: System.out.println("Saldo: " + aConta.getSaldoMonetario()); break; default: System.err.println("Opcao " + opcao + " desconhecida"); break; } // leia novamente para voltar ao inicio do laco opcao = Entrada.in.lerInt(prompt); } System.out.println("Saldo final: " + aConta.getSaldoMonetario()); } // main} // Banco8 A saida do programa:C:\...\p2\html\src>java -classpath .;packagep1\p1.jar Banco8 joao 12345678901 4Digite a opcao desejada:1. Depositar2. Sacar3. Saldo4. SairOpcao: 1Entre com o valor a depositar: 34Digite a opcao desejada:1. Depositar2. Sacar3. Saldo4. SairOpcao: 2Entre com o valor a sacar: 567Digite a opcao desejada:1. Depositar2. Sacar3. Saldo4. SairOpcao: 3Saldo: R$34,00Digite a opcao desejada:1. Depositar2. Sacar3. Saldo4. SairOpcao: 2Entre com o valor a sacar: 30Digite a opcao desejada:1. Depositar2. Sacar3. Saldo4. SairOpcao: 3Saldo: R$4,00Digite a opcao desejada:1. Depositar2. Sacar3. Saldo4. SairOpcao: 4Saldo final: R$4,00 Observe a declaracao de constantes com a palavra