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}`);
}
}