Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Refiz a pergunta e enviei no fórum do curso. Gostaria muito que alguém me respondesse por gentileza, que as dúvidas foram só se acumulando e acabei ficando meio travada por isso...

Eu fiquei um pouco perdida com relação a aula de orientação de objetos privados em JavaScript, em parte pelo fato das novas alterações que foram propostas, em parte porque deu a impressão que o prof. Ricardo talvez tenha feito algo que já não é boa prática (que segundo ele mesmo não deveríamos "roubar" e exibir um atributo privado diretamente) e eu estava tentando já seguir a forma "nova" de fazer enquanto acompanhava junto, usando o # e tudo mais já para experimentar o recurso (e já podia ver as limitações que o recurso tem). O meu código ficou assim:

class Cliente {
  nome;
  cpf;
}

class ContaCorrente {
  agencia;
  #saldo = 0;

  sacar(valor) {
    if (this.#saldo >= valor) {
      this.#saldo -= valor;
    }
  }

  depositar(valor) {
    if (valor > 0) {
      this.#saldo += valor;
    }
  }

  extrato(this.#saldo) {
    console.log(this.#saldo);
  }
}

const cliente1 = new Cliente();
cliente1.nome = "Ricardo";
cliente1.cpf = 111222233309;

const cliente2 = new Cliente();
cliente2.nome = "Alice";
cliente2.cpf = 88822233309;

const contaCorrenteRicardo = new ContaCorrente();
//contaCorrenteRicardo.#saldo = 10000; <- não é permitido porque é privado

contaCorrenteRicardo.agencia = 1001;

contaCorrenteRicardo.depositar(100);
contaCorrenteRicardo.sacar(50);

const valorSacado = contaCorrenteRicardo.sacar(50);

console.log(contaCorrenteRicardo);
console.log(contaCorrenteRicardo.extrato);

A minha dúvida é a seguinte: eu não consigo exibir diretamente o atributo #valor com console.log(contaCorrenteRicardo);, porque como é um atributo privado, ele não exibe. Então pensei em como seria a melhor forma de exibir e com isso resolvi criar esse método contaCorrenteRicardo.extrato. Porém, não dá certo de se fazer isso em JavaScript, porque ele me dá o erro na declaração do método extrato(#saldo)/extrato(this.#saldo) (tentei ambas as formas, mas não funcionaram). Então eu pergunto: qual seria a forma "correta" de implementar isso, no JavaScript "moderno", sem "quebrar a regra" de tentar exibir um atributo privado diretamente?

1 resposta
solução!

Bem, como ninguém respondeu aqui, imagino que talvez seja porque esteja fazendo a dúvida no lugar errado? De qualquer forma, eu refiz a pergunta lá no fórum do curso: https://cursos.alura.com.br/forum/topico-como-exibir-um-atributo-saldo-por-exemplo-da-forma-correta-duvida-a-respeito-de-getters-143244 Peço que alguém por gentileza responda, porque eu não consigo avançar sem entender melhor esses conceitos. Muito obrigada!