um titular // do tipo Pessoa em vez de dar nome e CPF separadamente umaConta = new ContaSimples(oTitular1, 1); outraConta = new ContaSimples(oTitular2, 2); // Vamos ver quanto vamos depositar double valorADepositar = Entrada.in.lerdouble("Entre com o valor a depositar: "); System.out.println("Vou depositar " + valorADepositar); umaConta.depositar(valorADepositar); // Vamos ver quanto vamos transferir double valorATransferir = Entrada.in.lerdouble("Entre com o valor a transferir: "); System.out.println("Vou transferir " + valorATransferir); umaConta.transferir(outraConta, valorATransferir); // Fecha a agencia e guarda toda a informacao em arquivo Agencia.fecharCaixa(); System.out.println("OK. Caixa fechado."); } // main} // Banco4 A saida do programa:Entre com o valor a depositar: 1000Vou depositar 1000.0Entre com o valor a transferir: 34Vou transferir 34.0OK. Caixa fechado. Observe as multiplas importacoes criacao de 4 objetos, de 2 classes Quais sao as 4 referencias Quais sao as 2 classes? A declaracao de uma referencia nao significa que ela "aponte" para um objeto Precisa instanciar o objeto primeiro Observe o construtor de ContaSimples E diferente da chamadas que vimos ate agora nome e cpf nao mais passados no construtor da ContaSimples, mas no construtor da Pessoa Neste programa, passamos uma Pessoa como titular e nao passamos nome e CPF Isso se chama overload de metodos Dois metodos com o mesmo nome mas com parametros diferentes sao metodos completamente diferentes E semelhante ao overload do operador binario + Observe a chamada ao novo transferir() de ContaSimples Veja o que este metodo faz aqui Finalmente, tem um metodo estranho chamado metodo de classe Agencia.fecharCaixa(); Nao ha referencia a um objeto chamado Agencia Na realidade, Agencia e o nome de uma classe e o metodo Agencia.fecharAgencia() e um metodo que pertence a classe em si e nao aos objetos da classe Agencia Isso foi feito para simplificar a situacao para termos uma unica agencia Num programa real, a Agencia teria que ser instanciada como qualquer objeto Voce pode ver o que o metodos fecharCaixa() faz aqui Como voce vai ver, trata-se de salvar os dados das contas, transacoes, saldos, etc. em arquivo Chamamos isso de persistencia Faremos uso disso no proximo programaProximo Programa: Acesso a Dados Persistentes Como manipular contas bancarias que ja existem? Usaremos um metodo da classe Agencia para achar uma conta cujo numero sabemos A solucao esta no arquivo Banco5.java/* * Persistencia */ import p1.aplic.banco.*;import p1.aplic.geral.*; // para mexer com a classe Dataimport p1.io.*; public class Banco5 { public static void main(String args[]) { // declaracao de variaveis de 3 classes (tipos) diferentes // no fim, teremos 4 objetos de 3 classes ContaSimples umaConta; Extrato umExtrato; Data hoje, ontem; // localiza a conta de numero 1 // (ela ja foi criada e armazenada anteriormente) // O "cast" (ContaSimples) sera explicado em outro momento // O motivo e que localizarConta retorna um objeto do tipo Conta // que representa uma conta bancaria generica e nao apenas uma ContaSimples umaConta = (ContaSimples)Agencia.localizarConta(1); // Vamos fazer um saque System.out.println("Voce tem " + umaConta.getSaldoMonetario() + " na conta"); double valor = Entrada.in.lerdouble("Quanto voce quer sacar? "); umaConta.sacar(valor); // Vamos tirar um extrato de conta entre ontem e hoje hoje = new Data(); // hoje