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

Publicado: 2022-11-19

La versatilidad del lenguaje de programación Java permite la reutilización del código al mismo tiempo que reduce la duplicidad entre clases. Java facilita la reutilización del código mediante la creación de relaciones entre clases, y estas relaciones son de dos tipos: herencia y asociación. Si bien la herencia nos permite implementar una relación is-a y crear una nueva clase a partir de una clase existente, la asociación o la relación has-a garantiza la reutilización del código.

La relación has-a se divide además en dos categorías: agregación y composición en Java . Este artículo explorará el concepto de composición en Java y lo ayudará a comprender sus fundamentos con ejemplos.

Tabla de contenido

Una visión general de las relaciones en Java

Las relaciones en Java se refieren a las diferentes formas en que se relacionan las clases. En términos generales, hay dos tipos de relaciones en Java:

  • es-una relación
  • tiene una relacion

Composición en Java

Fuente

Es-una relación (Herencia)

La función de herencia en Java nos permite implementar relaciones is-a. En este caso, una clase hereda otra clase. Por ejemplo, si una clase 'Flor' hereda otra clase, 'Lirio', podemos decir que la clase 'Lirio' tiene una relación es-un con 'Flor'. También implica que Lily es una flor.

Ejemplo: Lily 'es una' flor, la computadora 'es un' dispositivo, etc.

Tiene una relación (Asociación)

Una relación tiene-a significa que una clase usa la instancia de otra clase, y tal relación en Java se llama asociación. Por ejemplo, si una clase P tiene la referencia de otra clase Q, implica que P puede acceder a todas las propiedades de la clase Q.

Ejemplo: la computadora 'tiene un' procesador, la abeja 'tiene una' picadura, etc.

Una asociación en Java es una relación entre dos clases discretas que utilizan sus objetos. La relación puede ser de los siguientes tipos:

  • Uno a muchos: un objeto se asocia con múltiples objetos.
  • Uno a uno: un objeto se asocia con un solo objeto.
  • Muchos a muchos: muchos objetos se asocian con otros objetos múltiples.
  • Muchos a uno: muchos objetos se asocian con un objeto.

La asociación es de dos tipos: agregación y composición.

Composición en Java

La composición en Java es una técnica de diseño para implementar relaciones has-a entre clases. En esta asociación, una clase contiene otra clase. Además, la clase contenida se basa en la clase contenedora y no puede existir de forma independiente. En otras palabras, una clase incluye otra clase con funcionalidad interdependiente.

Por ejemplo, una clase 'Coche' contiene las clases 'Motor' y 'Batería'. Por lo tanto, 'Coche' tiene una relación con 'Motor' y 'Batería', y los dos últimos no pueden existir de forma independiente sin 'Coche'.

Consideremos otro ejemplo de la vida real. Un cuerpo humano tiene riñones, y los órganos no pueden existir sin un cuerpo humano. Por lo tanto, si pensamos que 'Humano' es una clase que tiene una relación con la clase 'Riñones', es un ejemplo de composición en Java, ya que los riñones no pueden existir de forma independiente sin un cuerpo humano.

Seminario web de desarrollo de software exclusivo de upGrad para usted:

SAAS Business – ¿Qué es tan diferente?

Ejemplo de implementación de la composición en Java

Ahora considere el siguiente programa que demuestra el concepto de composición en Java . Lo dividiremos en pasos para una mejor comprensión.

Paso 1: En el primer paso, crearemos una clase 'Car' y declararemos y definiremos métodos y miembros de datos.

coche de clase

{

// declaración de miembros de datos y métodos

color de cadena privado;

velocidad interna privada;

public void carFeatures()

{

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

}

public void setColor(Color de la cadena)

{

este.color = color;

}

setspeed vacío público (velocidad int)

{

this.speed = velocidad;

}

}

Paso 2: A continuación, crearemos una clase 'Fiat' que amplíe la clase anterior 'Coche'. La clase 'Fiat' usa el método start() del objeto de clase FiatEngine a través de la composición, lo que implica que la clase 'Fiat' 'tiene-un' FiatEngine. Fiat es un automóvil, por lo que se extiende de la clase 'Automóvil'.

clase Fiat amplía Coche

{

// hereda todas las propiedades de la clase Car

conjunto de vacío público ()

{

FiatEngine e = nuevo FiatEngine();

e.start();

}

}

Paso 3: En el siguiente paso del programa de composición de Java, crearemos una clase FiatEngine a través de la cual usaremos el objeto de clase en la clase anterior 'Fiat'.

clase FiatMotor

{

inicio vacío público ()

{

System.out.println(“El motor ha arrancado”);

}

parada de vacío público ()

{

System.out.println(“El motor se detuvo”);

}

}

Paso 4: En el paso final del programa, crearemos una clase CompositionExample, haremos un objeto de la clase 'Fiat' y lo inicializaremos.

clase ComposiciónEjemplo

{

public static void main(String[] args)

{

fiat f = nuevo fiat();

f.setColor(“Negro”);

f.setspeed(175);

f.carFeatures();

h.setStart();

}

}

