1
resposta

Metodo Get e Set não funcionou

No vídeo é possível dizer que utilizam o método get e set para proteger os dados mas no meu caso não esta funcionando Ao atribuir valor 0 para conta2.cliente = 0; ainda esta pegando o valor 0.

Index.js

import { Cliente } from "./Cliente.js"
import { ContaCorrente } from "./Contacorrente.js"

//Criando um objeto cliente
const cliente1 = new Cliente();
cliente1.nome = "Ricardo";
cliente1.cpf = 11122233309;

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

//Criar um objeto conta corrente
const contaCorrenteRicardo = new ContaCorrente();
contaCorrenteRicardo.agencia = 1001;
//Cria um objeto cliente dentro da classe ContaCorrente
contaCorrenteRicardo.cliente = cliente1;

//Chama o método de depositar
contaCorrenteRicardo.depositar(500);


const conta2 = new ContaCorrente();
conta2.cliente = 0;
conta2.agencia = 102;

//Chama o método transferir
contaCorrenteRicardo.trasferir(200, conta2);

console.log(contaCorrenteRicardo);
console.log(conta2);

contaCorrenteRicardo.mostrarSaldo(cliente1.nome);
conta2.mostrarSaldo(cliente2.nome);

console.log(conta2.cliente);

Classe Conta corrente.js

import { Cliente } from "./Cliente.js";

export class ContaCorrente {
    agencia;

    set #cliente(novoValor) {
        if (novoValor instanceof Cliente) {
            this.#cliente = novoValor;
        }
    };

    get #cliente(){
        return this.#cliente
    }


    //Utilizando # deixar o atributo privado, caso tenha _ antes do atributo não 
    //mexer pois é um atributo privado
    #saldo = 0;

    //Declarando Métodos
    sacar(valor) {
        if (this.#saldo >= valor) {
            this.#saldo -= valor;
            return valor;
        }
    }

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

    trasferir(valor, conta) {
        conta.cidade = "São Paulo";
        const valorSacado = this.sacar(valor);
        conta.depositar(valorSacado);
    }

    mostrarSaldo(cliente) {
        return console.log(`O saldo de ${cliente} na conta corrente é: ${this.#saldo}`);
    }



}
1 resposta

Olá, João, tudo bem?

O problema é que você está declarando o getter e o setter de cliente com uma hashtag #. O correto seria get cliente() e set cliente() em vez de get #cliente() e set #cliente().

O nome que digitamos no getter e no setter é o mesmo nome que digitamos quando vamos acessar ou setar a propriedade lá em index.js, sem a hashtag.

Além disso, isso faz com que o getter e o setter tenham o mesmo que a propriedade, o que não podemos fazer. Ao retirarmos a #, fazemos com que os identificadores sejam diferentes.

Espero ter ajudado! Abraços e bons estudos :)