Agregación Java vs Composición
- Composición en Java
- Agregación en Java
- Composición frente a agregación
- Trabajar con Composición en Java
- Trabajar con agregación en Java
En Java, la agregación y la composición son dos conceptos íntimamente ligados. Composición
es una estrecha asociación entre clases, mientras que la agregación es una asociación débil.
Composición en Java
La composición es cuando un objeto de clase base posee otro objeto de clase derivado y el objeto de clase derivado no puede existir sin la clase base.
Por ejemplo, construir un Humano
tendrá varias subclases: la mano, la pierna y el corazón. Cuando un objeto humano
muere, todas sus subpartes dejan de existir significativamente.
Agregación en Java
La agregación es cuando un objeto de clase base y su objeto de clase derivado pueden existir de forma independiente. Por ejemplo, si construimos una clase base Jugador
y de ella derivamos una clase Equipo
, el equipo seguirá existiendo si se destruye el objeto Jugador
.
Del mismo modo, si el Equipo
se disuelve, el Jugador
seguirá existiendo y podrá unirse a otro equipo.
Composición frente a agregación
Composición | Agregación |
---|---|
Relación PART-OF o relación especial HAS A |
Relación TIENE A |
Dependencia unidireccional | Dependencia bidireccional |
Fuerte tipo de asociación | Tipo débil de asociación |
El niño depende de la clase principal | El niño es independiente de la clase de padres. |
La representación del diagrama UML es un diamante negro | La representación del diagrama UML es un diamante blanco |
Trabajar con Composición en Java
import java.io.*;
import java.util.*;
class Job {
private int pay;
private int id;
public int getWage() {
return pay;
}
public void setWage(int pay) {
this.pay = pay;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
class Person {
private Job job;
public Person() {
this.job = new Job();
job.setWage(650);
}
public int getWage() {
return job.getWage();
}
}
class Main {
public static void main(String[] args) {
Person person = new Person();
int salary = person.getWage();
System.out.println("The wage of the person for a job: " + salary);
}
}
Producción :
The wage of the person for a job: 650
El código anterior muestra la relación de composición entre dos clases. La composición se clasifica como un tipo de relación parte de
; en el caso anterior, salario
es parte de un trabajo
.
Hemos definido constructores parametrizados, funciones setter y getter para ambas clases.
Trabajar con agregación en Java
import java.io.*;
import java.util.*;
class Bank {
private String BankName;
Bank(String name) {
BankName = name;
}
public String getBankName() {
return BankName;
}
}
class Employee {
private String EmployeeName;
Employee(String name) {
EmployeeName = name;
}
public String getEmployeeName() {
return EmployeeName;
}
}
class Main {
public static void main(String[] args) {
Bank bank = new Bank("IMF");
Employee emp = new Employee("Rob");
System.out.println(emp.getEmployeeName() + " is an employee of the " + bank.getBankName());
}
}
Producción :
Rob is an employee of the IMF
El código anterior muestra la relación de agregación entre dos clases. La agregación se clasifica como una relación del tipo has-a
; en el caso anterior, el banco
tiene un empleado llamado Rob
.
Hemos definido constructores parametrizados, funciones setter y getter para ambas clases.
Musfirah is a student of computer science from the best university in Pakistan. She has a knack for programming and everything related. She is a tech geek who loves to help people as much as possible.
LinkedIn