Producción:

Color del coche = Negro Velocidad máxima = 175

El motor ha arrancado.

Aprenda cursos de desarrollo de software en línea de las mejores universidades del mundo. Obtenga Programas PG Ejecutivos, Programas de Certificado Avanzado o Programas de Maestría para acelerar su carrera.

Agregación y Composición en Java

La agregación y la composición en Java son los dos tipos de relaciones has-a, y ambas son diferentes en términos de dependencia entre clases. En la agregación, las clases de contenedor y de referencia tienen una existencia independiente, mientras que una clase de referencia de composición deja de existir sin una clase de contenedor. Por lo tanto, una clase de referencia depende de su clase de contenedor en la composición.

Aquí hay un ejemplo de la vida real para comprender la diferencia entre agregación y composición en Java . Un automóvil tiene varias partes como un motor, frenos, batería, faros, reproductor de música, etc. Si bien el automóvil puede funcionar sin un reproductor de música, no puede funcionar sin partes esenciales como un motor o una batería. Por tanto, podemos decir que el automóvil y el reproductor de música tienen una relación de agregación, mientras que el motor y el automóvil tienen una relación de composición.

¿Cuáles son los beneficios de usar la composición en Java?

Ahora que tiene una comprensión fundamental del concepto de composición en Java, aquí hay una descripción general de los beneficios de esta técnica:

  • La composición en Java facilita la reutilización del código.
  • La composición en Java nos permite controlar la visibilidad de otros objetos para las clases de clientes y reutilizar lo que necesitamos.
  • Aunque Java no admite herencias múltiples, podemos solucionarlo mediante la composición.
  • La composición en Java es flexible y nos permite cambiar los objetos miembros en tiempo de ejecución para alterar el comportamiento del programa.
  • La composición de Java ofrece una mejor capacidad de prueba de clase, una característica particularmente útil en el desarrollo basado en pruebas.
  • Un diseño basado en composición tiene menos clases.

Cursos y artículos populares sobre ingeniería de software

Programas Populares
Programa PG Ejecutivo en Desarrollo de Software - IIIT B Programa de Certificación Blockchain - PURDUE Programa de Certificado de Ciberseguridad - PURDUE MSC en Ciencias de la Computación - IIIT B
Otros artículos populares
Salario de ingeniero de nube en los EE. UU. 2021-22 Salario del arquitecto de soluciones de AWS en EE. UU. Salario de desarrollador de backend en los EE. UU. Salario de desarrollador front-end en EE. UU.
Salario de desarrollador web en EE. UU. Preguntas de la entrevista de Scrum Master en 2022 ¿Cómo iniciar una carrera en seguridad cibernética en 2022? Opciones de carrera en los EE. UU. para estudiantes de ingeniería

Conclusión

La composición en Java es una excelente técnica si la relación entre las clases es constante y buscas reutilizar el código. En resumen, aquí hay algunos puntos clave que debe recordar sobre la composición en Java:

  • La composición en Java representa una relación tiene-un.
  • En la composición, una clase contiene otra clase y la clase contenida se basa en la clase contenedora y no puede existir de forma independiente.
  • Ambas entidades en una asociación de composición dependen una de la otra.
  • Podemos lograr la composición en Java a través de una variable de instancia que hace referencia a otros objetos.

Mejore su carrera con el programa Executive PG de upGrad en desarrollo de software

El desarrollo de software es una de las opciones profesionales más lucrativas para los jóvenes profesionales. Si ya está en la industria o está buscando comenzar, debe inscribirse en el Programa PG Ejecutivo en Desarrollo de Software de upGrad . El programa le enseña habilidades en demanda y los diez lenguajes y herramientas de codificación mejor pagados . Puede elegir entre cuatro especializaciones, que incluyen Blockchain Development, Full Stack Development, DevOps y Cloud Backend Development.

Además de aprender los lenguajes de programación mejor pagados , puede trabajar en más de 30 estudios de casos y proyectos. Los miembros de la facultad de clase mundial toman conferencias en vivo y sesiones en línea para el curso. El apoyo al estudiante está disponible las 24 horas.

¡ Solicite ahora para obtener la admisión al curso lo antes posible!

¿Qué es composición y herencia en Java?

La composición y la herencia en Java son dos técnicas de programación para establecer relaciones entre objetos y clases. La composición representa una relación tiene-a con una clase que contiene otra clase. Por otro lado, la herencia exhibe una relación es-un con una clase que adquiere las propiedades y el comportamiento de otra clase.

¿Cuál es el propósito de la composición en Java?

La composición en Java permite la reutilización del código y proporciona una mejor capacidad de prueba de una clase. Aunque Java no admite herencias múltiples, la composición proporciona una forma de hacerlo.

¿Es la composición un OOP?

La composición es un concepto fundamental en la programación orientada a objetos. Describe una relación tiene-un donde una clase hace referencia a uno o más objetos de otras clases a través de variables de instancia.