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

Como identificar as relações 1 para 1 e um para muitos, composição x agregação

Bom tarde gostaria dois esclarecimentos, como identificar no código a relação um para um e um para muitos .? A outra pergunta como diferenciar no código a diferença entre a composição e a agregação.

Podem ajudar? grato

2 respostas
solução!

Oi Wagner, tudo bem?

As relações "um-para-um", "um-para-muitos" e assim por diante, podem ser identificadas através da composição, usando ou a outra classe como atributo ou uma lista que guarda referências da outra classe. Usando como exemplo o código presente nesse tópico do GUJ:

Nesse caso, temos uma relação de muitos-para-muitos, repare que para representar isso usamos uma lista em cada classe:

public class Aluno {
    private int codigo;
    private List<Materia> materias;
}

public class Materia {
    private int codigo;
    private List<Aluno> alunos;
}

Se quisermos representar a relação um-para-muitos, podemos fazer a referência através da composição, usando a outra classe como atributo:

public class Aluno {
    private int codigo;
    private Materia materia;
}

public class Materia {
    private int codigo;
    private List<Aluno> alunos;
}

Agora, quando lidamos com a diferença entre composição e agregação, a diferença é apenas conceitual. Ou seja, batendo o olho no nosso código, ambas serão representados pela composição, apenas analisando a modelagem do nosso projeto podemos diferenciar uma do outra. Vou deixar aqui um tópido aberto no Stack Overflow que discute o assunto com maior profundidade.

Esse é um assunto que pode se estender bastante, mas o importante é lembrar que o que foi modelado nem sempre poderá ser passado para a implementação do código com exatidão. Mais para frente, no curso de JPA, abordaremos os relacionamentos e como fazer suas configurações. Acredito que com as aulas tudo ficará mais claro!

Espero ter ajudado, qualquer coisa estamos à sua disposição!

Bons estudos!!

Muito Obrigado Thiago você foi 10 garoto!!