Fala Alexandre, tudo certo?
Primeiramente, parabéns pela dedicação e por ter procurado resolver o desafio, para ampliar ainda mais seus conhecimentos!
Vamos pensar primeiro em o que acontece em uma transação de saque:
- É solicitado o saque de um valor x
- É verificado se o saldo é suficiente, isso é, se saldo é maior que x
- Caso seja, esse valor é sacado e subtraído do saldo na conta bancária
Agora, vamos pensar na operação de transferência:
- A partir de uma conta, queremos fazer a transferência para uma outra conta informada, com o valor y
- É verificado se na conta origem o saldo é suficiente
- Caso seja, o valor é subtraído da conta de origem
- Finalmente, o valor é adicionado na conta destino.
Pensando nisso, podemos notar uma semelhança entre as duas operações: a verificação de saldo e subtração no saldo, caso tenha disponibilidade. Agora que entendemos o contexto do problema, podemos olhar para o código:
Método saca():
public boolean saca(double valor){
if (this.saldo >= valor) {
this.saldo = this.saldo - valor;
return true;
}
return false;
}
Onde vimos que existe justamente a operação em comum nas duas operações, e por fim é retornado um valor verdadeiro ou falso no caso de sucesso ou insucesso da operação. Pensando nisso, podemos utilizar esse valor para fazer uma verificação booleana! Algo como:
public boolean transfere(double valor, Conta destino){
if(this.saca(valor)){
destino.deposita(valor);
return true;
}
return false;
}
Onde aproveitamos o comportamento do método saca()
e caso ele seja executado com sucesso, isso é, retorne true
, o bloco de código responsável por finalizar a transferência é executado e o valor verdadeiro é retornado, para indicar o sucesso na transferência, caso contrário é retornado false, para indicar falha.
Em caso de dúvidas, estou à disposição.
Um grande abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!