1
resposta

Método Transferir não desconta 20 cent

Boa noite senhores. Não consigo encontrar o motivo pelo qual o desconto de 20 centavos acontece quando uso o método transferir. Reescrevi o método sacar na classe ContaCorrente, quando realizo o saque o desconto acontece, mas não funciona na transferência.

    public Conta(int agencia, int numero) {
        Conta.total++;
        this.agencia = agencia;
        this.numero = numero;
    /*    System.out.println("Conta criada com sucesso!");
        System.out.println("Agência: " + agencia);
        System.out.println("Conta Corrente: " + numero);
        System.out.println("Nosso banco possui " + Conta.total + " contas criadas");*/
    }

    public void depositar(double valor) {
        this.saldo += valor;
    }

    public boolean sacar(double valor) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            return true;
        } else {
            System.out.println("Saldo insuficiente");
            return false;            
        }        
    }

    public boolean transferir(double valor, Conta destino) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            destino.depositar(valor);
            return true;
        } else {
            System.out.println("A operação não foi concluída, saldo insuficiente.");
            return false;
        }
    }
public class ContaCorrente extends Conta{

    public ContaCorrente(int agencia, int numero) {
        super(agencia, numero);
    }

    @Override
    public boolean sacar(double valor) {
        return super.sacar(valor + 0.2);
    }

}
public class TestaContas {
    public static void main(String[] args) {

        ContaCorrente cc = new ContaCorrente(7777, 1234);
        ContaPoupanca cp = new ContaPoupanca(5555, 456789);

        cc.depositar(100);
        cp.depositar(200);

    //    System.out.println("CC "+cc.getSaldo());
    //    System.out.println("CP "+cp.getSaldo());

        cc.transferir(10, cp);

        System.out.println("CC " +cc.getSaldo());
        System.out.println("CP " +cp.getSaldo());

        cc.sacar(20);
        System.out.println(cc.getSaldo());
    }
}
1 resposta

Boa noite Edicley,

Seu método transferir está implementado na classe Conta e ele não utiliza o método saca, ele manipula diretamente o saldo.

public boolean transferir(double valor, Conta destino) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            destino.depositar(valor);
            return true;
        } else {
            System.out.println("A operação não foi concluída, saldo insuficiente.");
            return false;
        }
    }

Portanto ele nunca vai ser afetado por uma alteração no método saca.

Para que haja cobrança de 20 centavos por transferência você precisa reimplementar o método transferir na classe ContaCorrente ou diretamente na classe Conta.

Abraços