Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Serialização com agregação e lista (meio complicado)

As vezes eu faço uns projetos para colocar em prática todos os cursos até o momento, e atualmente estou fazendo um projeto que tem o diagrama de classe da seguinte forma (fiz o diagrama para ficar mais fácil a visualização):

Imgur

O programa começa com uma instância da Classe A. Esta classe possui um método que recebe como parâmetro, uma referência da Classe C e logo em seguida, instância um objeto da Classe B para que este parâmetro seja adicionado no construtor da Classe B. Uma vez feito isto, esta nova instância da Classe B é adicionado na lista da Classe A. Já na lista da Classe C, eu utilizo a referência existente da Classe C, chamo o método de adicionar e passo a referência da classe A. Algo do tipo: "parametroC.add(this)".

É um diagrama estranho, não vou negar. Mas eu sou iniciante e estou me esforçando para tentar simular algo da vida real. Até preciso fazer o curso de elaboração de diagramas de classe para me aprofundar melhor.

Eis então as dúvidas:

  1. Nessa situação, o diagrama de classes está completamente fora de questão ou dá para entender?
  2. Se eu serializar um objeto da Classe A, e este tiver a lista populada com vários objetos da Classe B (e consequentemente, terei diversos da Classe C também), implementar o Serializable em todas elas... Absolutamente todos os objetos serão inclusos na serialização também? (O objeto A tem uma lista de B, que possui como associação um objeto C e C tem uma lista que aponta de volta para A).
  3. Basicamente a mesma pergunta anterior, mas ao invés de serializar o objeto A, serializar o objeto C.

É meio loucura, eu sei, mas, como eu disse, estou aprendendo. Talvez seja uma pergunta fora de sentido, mas enfim, obrigado a quem puder me ajudar.

3 respostas

Bom dia!

Nenhuma pergunta sem sentido. Dúvidas surgem e o forum serve para isso. Fique sempre à vontade para solicitar ajuda.

Pelo seu desenho, e pela sua explicação, você tem um famoso e complicado problema chamado referencia cíclica. Uma classe, que depende de outra, que depende da primeira. Isso na programação te trará graves problemas.

Melhor revisar a questão dessas interdependencias.

Bons estudos!

Thiago, boa tarde. Obrigado pela resposta.

Eu desconhecia esse termo de referência cíclica. Dei uma olhada na Internet e percebi que este é o problema mesmo. Acho que, neste primeiro momento, eu consigo quebrar este ciclo removendo o Atributo 3 da Classe C.

Obrigado!

solução!

Boa tarde!

Ao passar do tempo, os novos conceitos vão aparecendo. É esta a ideia.

Correto! Ao remover o atributo da classe C, você elimina o problema de referência e poderá seguir em frente.

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software