¿Qué es la composición en Java con ejemplos?

Publicado: 2021-04-09

Java es un lenguaje versátil que admite la programación orientada a objetos y la reutilización de código con la creación de relaciones entre dos clases. Hay dos tipos de relaciones o asociaciones en Java que se utilizan para reutilizar un código y reducir la duplicidad de una clase a otra.

Estas relaciones son IS-A (Herencia) y HAS-A (Asociación). Si bien existe un estrecho acoplamiento entre las clases IS-A, las clases HAS-A están débilmente acopladas y son más preferibles para los programadores.

La relación HAS-A se divide en dos tipos, a saber, agregación y composición en Java . Este artículo se basa en el concepto de composición OOP . Veremos muchos ejemplos de la vida real de cómo se codifica la composición y las ventajas que se obtienen cuando se implementa.

Tabla de contenido

Una breve narración de asociaciones o relaciones en Java

En la programación orientada a objetos, los objetos están relacionados entre sí y utilizan la funcionalidad común entre ellos. Aquí es donde entran los temas de Herencia, Asociación, Agregación y Composición en los programas Java.

Herencia (IS-A) y Asociación (HAS-A) en Java

1. Herencia (IS-A)

Una relación IS-A significa que un objeto es un tipo de otro. Se implementa utilizando las palabras clave 'extiende' e 'implementa'.

Ejemplo: portátil HP IS-A

2. Asociación (HAS-A)

Una relación HAS-A significa que una clase tiene una relación con otra clase. Por ejemplo, la Clase A contiene la referencia de la Clase B y puede acceder a todas las propiedades de la clase B.

Ejemplo: Cuerpo humano TIENE-A Corazón

Fuente

Fuente

3. Agregación Vs Composición

La relación Tiene-A o Asociación se puede dividir en agregación y composición. Una clase contenedora de agregación y una clase referenciada pueden tener una existencia independiente. Una clase de referencia de composición no puede existir si se destruye la clase de contenedor.

Tomemos un ejemplo para comprender la agregación y la composición. Un automóvil tiene sus partes, por ejemplo, motores, ruedas, reproductor de música, etc. El automóvil no puede funcionar sin un motor y ruedas, pero puede funcionar sin un reproductor de música. Aquí, el motor y el automóvil tienen una relación de composición, y el automóvil y el reproductor de música tienen una relación de agregación. En el caso de Agregación, un objeto puede existir sin ser parte del objeto principal.

Fuente

Composición en Java

Una composición en Java entre dos objetos asociados entre sí existe cuando existe una fuerte relación entre una clase y otra. No pueden existir otras clases sin el propietario o la clase principal. Por ejemplo, la clase A 'Human' es una composición de Corazón y pulmones . Cuando el objeto humano muere, no existen partes de nadie.

La composición es una forma restringida de Agregación. En Composición, una clase incluye otra clase y depende de ella para que no pueda existir funcionalmente sin otra clase.

Implementación de Composición en Java

La relación entre el motor y el automóvil se implementa utilizando clases de Java como se muestra a continuación. En Java, la palabra clave 'final' se usa para representar Composición. Esto se debe a que el objeto 'Owner' espera que un objeto parcial esté disponible y funcione haciéndolo 'final' .

Coche de clase pública {

Motor motor final privado ;

Coche público (){

motor = nuevo Motor();

}

}

motor de clase {

tipo de cadena privado ;

}

Tomemos otro ejemplo que representa tanto la herencia como la composición.

Fuente

En este programa, la clase Honda es un Auto y se extiende desde la clase Auto. El motor de automóvil Object se utiliza en la clase Honda.

clase CarEngine {

Motor de inicio de vacío público () {

System.out.println (" El motor del automóvil ha arrancado ");

}

motor de parada de vacío público () {

System.out.println(“ El motor del automóvil se detuvo .”);

}

}

coche de clase {

Color de cadena privado;

privado int maxi_Speed;

public void carDetails(){

System.out.println(“Color del coche= “+color + “; Velocidad máxima= ” + maxi_Speed);

}

//Ajuste de color del coche

public void setColor(Color de la cadena) {

este.color = color;

}

//Configuración de la velocidad máxima del automóvil

public void setMaxiSpeed(int maxi_Speed) {

esto.maxi_Velocidad = maxi_Velocidad;

}

}

clase Honda extiende Car{

público vacío HondaStart(){

CarEngine Honda_Engine = new CarEngine(); //composición

Motor_Honda.startEngine();

}

}

clase pública Principal {

public static void main(String[] args) {

Honda HondaJazz = nuevo Honda();

HondaJazz.setColor(“Negro”);

HondaJazz.setMaxSpeed(160);

HondaJazz.carDetails();

HondaJazz.HondaStart();

}

}

Producción:

Color del coche = negro; Velocidad máxima = 160

El motor del coche ha arrancado.

La salida se obtiene mediante composición y muestra los detalles del automóvil Honda Jazz.

Denotaciones UML de asociación

Las relaciones de asociación, agregación y composición en Java entre las clases A y B se representan de la siguiente manera en diagramas UML:

Asociación: A—->B

Composición: A—–<lleno>B

Agregación: A—–<>B

Obtenga títulos de ingeniería de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Beneficios de la composición en Java

El uso de la técnica de diseño de composición en Java ofrece los siguientes beneficios:

  1. Siempre es factible "preferir la composición de objetos sobre la herencia de clases". Las clases logran polimorfismo y reutilización de código por composición.
  2. La composición es flexible, donde puede cambiar la implementación de la clase en tiempo de ejecución cambiando el objeto incluido y cambiando su comportamiento.
  3. Un diseño basado en composición tiene un número menor de clases.
  4. LA relación “HAS-A” entre clases es semánticamente correcta que la relación “IS-A”.
  5. La composición en Java ofrece una mejor capacidad de prueba de clase que es especialmente útil en el desarrollo basado en pruebas.
  6. Es posible lograr "herencias múltiples" en idiomas al componer múltiples objetos en uno.
  7. En composición, no hay conflicto entre métodos o nombres de propiedad.

Conclusión

La composición en Java ofrece muchas ventajas durante la programación y es uno de los métodos de diseño preferidos. En este artículo, hemos tratado de hacerte entender este importante concepto con ejemplos de la vida real y código práctico. La composición ofrece flexibilidad y código robusto. Su característica de reutilización de código ayuda a evitar la duplicación de código y lograr rentabilidad. Esto lo convierte en uno de los métodos más utilizados en varios programas.

Aprenda composición en Java con la Maestría en Ciencias en un curso de Ciencias de la Computación de upGrad, cuyo objetivo es que aprenda y mejore sus habilidades en el desarrollo de software.

Elegibilidad

Licenciatura AB con 50% o notas equivalentes. No se necesita experiencia inicial de codificación.

Precios

La tarifa del programa comienza en Rs.13, 095/mes para residentes indios y USD 5999 para residentes internacionales.

Aterrice en el trabajo de sus sueños

Solicite la Maestría en Ciencias en Aprendizaje Automático e IA