Contenu du cours
C++ Oop
C++ Oop
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.
Shape
Color
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.
ColoredShape
#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.
Vehicle
Car
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.
ElectricCar
#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 :
-
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.
-
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.
-
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
Merci pour vos commentaires !