3
respostas

Manter private o atributo saldo

Fiquei na dúvida, eu poderia manter o atributo saldo da Classe mãe como private, e assim no método deposita eu passaria a conta a ser depositada como parâmetro, faria um conta.getSaldo, ao invés de mudar o atributo para protected.

3 respostas

Oi Arthur, segundo sua proposta o método deposita ficaria com o mesmo comportamento do método transfere e não é o caso. O método deposita é para depositar o valor na conta que irá chamar este método:

    //deposita valor na própria conta1
    conta1.deposita(100.0)

    //transfere valor para outra conta
    conta1.transfere(50.0, conta2)

A situação que você descreve se parece mais com o método transfere. E no caso de manter o atributo saldo na classe mãe como private, nosso método transfere ficaria o mesmo já que o this.saldo faz referência ao objeto que chama o método (no caso, a conta1 do exemplo acima) e não da conta2 que recebemos por parâmetro:

public boolean transfere(double valor, Conta destino) {
    if (this.saldo >= valor) {
        this.saldo -= valor;
        destino.deposita(valor);
        return true;
    }
    return false;
}

Ficou claro?

public double depositando(double valor, ContaCorrente destino) {
        double saldo = destino.getSaldo() + valor;
        return saldo;
    }

O que eu estava pensando era algo parecido com o code acima, mas não daria certo, viajei muito na lógica.

Oi Arthur, o problema aí é você está criando e retornando o valor de uma variável saldo e não está atualizando nem o saldo da conta origem (que vai depositar) nem da conta destino, que vai receber.