Boa noite pesoal. Gostaria de tirar essa duvida sobre o assunto. Quando eu executo o comando c.getCorrente().Saca(100, corrente); o programa pega o valor setado em corrente.Saldo(1000) o que é de se esperar e retorna o valor 900. Até ai tudo bem, porém, quando eu executo logo após isso o comando c.getCorrente().Depoista(200, corrente); em vez de me retornar o valor 1100 que seria o correto, ele “ignora” o comando anterior e soma 200 ao valor padrão de Saldo setado em corrente.Saldo(1000), alguem sabe como resolver ? Segue abaixo as classes.
Classe Conta
package cliente;
public abstract class Conta implements ISaca, IDeposita, ITransfere{
protected Cliente titular;
public abstract double Saldo(double valor, Conta conta);
public Cliente getTitular() {
return titular;
}
public void setTitular(Cliente titular) {
this.titular = titular;
}
}
Classe Corrente
package cliente;
public class Corrente extends Conta{
private double saldo;
@Override
public double Saldo(double valor, Conta conta) {
// TODO Auto-generated method stub
return setSaldo(valor);
}
public double Saca(Conta conta, double valor) {
return getSaldo() - valor;
}
@Override
public double Deposita(Conta conta, double valor) {
// TODO Auto-generated method stub
return getSaldo() + valor;
}
@Override
public double Transfere(Conta conta, double valor, Conta destino) {
// TODO Auto-generated method stub
Saca(conta, valor);
return Deposita(destino, valor);
}
public double getSaldo() {
return saldo;
}
public double setSaldo(double saldo) {
return this.saldo = saldo;
}
}
Classe Poupanca
package cliente;
public class Poupanca extends Conta{
private double saldo;
@Override
public double Saldo(double valor, Conta conta) {
// TODO Auto-generated method stub
return setSaldo(valor);
}
@Override
public double Saca(Conta conta, double valor) {
// TODO Auto-generated method stub
return getSaldo() - valor;
}
@Override
public double Deposita(Conta conta, double valor) {
// TODO Auto-generated method stub
return getSaldo() + valor;
}
@Override
public double Transfere(Conta conta, double valor, Conta destino) {
// TODO Auto-generated method stub
Saca(conta,valor);
return Deposita(destino, valor);
}
public double getSaldo() {
return saldo;
}
public double setSaldo(double saldo) {
return this.saldo = saldo;
}
}
Classe TestaCliente
package teste;
import cliente.*;
public class TestaCliente {
public static void main(String[] args) {
Cliente c = new Cliente();
c.setNome("Bruno");
c.setCpf("123456");
//----------------------------
Endereco endereco = new Endereco();
endereco.setCEP("24111170");
endereco.setNumero("60");
c.setEndereco(endereco);
//----------------------------
Conta corrente = new Corrente();
corrente.Saldo(1000, corrente);
corrente.setTitular(c);
c.setCorrente(corrente);
//----------------------------
Conta poupanca = new Poupanca();
c.setPoupanca(poupanca);
poupanca.Saldo(2000, poupanca);
poupanca.setTitular(c);
//-------------------------------------------------------------------------
Cliente c2 = new Cliente();
c2.setNome("Lek");
c2.setCpf("654321");
//----------------------------
Endereco endereco2 = new Endereco();
endereco2.setCEP("963852741");
endereco2.setNumero("20");
c2.setEndereco(endereco2);
//----------------------------
Conta corrente2 = new Corrente();
corrente2.Saldo(2000, corrente2);
corrente2.setTitular(c2);
c2.setCorrente(corrente2);
//----------------------------
Conta poupanca2 = new Poupanca();
c2.setPoupanca(poupanca2);
poupanca2.Saldo(5000, poupanca2);
poupanca2.setTitular(c2);
//---------------------------------------------------------------------
System.out.println("Sacando 100 da conta corrente de c: "
+ c.getCorrente().Saca(corrente, 100));
System.out.println("Sacando 100 da conta poupanca de c: "
+ c.getPoupanca().Saca(poupanca, 100));
System.out.println("Depositando 200 na conta corrente de c: "
+ c.getCorrente().Deposita(corrente, 200));
System.out.println("Depositando 200 na conta poupanca de c: "
+ c.getPoupanca().Deposita(poupanca, 200));
System.out.println("transferindo 300 da conta corrente de c para a "
+ "conta poupanca: "
+ c.getCorrente().Transfere(corrente, 300, poupanca));
System.out.println("Transferindo 300 da conta poupanca de c para a"
+ "conta corrente: "
+ c.getPoupanca().Transfere(poupanca, 300, corrente));
System.out.println("Sacando 100 da conta corrente de c2: "
+ c2.getCorrente().Saca(corrente, 100));
System.out.println("Sacando 100 da conta poupanca de c2: "
+ c2.getPoupanca().Saca(poupanca, 100));
System.out.println("Depositando 200 na conta corrente de c2: "
+ c2.getCorrente().Deposita(corrente, 200));
System.out.println("Depositando 200 na conta poupanca de c2: "
+ c2.getPoupanca().Deposita(poupanca, 200));
System.out.println("transferindo 300 da conta corrente de c2 para a "
+ "conta poupanca: "
+ c2.getCorrente().Transfere(corrente, 300, poupanca));
System.out.println("Transferindo 300 da conta poupanca de c2 para a"
+ "conta corrente: "
+ c2.getPoupanca().Transfere(poupanca, 300, corrente));
//-------------------------------------------------------------------------------
System.out.println("transferindo 500 da conta corrente de c para conta corrente de c2"
+ c.getCorrente().Transfere(corrente, 500, corrente2));
System.out.println("transferindo 500 da conta poupanca de c para conta poupanca de c2"
+ c.getPoupanca().Transfere(poupanca, 500, poupanca2));
System.out.println("transferindo 500 da conta poupanca de c para conta corrente de c2"
+ c.getPoupanca().Transfere(poupanca, 500, corrente2));
System.out.println("transferindo 500 da conta corrente de c para conta poupanca de c2"
+ c.getCorrente().Transfere(corrente, 500, poupanca2));
System.out.println("transferindo 500 da conta poupanca de c2 para conta corrente de c"
+ c2.getPoupanca().Transfere(poupanca2, 500, corrente));
System.out.println("transferindo 500 da conta corrente de c2 para conta poupanca de c"
+ c2.getCorrente().Transfere(corrente2, 500, poupanca));
//-------------------------------------------------------------------------------
}
}