java composition what is composition java
Este tutorial de composición de Java explica qué es la composición y la agregación en Java y las diferencias entre ellos:
En el último par de tutoriales, discutimos la herencia en Java en detalle. La herencia en Java es un tipo de relación 'IS-A' que indica que un objeto 'es una especie de' otro objeto. Por ejemplo, un automóvil es un tipo o clase de vehículo.
La programación orientada a objetos proporciona otro tipo de relación denominada relación 'HAS-A'. En este tutorial, discutiremos en detalle la relación tiene-a.
=> Visite aquí para aprender Java desde cero.
Lo que vas a aprender:
- Tutorial de composición de Java
- Asociación en Java
- Diferencias entre la agregación y la composición
- Composición vs. Herencia
- Conclusión
Tutorial de composición de Java
La relación 'tiene-a' en Java se llama Composición . Al utilizar la relación o composición 'tiene-a', garantizamos la reutilización del código en nuestros programas.
Entonces, al hacer que nuestros programas usen la relación 'tiene-a', lo que estamos haciendo aquí es que hacemos que nuestro programa use una instancia de una clase directamente en lugar de 'extenderla' desde otra clase como lo hacemos en caso de herencia.
El siguiente diagrama muestra las relaciones 'is-a' y 'has-a' en Java.
Como se ve en el diagrama anterior, el automóvil y el vehículo comparten la relación 'IS-A' como un automóvil es un vehículo. Por lo tanto, creamos un objeto de automóvil a partir del objeto de vehículo existente al agregarle más características.
En el diagrama, el automóvil y el motor comparten la relación 'Tiene-a'. Un coche siempre tiene un motor. Entonces, lo que hacemos aquí es que no ampliamos las propiedades del objeto Engine, sino que usamos el objeto Engine directamente. Esto se hace en Java usando composición.
Por lo tanto, junto con la encapsulación, la abstracción y el polimorfismo, la herencia y la composición también son características importantes de la programación orientada a objetos (OOP).
Las relaciones 'tiene-a' generalmente determinan si un determinado objeto tiene otro objeto. Entonces, lo que hacemos aquí es reutilizar un objeto y así reducir la duplicación de código y los errores. Esto se debe a que usamos un objeto completamente desarrollado y probado en nuestra clase.
Comencemos con la discusión de una relación especial llamada 'Asociación' en Java de la que derivamos la composición y otras relaciones.
Asociación en Java
La asociación en Java se puede definir como una relación que existe entre dos clases individuales usando sus objetos separados. La asociación en Java puede tener las siguientes relaciones.
- Doce y cincuenta y nueve de la noche: Un objeto asociado con exactamente un objeto.
- Uno a muchos: Un objeto se puede asociar a muchos objetos.
- Muchos a uno: Se pueden asociar muchos objetos a un objeto.
- Muchos a muchos: Más de un objeto asociado con más de otro objeto.
Cuando se establece una relación, los objetos que los contienen (objetos que tienen otros objetos como miembros) se comunican con el objeto contenido para reutilizar sus propiedades y características. La asociación tiene dos formas, es decir, composición y agregación.
La siguiente figura muestra esto:
Como se ve en el diagrama anterior, la Asociación incluye Composición y agregación. La composición es un término más específico y la agregación es más general que la composición. Estos formularios se basan en el tipo de relaciones que apoyan.
Antes de pasar a Composición y Agregación, implementemos un programa Java para demostrar la Asociación en Java.
|_+_|Producción:
El programa anterior demuestra una asociación en Java. Aquí, tenemos una cuenta de clase que tiene un nombre de banco y un número de cuenta como miembros privados. A continuación, tenemos una clase de empleado. Sabemos que cada empleado tendrá un número de cuenta para depositar su salario, etc.
Entonces, lo que hacemos es, en lugar de escribir otra clase o método para leer los detalles de la cuenta bancaria del empleado, reutilizamos directamente la clase de cuenta existente. En otras palabras, asociamos un objeto Cuenta con el Empleado para obtener los detalles de la cuenta bancaria del Empleado. El ejemplo anterior hace exactamente esto.
Composición en Java
La composición es una forma de asociación. La composición se puede definir como una asociación en la que una clase contiene otra clase y esta clase contenida depende de la clase que la contiene de tal manera que no puede existir de forma independiente.
Hemos visto un ejemplo de una relación tiene-a arriba. En eso, teníamos un objeto de automóvil que tiene un motor. Este es un ejemplo de composición. En esto, un motor no puede existir de forma independiente sin un automóvil.
La composición es más restringida en comparación con la agregación. La composición no es una característica de Java. Se considera principalmente una técnica de diseño.
El siguiente diagrama muestra un ejemplo de composición.
mejor programa para hacer diagramas de flujo
En esto, un empleado tiene una cuenta bancaria. Sabemos que una cuenta bancaria no puede existir sin un titular de cuenta. Sin un titular de cuenta, se vuelve inactivo.
Podemos usar la composición para modelar objetos que tienen otros objetos como miembros y estos objetos tienen una relación 'tiene-a' entre ellos.
En composición, un objeto está contenido en otro objeto, por lo tanto, cuando el objeto que lo contiene se destruye; el otro objeto también se destruye
Por tanto, podemos ver la relación de composición como una relación de 'parte de un todo' en la que parte no existe sin el todo . Por lo tanto, cuando se destruye el todo, la parte también se elimina. Esto significa que el todo tiene una relación más fuerte con la parte.
Ejemplo de composición de Java
A continuación se muestra el programa para demostrar la composición.
El sistema que usamos aquí se representa a continuación.
Entonces, en este programa, tenemos tres clases como se muestra arriba. Honda es un automóvil por lo que se extiende desde la clase de automóvil. CarEngine Object se utiliza en la clase Honda.
software de inteligencia artificial para pc descarga gratuita
El programa se da a continuación.
|_+_|Producción:
Por tanto, la salida muestra las propiedades de los coches Honda. También muestra la salida de un método de la clase CarEngine que hemos usado como miembro de la clase Honda usando composición.
Este programa mostró cómo podemos usar la composición en un programa Java.
Agregación en Java
La agregación es otra forma de asociación en Java. Pero en el caso de la agregación, solo permite la relación unidireccional entre los objetos. Por ejemplo, un empleado tiene una dirección particular. Pero viceversa, la dirección de la casa tiene empleados, no suena bien.
Del mismo modo, un estudiante tiene una dirección pero 'la dirección tiene un estudiante' no tiene sentido. Al igual que la composición, la agregación también representa la relación 'tiene-a'. Esto significa que una clase contiene un objeto de otra clase.
El siguiente diagrama representa un ejemplo de agregación.
El ejemplo anterior se puede interpretar como que el colegio tiene personal y estudiantes.
Entonces, ¿cuándo exactamente deberíamos optar por la agregación?
Debemos usar la agregación cuando no hay necesidad de usar una relación 'es-a' o herencia. Si podemos mantener la relación 'es-a' durante la aplicación o la vida útil de un objeto, entonces podemos implementar la herencia para la reutilización del código.
De lo contrario, es mejor utilizar la agregación para la reutilización del código. Implementemos ahora una agregación de ejemplo en Java.
El sistema de ejemplo que hemos utilizado es el siguiente:
Aquí tenemos una clase de 'Instituto'. El Instituto puede tener varios departamentos o sucursales. Cada rama a su vez tiene varios estudiantes. En este programa, contaremos el número total de estudiantes en todo el instituto. Usamos la agregación para este propósito. La clase Institute contiene el objeto Branch.
El objeto de rama tiene un objeto de estudiante. Entonces, en la clase de Instituto que usa el objeto Branch, contamos el número total de estudiantes. Para ello, utilizamos una lista de sucursales en un instituto.
El programa Java se muestra a continuación.
|_+_|Producción:
Por tanto, la agregación y la composición son dos formas de asociación que hemos discutido aquí. Cuando no necesitamos o no podemos representar la relación 'es-a' entre objetos, podemos optar por la composición si queremos una relación más fuerte entre los objetos o la agregación si queremos una relación unidireccional.
Tanto la agregación como la composición nos ayudan a reutilizar código en Java.
Diferencias entre la agregación y la composición
Tanto la Composición como la Agregación son partes de la Asociación que representa una relación 'tiene-a'. Ambas técnicas no son características de Java y no tienen una forma directa de implementación, pero se pueden implementar utilizando código Java.
La composición y la agregación nos permiten reutilizar el código. La reutilización del código reduce los errores en el código y también hace que la aplicación sea más estable.
A continuación se enumeran algunas diferencias entre agregación y composición.
Agregación | Composición |
---|---|
La agregación permite que los objetos secundarios u objetos contenidos existan de forma independiente. Por ejemplo en una relación en la que la Escuela tiene Empleados, si eliminamos la Escuela, los Empleados permanecerán y podrán funcionar por sí mismos. | En composición, el objeto contenido no puede existir independientemente. Por ejemplo un coche tiene motor. Si eliminamos Car, la clase Engine no puede funcionar por sí sola. |
La agregación es una relación 'tiene-a'. | La composición es una forma de relación 'tiene-un' pero se ve como una relación de parte de un todo. |
La agregación tiene una sola asociación uno a uno. | La composición permite otras relaciones previstas en la asociación. |
La agregación tiene una asociación débil entre objetos. | La composición tiene una fuerte asociación entre objetos. |
Composición vs. Herencia
Composición | Herencia |
---|---|
La composición representa la relación 'Has-A'. | La herencia representa la relación 'Es-A'. |
Más fácil de cambiar la implementación de contener objetos. | Cuando una implementación cambia, toda la jerarquía de herencia cambia. |
Tiene un tiempo de ejecución o dinámico. | Tiene un enlace estático o en tiempo de compilación. |
La interfaz de la clase de front-end se puede cambiar fácilmente sin afectar las clases de back-end. | Cualquier cambio en los métodos o prototipos afecta a todas las clases. |
La composición se utiliza cuando no necesitamos agregar más características o funciones a un objeto existente. | La herencia se usa cuando se van a agregar más características a las clases heredadas. |
Preguntas frecuentes
P # 1) ¿Cuál es la diferencia entre la relación 'ES - A' y 'TIENE - A'?
Responder: En la programación orientada a objetos, las relaciones IS-A representan una herencia en la que una clase secundaria 'es una especie de' una clase principal. La relación Has-a es una relación de 'parte de un todo' que está representada por la composición y la agregación. La herencia es un enlace estático, mientras que la composición es un enlace dinámico.
P # 2) ¿Qué es la agregación y la composición en Java?
Responder: En Composición, los dos objetos están estrechamente acoplados, es decir, cuando el objeto (objeto que contiene) que posee otro objeto (objeto que contiene) se destruye, el otro objeto se destruye automáticamente ya que no puede funcionar de forma independiente por sí solo.
En Agregación, el objeto que contiene y el que contiene pueden funcionar de forma independiente. Esto se debe a que, en Agregación, un objeto usa otro objeto.
P # 3) ¿Por qué usamos Composición en Java?
Responder: La composición nos permite reutilizar el código existente reduciendo así la complejidad del código y también reduce los errores en el código. Usando la composición podemos reutilizar solo lo que necesitamos del objeto y también controlar su visibilidad.
P # 4) ¿Para qué sirve la Asociación?
Responder: Asociación representa la relación 'tiene-a' en Java. La asociación en Java se usa cuando un objeto necesita usar la funcionalidad y los servicios de otro objeto. La composición y la agregación son dos formas de asociación.
P # 5) ¿Es la composición mejor que la herencia?
Responder: Depende del sistema OOP que estemos codificando. Si podemos representar los objetos con relación IS-A durante su vida útil en la aplicación, la herencia es una mejor opción. Cuando queremos reutilizar el código y no podemos representar el sistema de objetos con la relación IS-A, la composición es mejor.
Además, cuando queremos cambiar con frecuencia las clases de front-end sin perturbar las clases de back-end, entonces la composición es mejor porque en el caso de la herencia, los cambios leves afectan principalmente a toda la jerarquía de herencia.
Conclusión
En este tutorial, hemos discutido la relación HAS-A en Java. La composición y la agregación son las formas que implementan la relación 'HAS-A'. Hemos comparado ambas implementaciones.
Si bien ambos contienen objetos de otra clase, la composición es propietaria del objeto, mientras que la agregación simplemente usa el objeto. También hemos comparado la composición y la herencia en Java.
=> Consulte aquí para ver los tutoriales de formación de la A a la Z de Java.
Lectura recomendada
- Tutorial de Java SWING: contenedor, componentes y manejo de eventos
- Tutorial de JAVA para principiantes: más de 100 tutoriales prácticos en vídeo de Java
- TreeMap en Java - Tutorial con ejemplos de Java TreeMap
- Tutorial de Java Float con ejemplos de programación
- Tutorial Java String con String Buffer y String Builder
- Implementación de Java: creación y ejecución de un archivo JAR de Java
- Objeto Java Class Vs: cómo utilizar la clase y el objeto en Java
- Conceptos básicos de Java: sintaxis de Java, clase de Java y conceptos básicos de Java