Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Héritage Multiple | Aperçu de l'Héritage
C++ Oop
course content

Contenu du cours

C++ Oop

C++ Oop

1. Fondamentaux de la POO en C++
2. Constructeurs et Destructeurs
3. Aperçu de l'Encapsulation
4. Aperçu de l'Héritage
5. Aperçu du Polymorphisme

book
Héritage Multiple

L'héritage multiple permet à une classe dérivée d'hériter de plusieurs classes de base. Cela signifie qu'une seule classe dérivée peut avoir accès aux membres (données et fonctions) de plusieurs classes de base, combinant ainsi efficacement leurs attributs et comportements. Pour mieux comprendre ce concept, commençons par un exemple simple.

Héritage Multiple Horizontal

Dans ce type d'héritage multiple, une classe hérite des propriétés et méthodes de plusieurs superclasses au même niveau dans la hiérarchie d'héritage. Considérons les classes : Shape et Color, chacune avec des propriétés et méthodes distinctes. La classe Shape définit la forme d'un objet, et la classe Color définit sa couleur.

h

Shape

h

Color

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

Maintenant, créons une sous-classe appelée ColoredShape qui hérite des propriétés et méthodes des deux classes Shape et Color.

h

ColoredShape

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 " << setColor() << '\n'; } };

Héritage Vertical

Dans l'héritage en profondeur, une classe hérite des propriétés et méthodes de son parent direct et de ses ancêtres, formant une chaîne d'héritage. Par exemple, considérez la classe Véhicule, qui peut servir de base pour l'héritage de voiture, camion, et autres. Dans notre exemple, nous utiliserons la Voiture pour illustrer le concept.

h

Vehicle

h

Car

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

Maintenant, pour réaliser l'héritage vertical, vous devez mettre en place une hiérarchie où une classe hérite d'une autre, puis une classe suivante hérite de la première, et ainsi de suite. Nous pouvons créer une ElectricCar qui hérite de toutes les propriétés et fonctionnalités de la Car, qui elle-même hérite du Vehicle, établissant une structure complexe d'héritage multiple.

h

ElectricCar

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

Pourquoi l'héritage multiple est nécessaire

L'héritage multiple offre flexibilité et réutilisation du code dans des situations où une classe doit présenter des comportements ou des caractéristiques de plus d'une classe parente. Voici quelques scénarios où l'héritage multiple est bénéfique :

  1. Modélisation des relations du monde réel : les objets ont souvent plusieurs aspects ou rôles. Par exemple, une classe FlyingBird pourrait hériter à la fois de Flying et de Bird, capturant à la fois les caractéristiques d'un oiseau et la capacité de voler. Et vous pouvez toujours utiliser la classe Flying pour d'autres objets qui pourraient voler, comme un avion.

  2. Réutilisation du code : L'héritage multiple permet la réutilisation des classes existantes sans duplication de code. En héritant de plusieurs classes de base, une classe dérivée peut hériter des fonctionnalités de chaque classe de base indépendamment.

  3. Séparation des interfaces : Il permet la création d'interfaces adaptées à des besoins spécifiques. Au lieu de créer une interface monolithique, l'héritage multiple permet la création d'interfaces plus petites et plus ciblées qui peuvent être combinées selon les besoins.

Remarque

Divisez un objet complexe en objets plus simples et utilisez l'héritage multiple pour créer un logiciel flexible et maintenable

Laquelle des affirmations suivantes concernant l'héritage horizontal est correcte ?

Laquelle des affirmations suivantes concernant l'héritage horizontal est correcte ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 3
We're sorry to hear that something went wrong. What happened?
some-alt