2
respostas

Dúvida no desconto de 20 centavos no saque da Conta Corrente

Bom dia Gabriel!

Eu encontrei a mesma dificuldade do Zenildo, com o valor de 20 centavos que não está sendo descontado da conta corrente.

Eu verifique que, conforme a sugestão apresentada com a inserção da linha cc.saca(10.0);

ocorre o desconto dos 20 centavos.

Mesmo assim eu fique com dúvida, levando em conta o problema proposto.

Como o teste desta funcionalidade iria ser feito através da classe TesteContas

public class TesteContas {

public static void main(String[] args) {

    ContaCorrente cc = new ContaCorrente(111, 111);
    cc.deposita(100.0);

    ContaPoupanca cp = new ContaPoupanca(222, 222);
    cp.deposita(100.0);

    cc.transfere(10.0, cp);

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

}

Verifiquei que o método transfere é executado dentro da classe Conta

public boolean transfere(double valor, Conta destino) {

    if(this.saldo >= valor) {
        this.saldo -= valor;

        destino.deposita(valor);
        return true;
    }
    return false;
}

Não está chamando o método saca da classe ContaCorrente

public class ContaCorrente extends Conta {

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

@Override
public boolean saca(double valor){
       System.out.println("Entrando no método saca de ContaCorrente");


    double valorASacar = valor + 0.2;
    return super.saca(valorASacar);
}

}

Neste caso ele faz a transferência mas não faz o desconto dos 20 centavos. Se adiciono ao método Transfere da ContaCorrente a linha

this.saca(valor);

é feito o depósito na outra conta corretamente , mas retira duplicado o valor transferido e a tarifa de 20 reais.

Você pode me ajudar a identificar onde está o meu erro?

Desde já agradeço a sua atenção.

2 respostas

Afonso, boa tarde!

Ao adicionar o this.saca(valor), você está retirando a linha

this.saldo -= valor;

Pois caso não ele irá sacar o valor duas vezes. Além, disso o valor deve ser de 0.02 e não de 0.2, isso na linha abaixo:

double valorASacar = valor + 0.2;

Espero ter ajudado e bons estudos!

Bom dia Felipe! Obrigado pelo seu retorno e boa vontade em me ajudar.

Quando usei o artifício de incluir a linha this.saca(valor) meu objetivo foi fazer uma tentativa no sentido de buscar entender o meu erro.

O meu objetivo principal e desenvolver o código em cima do enunciado do problema, que havia sido proposto pela Alura.

Neste caso iriamos usar como teste o código conforme descrito abaixo:

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

ContaCorrente cc = new ContaCorrente(111, 111);
cc.deposita(100.0);

ContaPoupanca cp = new ContaPoupanca(222, 222);
cp.deposita(100.0);

cc.transfere(10.0, cp);

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

}

Neste código a minha expectativa é que na chamada cc.transfere(10.0, cp);

Fosse executado método transfere dentro da classe Conta (Onde eu tenho a impressão que está o meu erro. Como não foi feito nenhuma referência a funcionalidade de sacar e tentei incluí-la acrescentando a linha this.saca(valor);)

public boolean transfere(double valor, Conta destino) {

if(this.saldo >= valor) {
    this.saldo -= valor;

    destino.deposita(valor);
    return true;
}
return false;

é a partir deste método fosse acionado o método saca da classe ContaCorrente

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

@Override public boolean saca(double valor){ System.out.println("Entrando no método saca de ContaCorrente");

double valorASacar = valor + 0.2;
return super.saca(valorASacar);

}

Como no problema proposto a linha do código faz o acréscimo de 0.2 na variável valor e atribui este resultado a variável valorASacar.

Estou buscando o resultado esperado dentro desta concepção de código proposto.