Porque a classe ContaCorrente tem um atributo cliente, e não a classe Cliente que tem um atributo ContaCorrente? Ou ainda, porque ambas não tem? ContaCorrente tem atributo Cliente e Cliente tem atributo ContaCorrente.
Porque a classe ContaCorrente tem um atributo cliente, e não a classe Cliente que tem um atributo ContaCorrente? Ou ainda, porque ambas não tem? ContaCorrente tem atributo Cliente e Cliente tem atributo ContaCorrente.
Olá Handryo, tudo bem com você?
Peço desculpas pela demora em lhe responder.
A definição de qual atributo uma ou mais classes vão possuir é feita conforme o modelo do projeto em que estamos trabalhando, no modelo de projeto da aula foi definido que a classe ContaCorrente deve possuir um Cliente associado a ela. Em um novo modelo de projeto podemos definir que um Cliente deve possuir uma ContaCorrente, tudo dependerá do modelo que foi definido para o projeto.
Já a definição de um modelo onde a ContaCorrente recebe como parâmetro um Cliente e, ao mesmo tempo, um Cliente recebe ContaCorrente não será uma boa prática, pois, com isso teremos uma referência cíclica, que gerará uma alta dependência entre as classes. Uma alta dependência gera dificuldades de manutenções futuras, extensões e implementações do código. Além disso, neste cenário a criação de um objeto cliente dependerá da existência de objeto conta que ainda não foi declarado. Abaixo um exemplo de código e sua execução.
Exemplo em código
class Cliente {
constructor(nome, cpf, ContaCorrente) {
this.nome = nome;
this.cpf = cpf;
this.ContaCorrente = ContaCorrente;
}
}
class ContaCorrente {
constructor(Cliente, agencia){
this.Cliente = Cliente;
this.agencia = agencia;
this.valor = 0;
}
}
const contaCorrenteDoHandryo = new ContaCorrente(clienteHandryo, 10);
const clienteHandryo = new Cliente('Handryo', 12345678900, contaCorrenteDoHandryo);
console.log(contaCorrenteDoHandryo);
console.log(clienteHandryo);
Resultado da execução
ReferenceError: Cannot access 'clienteHandryo' before initializationExecutando o código anterior, recebemos um erro de referência, note que, para que o objeto ContaCorrente seja criado é necessário um objeto Cliente, mas, para criarmos um objeto Cliente precisamos de um objeto ContaCorrente.
Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Em caso de dúvidas estou à disposição.
Abraços e bons estudos!