Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida sobre Composição de Classes.

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.

1 resposta
solução!

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!