UML diseño de agregación vs composición


Esto, es una parte muy sencilla, pero al mismo tiempo básica para el diseño de un diagrama de clases UML, la forma de representar que un objeto tiene como contenido a otro, esto quiere decir que un objeto de un tipo, puede contener a otro, en un sentido abstracto de posesión, es decir, por ejemplo un objeto de tipo, por ejemplo, ciudad tiene una lista de objetos de tipo aereopuerto, esto quiere decir, que una ciudad, tiene un número de aereopuertos, destacar, que la cardinalidad del extremo que lleva el rombo, es siempre uno, ahi va un ejemplo:

Diagrama de agregación

En la misma linea, la composición, es una relación más fuerte de los objetos, asi como la agregación, es el hecho de que un objeto posea a otro, la composición es cuando la relación entre ambos objetos es tal, que el agregado es una parte importante del agregador, de tal forma que el primero no tiene sentido suelto, y el segundo, necesita definir al primero para ampliar su significado, ya se que esto suena un tanto etereo, pero con un ejemplo se ve mejor:

Diagrama de composición

El avión tiene sentido por si solo, pero esta claro que esta compuesto de 2 alas, esta relación es de mucha fuerza, mucho más que el caso de los aereopuertos, y esta claro, que un avión siempre tendrá sus dos alas, y estas siempre serán del mismo avión. El caso de los aereopuertos, es claramente más sueve la relación.

Entradas relacionadas de UML en este blog:

Ingeniería inversa con eclipse Java2UML

Clase asociativa

56 Comments

  1. Muy bueno el resumen , seria bueno que añadas un poco mas como por ejemplo herencias , atributos , roles , navegabilidad , etc que a la mayoria es poco complicado comprender

    Salu2s

  2. Me sumo, buena explicacion. Tenía una buena profesora, pero tengo que reconocer que acá se entendió mucho más. Estoy tomando vodka para celebrar esta explicación, salud

  3. Me parece bien la explicación, lo complicado de este tipo de abstracción es definir cuando es una simple asociación o una asociación de agregacion. En el ejemplo de Ciudad y Aeropuerto podria ser una simple asociación en un contexto distinto. Ahora bien la dificultad de estos conceptos de abstracción utilizados en el diseño, está en definir las implicancias en la construcción misma.

    1. Toda la razón, todo depende del contexto y los mismos objetos en contextos diferentes, pueden tener relaciones que se interpretan de forma opuesta

  4. Que ejemplo TAN mal elejido! si se destruye la ciudad (Hiroshima) se queda sin aerorpuertos. No puede existir un aeropuerto sin una ciudad.. O acaso son moviles ?

  5. Que bien esta bien claro el resumen pero es mejor agregar un poco sobre la herencia y tambien la asociacion pero detoodos modos gracias

  6. Todos los que han opinado deben de ser unos genios, con un cociente intelectual altísimo, porque yo no he entendido la explicación de icrovett. No me parece un resumen fantástico, ni siquiera bueno desde el punto de vista formal. Pone dos ejemplos que podrían ser fácilmente criticados: en el caso de la ciudad y los aeropuertos podría decirse que no tiene ningún sentido que exista un aeropuerto si no pertenece a ninguna ciudad (¿dónde está situado?) con lo cual estaríamos hablando de una composición y no de una agregación como icrovett sugiere. Si pensamos un poco en el ejemplo del avión y las alas podemos deducir que tampoco está tan claro, cuando un avión se retira del servicio sus «partes», por ejemplo las las, pueden ser re-utilizadas en otros aviones, esto echa por tierra la afirmación de que existe una relación de composición y de que es «fuerte», los objetos de tipo «ala» pueden seguir existiendo (de hecho lo hacen) aunque se destruya el avión.Yo sugiero que las cosas se piensen un poco más, que se eviten los comentarios sin justificar, por ejemplo: está claro, resulta evidente, etc.

    1. Hola José, siento que el post no te haya parecido ni siquiera bueno, una pena por mi parte.
      No creo que nadie de los que hayan comentado anteriormente sean unos genios (como tampoco yo lo soy), porque no necesitarian de mis comentarios para entender nada.
      No voy a decir que los ejemplos elegidos sean los mejores que se puedan dar, ni que este post sea ni de lejos, perfecto, pero en su momento me pareción que explicaba algo que a mi me costó entender (una demostración más de que por este blog no pasamos por genios) y que según tu opinión, ni he explicado bien en este post, ni parece que compartas mi visión del tema.

      Acepto tu comentario como una critica constructiva, e intentaré en otras entradas ser más exigente con los ejemplos usados.

      Por cierto, creo que las opiniones de otros, sean buenas o malas son tan aceptetables y justificadas como a cada uno le parecen, internet es un lugar que debe ser libre y para todos.

      Gracias por tomarte tu tiempo en escribir.

Replica a Pablo Bozzolo Cancelar la respuesta

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.