Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”

1,576 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”

  1. 1. Universidade Católica de Pelotas Centro Politécnico – Curso de Tecnologia em Analise e Desenvolvimento de Sistemas Disciplina de Introdução a Sistemas Operacionais Prof. Eduardo Maroñas Monks        Programação com Threads – Código Fonte “Conta Bancária Conjunta”           PELOTAS, 21 DE JUNHO DE 2009 Mauricio Pureza Rosa          
  2. 2.       Sumário Código Fonte Classe Banco ..................................... 3 Classe Cliente ................................... 4 Classe Conta ..................................... 6 Main ............................................. 8                                        
  3. 3. Classe Banco   package banco; import conta.Conta; /** * Banco */ public class Banco { /** * O método 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: após saque: R$" + novoSaldo); conta.setSaldo(novoSaldo); return true; } } }  
  4. 4. Classe Cliente package cliente; import banco.Banco; import conta.Conta; /** * Clientes do Banco */ public class Cliente extends Thread { /** * 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 */  
  5. 5. public Cliente(String nome, Conta conta) { super(nome); this.conta = conta; } /** * Este método é executado pela linha de execução. */ @Override public void run() { double total = 0; while (banco.saque(conta, valor)) { total = total + valor; } System.out.println(getName() + " sacou total de R$" + total); } }  
  6. 6. Classe Conta package conta; /** * Conta Bancária */ public class 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 usuário. * @param saldo */ public Conta(double saldo) { this.saldo = saldo; System.out.println("Saldo inicial: R$" + saldo); } /** * Método que irá retornar o saldo. * @return saldo */ public double getSaldo() { return this.saldo; }  
  7. 7. /** * Metodo que irá atualizar o saldo. * @param s */ public void setSaldo(double s) { this.saldo = s; } /** * Método 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; } }  
  8. 8. Main package sistemas; import conta.Conta; import cliente.Cliente; /** * Família com conta conjunta */ public class Familia { public static void main(String args[]) { // Cria conta conjunta da família final Conta conta = new Conta(10000); // Cria os familiares e lhes informa a conta conjunta Cliente pai = new Cliente("Pai ", conta); Cliente mae = new Cliente("Mãe ", conta); Cliente filho = new Cliente("Filho ", conta); Cliente primo = new Cliente("Primo", conta); // Inicia as threads pai.start(); mae.start(); filho.start(); primo.start(); } }  

×