Oi Felipe, tudo bem?
Observe que tanto no método saca() como no tranfere(), a lógica nesse trecho do código se repete:
if (this.saldo >= valor) {
this.saldo -= valor;
Portanto podemos substituir esse trecho do transfere() pelo método saca(), deixando dessa forma:
public boolean transfere(double valor, Conta destino) {
if ( saca(valor) ) {
destino.deposita(valor);
return true;
}
return false;
}
Perceba que agora, ao fazer uma transferência, encarregamos o método saca() de checar se temos saldo suficiente e também de subtrair o valor
do saldo
.
public boolean saca(double valor) {
if (this.saldo >= valor) {
this.saldo -= valor;
return true;
} else {
return false;
}
}
Perceba também que se tivermos saldo suficiente, o método saca() retorna true, o que faz com que a condição if do método transfere() se torne verdadeira e, consequentemente, realize o depósito:
if ( saca(valor) ) {
destino.deposita(valor);
return true;
}
Espero ter ajudado, qualquer dúvida é só avisar!
Bons estudos!!