2011-11-10 18 views
5

Tengo dificultades para entender esto cuando se trata de diseñar un diagrama de clases, por lo que sé que la composición es una relación "tiene-un" pero ¿Agregación? No tengo idea de qué es eso. y una cosa, ¿cuándo sabré usar Composition en un diagrama de clase? y ¿cuándo sabré usar Agregación en un diagrama de clase? un ejemplo será muy apreciado.Composición y agregación en un diagrama de clase

Respuesta

21

La principal diferencia entre una agregación y una composición es la propiedad de su relación "tiene una". Es fuerte o débil.

Las agregaciones "tiene-una" relación es de "tipo débil". Débil significado, los componentes vinculados del agregador pueden sobrevivir el ciclo de vida de las agregaciones o se puede acceder de alguna otra manera. Un ejemplo simple sería un club de fútbol con sus miembros. Si se descifra el club, todavía tienes los miembros, que de hecho también podrían ser miembros de otros clubes y por lo tanto se mantienen vivos.

La composición "tiene una relación" es de "tipo fuerte". Fuerte significado que uno no puede existir sin el otro. Los ciclos de vida del componente están directamente relacionados con el "padre". Un ejemplo sería una casa con habitaciones. Si decides derribar la casa, también perderás tus habitaciones.

Tal vez un poco abstracto, pero creo que esa es la idea detrás de ello.

+0

Olvidé preguntar, ¿qué tal la asociación? – user962206

0

Ver respuestas a las preguntas anteriores here, here y here.

Personalmente no uso Agregación. La semántica es demasiado débil para ser útil. Causa más problemas de los que soluciona. Solo hay un lugar donde tiene propiedades bien definidas y potencialmente útiles que lo distinguen de una simple asociación binaria (ver nota al pie).

La composición puede ser útil porque define las propiedades importantes de la inmutabilidad y la gestión del ciclo de vida (consulte el primer enlace más arriba). He sobrevivido bastante feliz durante muchos años sin necesidad de utilizar Agregación.

hth.

Nota al pie. La agregación puede ser aplicable si necesita modelar una relación de árbol recursiva, p. una parte descompuesta recursivamente en subpartes. La agregación dice que no puede haber relaciones circulares, es decir, una parte no puede ser una subparte de sí misma, directa o indirectamente. Sin embargo, es poco probable que la mayoría de las personas que lean el modelo lo sepan. -Entonces necesitarías agregar un comentario. Lo que significa que sería mejor quedarse con una asociación binaria y evitar la confusión de usar Aggregation.

Cuestiones relacionadas