Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Herencia Múltiple | Visión General de la Herencia
POO en C++
course content

Contenido del Curso

POO en C++

POO en C++

1. Fundamentos de la POO en C++
2. Constructores y Destructores
3. Visión General de la Encapsulación
4. Visión General de la Herencia
5. Visión General del Polimorfismo

book
Herencia Múltiple

La herencia múltiple permite que una clase derivada herede de varias clases base. Esto significa que una sola clase derivada puede acceder a los miembros (datos y funciones) de múltiples clases base, combinando efectivamente sus atributos y comportamientos.

Herencia múltiple horizontal

En este tipo de herencia múltiple, una clase hereda propiedades y métodos de múltiples superclases al mismo nivel en la jerarquía de herencia. Considere las classes: Shape y Color, cada una con propiedades y métodos distintos. Shape define la forma de un objeto y Color define su color.

Shape.h

Shape.h

Color.h

Color.h

copy
1234567
class Shape { public: void setShape(const std::string& value) { shape = value; } std::string getShape() { return shape; } private: std::string shape; };

Ahora, creemos una subclase llamada ColoredShape que hereda propiedades y métodos de ambas clases Shape y Color.

ColoredShape.h

ColoredShape.h

copy
123456789
#include "Shape.h" #include "Color.h" class ColoredShape : public Shape, public Color { public: void describe() { std::cout << "This object is a " << getShape() << " shape and is " << getColor() << '\n'; } };

Herencia vertical

En la herencia en profundidad, una class hereda propiedades y métodos de su progenitor directo y sus ancestros, formando una cadena de herencia. Por ejemplo, considere la class Vehicle, que puede servir como base para la herencia de Car, Truck y otros. En nuestro ejemplo, utilizaremos Car para ilustrar el concepto.

Vehicle.h

Vehicle.h

Car.h

Car.h

copy
12345
class Vehicle { public: void start() { std::cout << "Vehicle started"; } void stop() { std::cout << "Vehicle stopped"; } };

Ahora, para lograr la herencia vertical, es necesario establecer una jerarquía donde una class herede de otra, y luego una clase subsiguiente herede de la primera, y así sucesivamente. Podemos crear un ElectricCar que herede todas las propiedades y funcionalidades de Car, que a su vez hereda de Vehicle, estableciendo así una estructura de herencia múltiple compleja.

ElectricCar.h

ElectricCar.h

copy
123456
#include "Car.h" class ElectricCar : public Car { public: void charge() { std::cout << "Electric car is charging"; } };

Por qué se necesita la herencia múltiple

La herencia múltiple proporciona flexibilidad y reutilización de código en situaciones donde una class necesita exhibir comportamientos o características de más de una class padre. A continuación, se presentan algunos escenarios donde la herencia múltiple es beneficiosa:

  • Roles del mundo real: un pájaro volador puede combinar características tanto de las clases Flying como Bird, representando ambas habilidades. La clase Flying también puede aplicarse a aviones u otros objetos voladores.

  • Reutilización de código: la herencia múltiple permite que una clase reutilice características de diferentes clases base sin duplicación.

  • Interfaces enfocadas: fomenta la combinación de interfaces pequeñas y específicas en lugar de utilizar una sola interfaz grande y general.

Note
Nota

Dividir un objeto complejo en otros más simples y utilizar la herencia múltiple para crear software flexible y mantenible.

question mark

¿Cuál de las siguientes afirmaciones sobre la herencia horizontal es correcta?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

course content

Contenido del Curso

POO en C++

POO en C++

1. Fundamentos de la POO en C++
2. Constructores y Destructores
3. Visión General de la Encapsulación
4. Visión General de la Herencia
5. Visión General del Polimorfismo

book
Herencia Múltiple

La herencia múltiple permite que una clase derivada herede de varias clases base. Esto significa que una sola clase derivada puede acceder a los miembros (datos y funciones) de múltiples clases base, combinando efectivamente sus atributos y comportamientos.

Herencia múltiple horizontal

En este tipo de herencia múltiple, una clase hereda propiedades y métodos de múltiples superclases al mismo nivel en la jerarquía de herencia. Considere las classes: Shape y Color, cada una con propiedades y métodos distintos. Shape define la forma de un objeto y Color define su color.

Shape.h

Shape.h

Color.h

Color.h

copy
1234567
class Shape { public: void setShape(const std::string& value) { shape = value; } std::string getShape() { return shape; } private: std::string shape; };

Ahora, creemos una subclase llamada ColoredShape que hereda propiedades y métodos de ambas clases Shape y Color.

ColoredShape.h

ColoredShape.h

copy
123456789
#include "Shape.h" #include "Color.h" class ColoredShape : public Shape, public Color { public: void describe() { std::cout << "This object is a " << getShape() << " shape and is " << getColor() << '\n'; } };

Herencia vertical

En la herencia en profundidad, una class hereda propiedades y métodos de su progenitor directo y sus ancestros, formando una cadena de herencia. Por ejemplo, considere la class Vehicle, que puede servir como base para la herencia de Car, Truck y otros. En nuestro ejemplo, utilizaremos Car para ilustrar el concepto.

Vehicle.h

Vehicle.h

Car.h

Car.h

copy
12345
class Vehicle { public: void start() { std::cout << "Vehicle started"; } void stop() { std::cout << "Vehicle stopped"; } };

Ahora, para lograr la herencia vertical, es necesario establecer una jerarquía donde una class herede de otra, y luego una clase subsiguiente herede de la primera, y así sucesivamente. Podemos crear un ElectricCar que herede todas las propiedades y funcionalidades de Car, que a su vez hereda de Vehicle, estableciendo así una estructura de herencia múltiple compleja.

ElectricCar.h

ElectricCar.h

copy
123456
#include "Car.h" class ElectricCar : public Car { public: void charge() { std::cout << "Electric car is charging"; } };

Por qué se necesita la herencia múltiple

La herencia múltiple proporciona flexibilidad y reutilización de código en situaciones donde una class necesita exhibir comportamientos o características de más de una class padre. A continuación, se presentan algunos escenarios donde la herencia múltiple es beneficiosa:

  • Roles del mundo real: un pájaro volador puede combinar características tanto de las clases Flying como Bird, representando ambas habilidades. La clase Flying también puede aplicarse a aviones u otros objetos voladores.

  • Reutilización de código: la herencia múltiple permite que una clase reutilice características de diferentes clases base sin duplicación.

  • Interfaces enfocadas: fomenta la combinación de interfaces pequeñas y específicas en lugar de utilizar una sola interfaz grande y general.

Note
Nota

Dividir un objeto complejo en otros más simples y utilizar la herencia múltiple para crear software flexible y mantenible.

question mark

¿Cuál de las siguientes afirmaciones sobre la herencia horizontal es correcta?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3
some-alt