Agregación en Java

Agregación en Java

¿Qué es la agregación?

La agregación es un tipo de asociación entre clases que se puede llevar a cabo en distintos lenguajes de programación orientados a objetos, como, por ejemplo, Java. Es un proceso que permite reutilizar código de manera rápida y eficiente, lo que hace que los programas sean mucho más fáciles de escribir y además se puedan ejecutar más eficientemente.

En términos generales, la agregación consiste en hacer referencia a una clase dentro de otra clase. Esto crea lo que se llama una relación HAS-A (que se traduce al español como TIENE-UN o TIENE-A) entre la clase contenedora y la clase contenida. Estas relaciones se caracterizan por ser unidireccionales, ya que implican que una de las clases contiene a la otra; esto impide que pueda suceder lo contrario.

Por ejemplo, podemos decir que una empresa, la cual puede verse desde el punto de vista de programación como una clase de objeto, tiene un conjunto de empleados; estos, a su vez, también pueden verse como objetos con atributos propios. En este caso, la clase contenedora es la empresa, mientras que la clase contenida la conforman los empleados. Esta relación solo tiene sentido en esta dirección, es decir, desde la empresa al empleado. La relación en la dirección contraria no tiene sentido, ya que sería como decir que el empleado contiene a la empresa. El hecho que esto no tenga sentido demuestra que se trata de una relación unidireccional.

La agregación en los diagramas de clases

En el Lenguaje Unificado de Modelado (UML, por sus siglas en inglés), el cual es un tipo de lenguaje visual universal creado para diseñar sistemas de software complejos, se utilizan diagramas de clases para describir la estructura y características de un sistema. En estos diagramas se representa cada clase y sus relaciones con las demás por medio de figuras geométricas. En el caso de la agregación, esta relación se representa con un rombo hueco del lado de la clase contenedora, el cual está unido por medio de un segmento de línea recta a la clase contenida. Por ejemplo:

Agregación en Java

Esta es una relación de agregación que indica que la clase Pozo contiene a la clase Pato.

¿Cómo se implementa la agregación en Java?

La implementación de la agregación en Java es relativamente sencilla. Solo se trata de crear dos clases y luego hacer referencia a la primera clase dentro de la segunda.

Además de establecer una relación de “tener un” o de “tener a”, la agregación en Java se caracteriza por ser una relación débil entre el objeto contenedor y el contenido. Esto significa que la destrucción de uno no implica la destrucción del otro. Para entender este tipo de relación se puede tomar como ejemplo la relación entre un profesor y sus estudiantes. En este caso, la desaparición o muerte del profesor no trae como consecuencia la desaparición o muerte de sus estudiantes.

El caso contrario sería la relación entre un ser humano y su corazón. Es indudable que el corazón está contenido en el ser humano, pero esta relación es distinta a la de agregación. Esto se debe a que, en este caso, ambos dependen el uno del otro. La destrucción del ser humano destruye también al corazón, ya que para funcionar este necesita de los nutrientes y la oxigenación que el cuerpo le proporciona. Por otro lado, la destrucción del corazón también destruye al ser humano, ya que sin corazón no podemos vivir (excluyendo los casos de trasplantes u otros métodos de soporte vital artificial).

Ejemplo de agregación

El siguiente código ejemplifica la implementación de la agregación como forma de asociación entre dos clases mediante Java. El ejemplo trata sobre un programa para llevar el registro de cuáles empleados de una empresa tienen automóvil propio y cuáles no, así como de cuáles tienen bicicleta y cuáles no.

Como se está buscando establecer una relación que indica que el empleado “tiene” un automóvil y/o que el empleado “tiene” una bicicleta, se trata de una relación de agregación entre la clase a la que pertenecerá el empleado (a la que llamaremos Empleado, por razones obvias) y dos clases adicionales, una para el automóvil y otra para la bicicleta.

Lo primero que se debe hacer en estos casos es crear las respectivas clases. En este caso, se trata de tres clases: una para el auto, una para la bicicleta y otra para el empleado. La siguiente figura muestra el código para la creación de estas clases, las cuales se denominaron Auto, Bicicleta y Empleado.

Agregación en Java

En el código anterior también se puede observar que cada clase tiene asociados ciertos atributos. En el caso del auto, este posee como atributos el modelo, el color y las placas, todas asociadas al auto. Lo mismo sucede con la bicicleta, la cual tiene asociado un número de placa y el modelo.

Cuando observamos a la clase Empleado, notamos que esta clase posee los atributos monbreemp, que representa el nombre del empleado y empid, que representa el número de identificación del empleado; luego hace referencia a las clases Auto y Bicicleta, creándose la asociación de agregación entre estas clases. Finalmente, se crea el registro de un empleado junto con su automóvil y su bicicleta.

Nótese que, en este ejemplo, al hacer referencia a las clases Auto y Bicicleta dentro de la clase Empleado se puede acceder a los atributos de la bicicleta y del auto desde adentro de la clase Empleado.

La salida de este programa sería:

________Detalles del empleado________

Nombre del empleado: Javier

Número de identificación del empleado: 210921

________Detalles del auto del empleado________

Modelo del auto: Corolla

Color del auto: Verde

Placa del auto: XFZ-043

________Detalles de la bicicleta del empleado________

Modelo de Bicicleta: MERIDA

Placas de Bicicleta: LAA-11B

Referencias