Tutorial
Relación agregación y composición en Java
Creado por , hace 5 años
Página 1 de 1
1
¿Qué tal? Soy Mauricio C. Portilla, creador de Arkan App, y en esta publicación te enseñaré las relaciones de agregación y composición en Java. Si ya leíste y comprendiste la publicación en la que hablo sobre la relación de Asociación, esta debería serte muy sencilla de igual forma.

Empecemos con la agregación. La agregación es un tipo de relación que indica que un objeto forma parte o le pertenece a otro objeto, es prácticamente una asociación, pero se diferencian por la notación que se utiliza en UML y su funcionalidad dentro del código. Veamos primero cómo luce su notación:
Vemos que se compone de una línea con un rombo blanco (a este lo llamaremos desde ahora diamante), el cual es colocado del lado de la clase TODO, y con ello me refiero a que es la clase que almacenará objetos de la otra clase (la clase PARTE).
Demos un vistazo a la codificación:
Código Java

Vemos que tenemos un atributo clientes de tipo Cliente con tamaño de 3, un atributo numClientes de tipo int con cero asignado, un constructor vacío, y un método llamado addCliente de tipo void que recibe como parámetro un Cliente. Nuestro método únicamente asigna al elemento Cliente que recibimos como parámetro en un lugar disponible en el arreglo, por supuesto faltaría la verificación de que haya suficientes espacios para evitar errores.
No veo necesario mostrar la clase Cliente, ya que luce como cualquier otra.
Ahora veamos el main:
Código Java

No hay nada del otro mundo, es simplemente enviar nuestro objeto Cliente a nuestra Tienda para que sea añadido.

Vayamos a la parte que se torna aún más interesante, la composición.
La composición es una relación como la agregación, pero más fuerte, es decir, un objeto no puede ser ese objeto sin otros objetos, por ejemplo: una silla no puede ser silla sin sus patas, un automóvil no puede ser automóvil sin sus ruedas o su motor, básicamente todos dependen de entre sí.
Veamos la notación en UML:

Vemos que se parece a la de agregación, sólo que el diamante es oscuro. En este ejemplo tenemos la clase Silla que se compone de 4 patas.
La forma de implementar esto es un poco diferente, ya que, a diferencia de las demás relaciones, en esta no queremos que, si el objeto Silla es destruido, sus patas anden vagando por la memoria, por decirse así; entonces, el objetivo es que la destrucción se lleve consigo a todas las patas que componen a la silla, y para lograr esto, debemos crear el objeto dentro de la clase Silla, siendo nuestra función de agregarPata una compuesta por parámetros del constructor de Pata. Veamos cómo luce:
Código Java

Vemos que inicializamos el arreglo de patas dentro del constructor, esto es importante de respetar, y tenemos el método agregarPata con parámetros color y peso, pero observemos que creamos el objeto Pata ahí mismo, no la recibimos desde fuera.
Esta es la clase Pata:
Código Java

Ahora veamos el main:
Código Java

Creamos nuestro objeto Silla de forma normal, y llamamos al método agregarPata y le asignamos los valores que queramos a los parámetros.

Espero te haya sido de utilidad. Si tienes alguna duda, puedes dejármela en los comentarios.
¡Excelente día!
0