quinta-feira, 6 de junho de 2019

Dicas de Programação: Qual é a diferença entre agregação e composição?

No final, em um diagrama de classes (UML), agregação e composição são a referência que uma classe tem com a outra (uma classe contém uma propriedade de outra classe).

A diferença entre elas, esta no "valor" que uma classe representa para a outra.

Como exemplo, vamos pegar a classe Carro e dizer que ela tem as propriedades arCondicionado e motor (com suas respectivas classes):

public class Carro {
        [Nullable]
        public ArCondicionado arCondicionado { get; set; }
        [NotNull]
        public Motor motor { get; set; }
}

Se um carro comum não tiver arCondicionado, ele ainda funciona, certo?

Se o arCondicionado só "agrega" um valor ao carro (fica mais valorizado, mas o carro não deixa de funcionar), então dizemos que é uma agregação.

Mas se um carro não tem motor, ele não funciona mais, correto? (só se for carro fantasma :P)

Assim, podemos afirmar que um motor "compõe" o carro (sem ele, o carro não funciona), então dizemos que é uma composição.

Bem, espero que a explicação seja útil para alguém... (pelo menos, para mim foi) :P

Até mais!

Nenhum comentário: