Si una clase tiene una referencia de entidad, se conoce como Agregación. La agregación representa la relación HAS-A.
10 de 60
Considere una situación: el objeto Empleado contiene mucha información, como identificación, nombre, ID de correo electrónico, etc. Contiene un objeto más llamado dirección, que contiene su propia información, como ciudad, estado, país, código postal, etc., como se indica a continuación.
class Employee{ int id; String name; Address address;//Address is a class ... }
En tal caso, el Empleado tiene una dirección de referencia de entidad, por lo que la relación es la dirección del Empleado TIENE-A.
¿Puede una clase abstracta tener un constructor?
¿Por qué utilizar la agregación?
- Para la reutilización del código.
Ejemplo simple de agregación
En este ejemplo, hemos creado la referencia de la clase Operación en la clase Círculo.
class Operation{ int square(int n){ return n*n; } } class Circle{ Operation op;//aggregation double pi=3.14; double area(int radius){ op=new Operation(); int rsquare=op.square(radius);//code reusability (i.e. delegates the method call). return pi*rsquare; } public static void main(String args[]){ Circle c=new Circle(); double result=c.area(5); System.out.println(result); } }Pruébalo ahora
Output:78.5
¿Cuándo utilizar agregación?
- La reutilización de código también se logra mejor mediante la agregación cuando no existe una relación es-a.
- La herencia debe usarse sólo si la relación es-a se mantiene durante toda la vida de los objetos involucrados; de lo contrario, la agregación es la mejor opción.
Comprender un ejemplo significativo de agregación
En este ejemplo, el Empleado tiene un objeto de Dirección, el objeto de dirección contiene su propia información como ciudad, estado, país, etc. En tal caso, la relación es la dirección del Empleado TIENE-A.
Address.java
public class Address { String city,state,country; public Address(String city, String state, String country) { this.city = city; this.state = state; this.country = country; } }
Emp.java
public class Emp { int id; String name; Address address; public Emp(int id, String name,Address address) { this.id = id; this.name = name; this.address=address; } void display(){ System.out.println(id+' '+name); System.out.println(address.city+' '+address.state+' '+address.country); } public static void main(String[] args) { Address address1=new Address('gzb','UP','india'); Address address2=new Address('gno','UP','india'); Emp e=new Emp(111,'varun',address1); Emp e2=new Emp(112,'arun',address2); e.display(); e2.display(); } }Pruébalo ahora
Output:111 varun gzb UP india 112 arun gno UP indiadescarga este ejemplo