3
respostas

a função depositar não parece adicionar valor ao saldo

class Cliente{
    nome;
    cpf;
}

class ContaCorrente{
    agencia;
    #saldo;

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

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


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

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

const contaCorrenteRicardo = new ContaCorrente();
contaCorrenteRicardo.saldo = 0;
contaCorrenteRicardo.agencia = 1001;
console.log(contaCorrenteRicardo.saldo);

contaCorrenteRicardo.depositar(100);
console.log(contaCorrenteRicardo.saldo);
contaCorrenteRicardo.depositar(100);
contaCorrenteRicardo.depositar(100);
contaCorrenteRicardo.depositar(100);




console.log(contaCorrenteRicardo.saldo);
console.log(cliente1);
console.log(cliente2);

o console fala q o saldo é sempre 0, não sei pq

3 respostas

Fala Allan, tudo bem? Espero que sim!

Você atualmente esta tentando acessar um atributo privado fora da classe (ao dar esse console logo após adicionar o saldo), o correto a se fazer como demonstrado na aula é colocar para dar o console dentro do método depositar, assim a cada depósito será mostrado no console o saldo do cliente. Como deve ficar a classe :

class ContaCorrente{
    agencia;
    #saldo;

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

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

Como pode ver, dentro do método depositar, após alterar o valor da propriedade eu coloco um console log nesse saldo.

Agora você deve remover os outros consoles log.

Ou você pode também não utilizar os atributos privados, removendo os # antes do nome da propriedade saldo.

Espero ter ajudado, abraços e bons estudos :D

botei o console log dentro do objeto mas agora fica dando NaN

Ei Allan, beleza?

Cara, pelo que verifiquei do seu código, você está utilizando o # na frente do atributo saldo (#saldo) para associá-lo a um atributo privado. Porém, este uso ainda é uma feature que está em fase de testes na linguagem e acredito ser isto que está dando conflito no seu código. Dica: Faça como o professor fez e utilize o underline ( _ ) na frente dos atributos privados (no caso o saldo), pois esta é a convenção que está sendo adotada pela comunidade para reconhecer que o atributo é privado.

Uma outra observação: após fazer essa alteração, atente-se que para acessar o saldo fora da classe ContaCorrente, você precisa colocar o underline também, pois da forma como você fez na linha abaixo de onde estanciou a contaCorrenteRicardo, foi criado um novo atributo saldo diferente do _saldo da classe ContaCorrente. Para visualizar isso dê os seguintes console.log no final de seu index:

console.log(contaCorrenteRicardo.saldo); \\ saldo = 0;
console.log(contaCorrenteRicardo._saldo); \\ _saldo = 400
 console.log(contaCorrente); \\ Visualizar que possui os 2 saldos

Faça o teste aí e vê se dá certo. Vlw!