Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Gostaria de saber se está certo essa implementação da inclusão do método saca no método transferência?

public class Conta{
     double saldo;
     int numero;   // Todas essas variáveis são atributos.
     int agencia;  //
     String titular;

public void deposita(double valor){ // Método criado dentro da classe Conta.
         
         this.saldo += valor;
    }

public boolean saca(double valor){ // Método criado dentro da classe Conta.
    
         if(this.saldo >= valor) {
            this.saldo -= valor;	 
            return true;	
         }else {                 //Quando o else retorna apenas um boolean, o uso do else é opocional.
             return false;
         }
    
    

public boolean transfere(double valor, Conta destino, Conta origem) { // Criei outra variável chamada origem, para
        if(this.saldo >= valor) {                                                                                   // invocar o método saca.
        origem.saca(valor);  // invocando o método saca
        /*destino.transfere(valor); Como estava antes de invocar o método saca*/
        destino.deposita(valor);  // Um método poder ser invocado de outro método.
        return true;
                                              // deixei opcional a declaração do else.
        } 
         return false;
    
}
4 respostas

Olá Brian! Tudo bem?

A implementação está correta, mas gostaria de contribuir com algumas observações.

Primeiramente, na assinatura do método transferência, você não precisa passar a conta de origem como parâmetro, já que ela é a própria conta que está executando o método. Então, a assinatura ficaria assim: public boolean transfere(double valor, Conta destino).

Além disso, no método transferência, você está chamando o método saca da conta de origem, mas está passando o valor como parâmetro, o que não é necessário, já que o valor já está sendo passado como parâmetro no método transfere. Então, a linha ficaria assim: origem.saca(valor);.

Por fim, acredito que a implementação esteja correta e que o método transfere esteja transferindo o valor da conta atual para a conta de destino.

Bons estudos!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Obrigado pela explicação Lucas Ribeiro Mata, mas fiquei com dúvida ainda, ao retirar a declaração da conta origem como parâmetro do método transferência , ele acusa um erro ainda!

solução!
public class Conta {
    double saldo;
    int numero;   // Todas essas variáveis são atributos.
    int agencia;  //
    String titular;

    public void deposita(double valor) { // Método criado dentro da classe Conta.
        this.saldo += valor;
    }

    public boolean saca(double valor) { // Método criado dentro da classe Conta.
        if (this.saldo >= valor) {
            this.saldo -= valor;
            return true;
        } else {
            return false;
        }
    }

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

Muito obrigado pela atenção Luca, valew.