Escolar Documentos
Profissional Documentos
Cultura Documentos
Classe Banco
/** * O mtodo que ir simular o saques na conta. * @param conta * @param valor * @return boolean */ public boolean saque(Conta conta, double valor) { synchronized (conta) { double saldo = conta.getSaldo(); if (saldo < valor) { System.out.println("Saldo insuficiente para o saque.");
return false; } double novoSaldo = saldo - valor; System.out.println(Thread.currentThread().getName()); System.out.print(" sacou R$" + valor); System.out.print(". Saldo: aps saque: R$" + novoSaldo); conta.setSaldo(novoSaldo); return true; } } }
Classe Cliente
package cliente;
/** * Atributo que ir criar um Banco. */ private static Banco banco = new Banco();
/** * Atributo que ir atribuir um valor nulo pra conta. */ private Conta conta = null;
/** * Atributo que ir atribuir o valor do saque dos clientes. */ private double valor = 100;
/** * Contrutor que ir atualizar o Nome do Cliente e a Conta. * @param nome * @param conta */
/** * Este mtodo executado pela linha de execuo. */ @Override public void run() { double total = 0; while (banco.saque(conta, valor)) { total = total + valor; } System.out.println(getName() + " sacou total de R$" + total); } }
Classe Conta
package conta;
/** * Atributo que ir atribuir o valor inicial da conta. */ public double saldo = 0;
/** * Construtor que ir receber o saldo inicial e ir escrever o saldo inicial para o usurio. * @param saldo */ public Conta(double saldo) { this.saldo = saldo; System.out.println("Saldo inicial: R$" + saldo); }
/** * Mtodo que ir retornar o saldo. * @return saldo */ public double getSaldo() { return this.saldo; }
/** * Metodo que ir atualizar o saldo. * @param s */ public void setSaldo(double s) { this.saldo = s; }
/** * Mtodo que ir verificar se h saldo suficiente para retirada e se houver ir fazer a retirada do valor solicitado e atualiza-r o novo saldo. * @param valor * @return saldo */ public double debitarValor(double valor) { if (this.saldo < valor) { System.out.println("Saldo insuficiente para saque."); return -1; } else { this.saldo = saldo-valor; return this.saldo; } }
Main
package sistemas;
// Cria os familiares e lhes informa a conta conjunta Cliente pai = new Cliente("Pai ", conta); Cliente mae = new Cliente("Me ", conta); Cliente filho = new Cliente("Filho ", conta); Cliente primo = new Cliente("Primo", conta);