la Agregación es un término que se utiliza para referirse de una forma de relación entre dos objetos. Por ejemplo, la clase de estudiante puede tener referencia de la clase de dirección, pero viceversa no tiene sentido.
En Java, la agregación representa la relación HAS-A, lo que significa que una clase contiene la referencia de otra clase que se sabe que tiene agregación.
La relación TIENE-A se basa en el uso, en lugar de en la herencia. En otras palabras, la clase A tiene una relación-a con la clase B, si la clase A tiene una referencia a una instancia de la clase B.
Entendamos por un ejemplo y consideremos dos clases, Estudiante y Dirección. Cada estudiante tiene su propia dirección que hace que tenga una relación, pero la dirección que tiene el estudiante no tiene ningún sentido. Podemos entenderlo más claramente usando código Java.
Aquí en el código anterior, podemos ver que la clase del estudiante tiene una relación con la clase de dirección. También hemos dibujado una imagen para demostrar la relación entre estas dos clases..
El Student
clase tiene una variable de instancia de tipo Address
. Como tenemos una variable de tipo Address
en la clase Student
, puede usar la referencia de dirección que es ad
en este caso, para invocar métodos de la clase Address
.
Ventaja de la agregación
La principal ventaja de usar la agregación es mantener la reutilización del código. Si una entidad tiene una relación con otra entidad, puede reutilizar el código con solo referirlo.
Ejemplo de agregación
Ahora vamos a entenderlo usando un ejemplo, aquí creamos dos clases Autor y Libro y la clase Libro tiene una relación con la clase Autor al tener su referencia. Ahora podemos obtener todas las propiedades de ambas clases.
Nombre del libro: Java para principiantes Precio del libro: 800————Detalles del Autor———-Nombre del autor: JohnAuther Edad: 42 Lugar del autor: EE.UU.
Tomemos un ejemplo más para entender la agregación. Supongamos que tenemos un editor de clase más, entonces la clase Book puede reutilizar los detalles de la clase de editor simplemente usando su referencia como clase de Autor. Vamos a entenderlo por código Java.
Composición en Java
La composición es una forma de agregación más restringida. La composición se puede describir como cuando una clase que incluye otra clase, depende de ella de tal manera que no puede existir funcionalmente sin la clase que se incluye. Por ejemplo, una clase Car
no puede existir sin Engine
, ya que ya no será funcional.
De ahí la palabra Composición que significa que los elementos de los que está hecho algo y si cambiamos la composición de las cosas, cambian, de manera similar en las clases Java, una clase que incluye otra clase se llama composición si la clase incluida proporciona un significado funcional central a la clase externa.
class Car{ private Engine engine; Car(Engine en) { engine = en; }}
Aquí, examinando el código, podemos entender que si la clase de automóvil no tiene relación con la clase de motor, entonces el automóvil no tiene existencia.
La composición es una técnica de diseño, no una característica de Java, pero podemos lograrlo usando código Java.
Q. ¿Cuándo usar la herencia y la agregación?
Cuando se desea utilizar alguna propiedad o comportamiento de cualquier clase sin el requisito de modificarla o agregarle más funcionalidad, en tal caso la agregación es una mejor opción porque en caso de Agregación solo estamos utilizando cualquier clase externa dentro de nuestra clase como variable.
Mientras que cuando desea usar y modificar alguna propiedad o comportamiento de cualquier clase externa o puede querer agregar más funciones encima de ella, lo mejor es usar Herencia.
Para comprender más sobre herencia, puede visitar nuestro tutorial detallado aquí. Haga clic Aquí para ver la Herencia en Java