1
resposta

Porque trocar o "_saldo" para "saldo" dentro dos métodos de verificação da classe ContaCorrente?

Fiquei com dúvida nesta parte da troca de

 "_saldo" para "saldo" 

dentro dos métodos de verificação da classe ContaCorrente. Porque isso foi feito? Não seria melhor ter deixado tudo "_saldo"?

Dei RUN com o código abaixo e funcionou corretamente.

class ContaCorrente {
  Cliente titular;
  int agencia;
  int conta;
  double _saldo = 20.0;
  double chequeEspecial = -100;

  get saldo{
    return _saldo;
  }

  set saldo(double novoSaldo){
    if(novoSaldo >= chequeEspecial){
      _saldo = novoSaldo;
    }else{
      print("Erro! Tentei modificar o valor de saldo para um valor menor que o queque especial.");
    }
  }

  bool verificaSaldo(double valor){
    if(this._saldo - valor < chequeEspecial){
      print("Sem saldo suficiente.");
      return false;
    }else{
      print("Movimentando $valor reais.");
      return true;
    }
  }

  bool transferencia(double valorDeTransferencia, ContaCorrente contaDestino){
    if(verificaSaldo(valorDeTransferencia)){
      this._saldo -= valorDeTransferencia;
      contaDestino.deposito(valorDeTransferencia);
      return true;
    }else{
      return false;
    }
  }


  bool saque(double valorDoSaque){
    if(verificaSaldo(valorDoSaque)){
      this._saldo -= valorDoSaque;
      return true;
    }else{
      return false;
    }
  }

  double deposito(double valorDoDeposito){
    this._saldo += valorDoDeposito;
    return this._saldo;
  }
}
1 resposta

Nesse exemplo a gente encapsulou o atributo saldo, pensa que você não quer que as pessoas tenham acesso à ele de uma maneira simples, por isso colocamos o _