Your SlideShare is downloading. ×
ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

3,310

Published on

Trabalho desenvolvido pelo Aluno Mauricio Rosa da Universidade Catolica de Pelotas - Introdução a Sistemas Operacionais - ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”.

Trabalho desenvolvido pelo Aluno Mauricio Rosa da Universidade Catolica de Pelotas - Introdução a Sistemas Operacionais - ProgramaçãO Com Threads – CóDigo Fonte “Conta BancáRia Conjunta”.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,310
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
115
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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.       Sumário Código Fonte Classe Banco ..................................... 3 Classe Cliente ................................... 4 Classe Conta ..................................... 6 Main ............................................. 8                                        
  • 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. 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. 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. 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. /** * 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. 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(); } }  

×