Diferencia entre composición y herencia

En programación, el código reutilizable es el uso de software existente para construir nuevo software utilizando los principios de reutilización. La reutilización de código se considera una función productiva fundamental en las empresas intensivas en tecnología de la información. Se promueve en los sistemas orientados a objetos mediante el establecimiento de relaciones entre clases. Hay dos formas básicas de establecer estas relaciones en la programación orientada a objetos: Herencia y Composición. Una forma de implementar la herencia es vincular clases, pero OOP proporciona un nuevo tipo de relación entre clases llamado composición. Al establecer una relación entre clases nuevas y existentes, una clase nueva puede heredar o incorporar código de una o más clases existentes.

En OOP, la herencia es la metodología por la cual un objeto hereda los atributos de uno o más objetos. Es una de las herramientas más poderosas para implementar la reutilización de código en OOP. Cuando se utiliza la herencia, se puede crear una nueva clase estableciendo una relación padre-hijo con las clases existentes. La composición de objetos es una alternativa a la herencia de clases. El uso de un objeto dentro de otro objeto se llama composición. A menudo querrá usar un objeto como un campo dentro de otra clase porque es fácil crear clases complejas usando clases escritas previamente y bien diseñadas como componentes. Esto se llama composición. Bueno, tanto la herencia como la composición brindan una funcionalidad equivalente en muchos casos, la composición de objetos es un mejor modelo de reutilización que la herencia de clases. Este artículo compara los dos enfoques.

¿Qué es la herencia?

La herencia es una de las herramientas más poderosas para implementar la reutilización de código en la programación orientada a objetos. Se refiere a la funcionalidad por la cual un objeto adquiere los atributos de uno o más objetos. La herencia en C++ significa que puede crear clases que derivan sus atributos de las clases existentes. Esto significa que especializa una clase para crear relaciones iso entre las clases que dan como resultado un fuerte acoplamiento entre la base y las clases derivadas. La implementación de la herencia promueve la reutilización del código porque se crean nuevas clases a partir de clases existentes. La herencia de clases también facilita la modificación de la implementación que se está reutilizando. Pero la herencia de clases también tiene algunas desventajas. Primero, debido a que la herencia se define en tiempo de compilación, no puede cambiar las implementaciones heredadas de las clases principales en tiempo de ejecución.

Descubre también la:  Diferencias entre DTS y AC3

¿Qué es la composición?

OOP proporciona otra relación entre clases llamada composición, también conocida como relación tiene. Si las características de un objeto necesitan ser parte de otro objeto, la relación requiere composición. Para componer una clase a partir de clases existentes, se debe declarar un objeto de cada clase como miembro de la nueva clase. En palabras simples, la composición es el uso de un objeto dentro de otro objeto. A menudo, es posible que desee utilizar un objeto como un campo dentro de otra clase. Usas un objeto dentro de una clase en composición. A diferencia de la herencia de clases, la composición de un objeto se define dinámicamente en tiempo de ejecución a través de objetos que heredan referencias a otros objetos. Además, la composición proporciona una mejor manera de usar un objeto sin afectar los detalles internos del objeto, que es donde la composición es útil.

Diferencia entre composición y herencia

Acercarse

Aunque tanto la herencia como la composición promueven la reutilización del código en un sistema orientado a objetos mediante el establecimiento de relaciones entre clases y proporcionan una funcionalidad equivalente de muchas maneras, utilizan diferentes enfoques. Con la herencia, puede crear clases que derivan sus atributos de las clases existentes, de modo que cuando usa la herencia para crear una clase, puede extender la clase existente. Por el contrario, el uso de un objeto dentro de otro objeto se denomina composición. La composición de objetos es una alternativa a la herencia de clases. Si las características de un objeto necesitan ser parte de otro objeto, la relación requiere composición.

Relación

En la herencia, especializa una clase para crear una relación «es-un» entre las clases que da como resultado un fuerte acoplamiento entre la base y las clases derivadas. Permite diseñar una jerarquía de clases y la jerarquía comienza con la clase más general y avanza hacia clases más específicas. Al implementar la herencia, las funciones miembro de una clase se convierten en propiedades de otra clase sin estar codificadas explícitamente dentro de la clase. En la composición, usa un objeto dentro de una clase y cualquier solicitud al objeto se reenvía al objeto. Los detalles internos no están expuestos entre sí en la composición, por lo que es una relación «sí-a».

Descubre también la:  Diferencia entre LAN, WAN y MAN

Implementación

La herencia de clases se define en tiempo de compilación, por lo que no puede cambiar las implementaciones heredadas de las clases principales en tiempo de ejecución. Debido a que la herencia de la subclase expone los detalles de la implementación de su padre, a menudo rompe la encapsulación. Cualquier cambio en la clase principal se reflejará en la subclase, lo que puede causar problemas cuando intente reutilizar una subclase. Por el contrario, la composición de un objeto se define dinámicamente en tiempo de ejecución a través de objetos que reciben referencias a otros objetos. Y debido a que solo se puede acceder a los objetos a través de sus interfaces, no romperá la encapsulación. Cualquier objeto puede ser reemplazado en tiempo de ejecución por otro objeto siempre que tenga el mismo tipo.

Composición frente a herencia: un

Resumen de Composición vs. Herencia

A menudo, querrá usar un objeto como un campo dentro de otra clase porque es más fácil crear clases complejas usando clases bien diseñadas que se han escrito antes. Esto es cuando usas composición. La herencia proporciona una forma de reutilizar el código mediante la ampliación de una clase con poco esfuerzo, por lo que la herencia es una herramienta valiosa para establecer relaciones entre clases. En general, es mejor usar una composición porque proporciona una forma de usar un objeto sin afectar los detalles internos del objeto para el que es útil la composición. La herencia no es problemática, pero al igual que la herencia, la composición de objetos plantea problemas de rendimiento similares a la creación y destrucción de objetos.

Wlip.es

Somos entusiastas de la tecnología, la ciencia y sus avances. Nuestra curiosidad nunca se sacia y por eso intentamos investigar y conocer cada día más cosas. Te traemos las diferencias más curiosas sobre conceptos, cosas y mucho más.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *