mundo de software que quer tratar do mundo real Portanto, software (aplicacoes) que lidam com o mundo bancario: Trataria das classes Agencia, Conta, Cliente, etc. Teria objetos como no mundo real Esses objetos teriam os mesmos atributos do mundo real O que foi falado acima nao e estritamente verdade porque o mundo de software e um modelo do mundo real e so trata das coisas importantes para o business que utilizara o software Exemplo: Clientes tem um tamanho de sapato mas o software nao incluira este atributo na classe Cliente Apesar de nem sempre ser verdade, e um bom ponto de partida Porem, ha diferencas grandes quando pensamos no comportamento Ha dois grandes motivos Primeiro motivo: nao vamos modelar todo o comportamento dos objetos Exemplo: Clientes tomam cafe no mundo real mas provavelmente nao no software Segundo motivo: os comportamentos frequentemente sao assumidos por objetos diferentes Exemplo: No mundo real, quem faz um deposito? Um Cliente No software, qual classe assumiria a responsabilidade de fazer um deposito? A classe Conta Por que isso???? A primeira grande regra de programacao Orientada a Objeto e a seguinte:"Comportamentos sao associados aos objetos que possuem os atributos afetados pelo comportamento" Um deposito afeta duas coisas, do ponto de vista de um sistema bancario: O saldo de uma conta O historico de transacoes feitas a uma conta Como se pode ver, o deposito afeta apenas atributos de uma Conta Portanto, a responsabilidade de implementar este comportamento sera atribuida a Conta e nao ao Cliente, embora, no mundo fisico, seja o Cliente que faz o deposito A primeira grande regra acima tem outros nomes: "Colocar as responsabilidades com os dados" Padrao de Projeto Expert Quem faz algo e quem e o expert nos dados envolvidos Resultado: no mundo de software, objetos sao "vivos" nao passivos No mundo real, a Conta e passiva, nao viva No mundo de software, a Conta faz varias coisas que afetam seus atributos Saque Deposito Informar seu saldo etc. Instanciacao e Uso de Objetos Nesta secao, queremos aprender a usar objetos e nao a cria-los ainda Problema a resolver: modelar Contas bancarias simples e fazer algumas manipulacoes Usaremos uma classe chamada ContaSimples que ja existe na biblioteca de classes escritas pelo professor Esta biblioteca se chama p1.aplic.banco e serve para escrever aplicacoes simples do mundo bancario Adiante nesta disciplina, veremos a implementacao dessas classes A solucao esta no arquivo Banco1.java/* * Movimentacao simples de uma conta bancaria */ // Precisaremos usar classes ja prontas no programa// Aqui, estamos trazendo essas classes para "dentro" do nosso programaimport p1.aplic.banco.*; // para poder manusear contas bancarias // Programa Banco1public class Banco1 { // O programa sempre tem um "metodo" main que e onde comeca a execucao public static void main(String args[]) { // Abra uma conta de numero 1 para Joao com CPF 309140605-06 // A conta sera "referenciada" com a variavel umaConta ContaSimples umaConta = new ContaSimples("Joao", "30914060506", 1); // Nesta conta, deposite R$1000,00 umaConta.depositar(1000.0); // Imprima o saldo da conta de Joao double saldo = umaConta.getSaldo(); System.out.print("Saldo da conta de Joao antes do saque: ");