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 initialization
Executando 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!