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
Programmation Orientée Objet en C++
course content

Contenu du cours

Programmation Orientée Objet en C++

Programmation Orientée Objet en C++

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 accéder aux membres (données et fonctions) de plusieurs classes de base, combinant ainsi efficacement leurs attributs et comportements.

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 situées au même niveau dans la hiérarchie d'héritage. Considérons les classes : Shape et Color, chacune possédant des propriétés et méthodes distinctes. La classe Shape définit la forme d'un objet, tandis que la classe Color définit sa couleur.

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; };

Créons maintenant une sous-classe appelée ColoredShape qui hérite des propriétés et méthodes des deux classes Shape et 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'; } };

Héritage vertical

Dans l'héritage en profondeur, une class hérite des propriétés et méthodes de son parent direct et de ses ancêtres, formant ainsi une chaîne d'héritage. Par exemple, considérez la class Vehicle, qui peut servir de base pour l'héritage de Car, Truck et d'autres. Dans notre exemple, nous utiliserons la Car pour illustrer ce concept.

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"; } };

Pour réaliser une héritage verticale, il est nécessaire de mettre en place une hiérarchie où une class hérite d'une autre, puis une classe suivante hérite de la première, et ainsi de suite. Il est possible de créer une ElectricCar qui hérite de toutes les propriétés et fonctionnalités de la Car, laquelle hérite elle-même de la Vehicle, établissant ainsi une structure de héritage multiple complexe.

ElectricCar.h

ElectricCar.h

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

Pourquoi l’héritage multiple est-il nécessaire

L’héritage multiple offre flexibilité et réutilisation du code dans les situations où une class doit présenter des comportements ou des caractéristiques provenant de plusieurs class parentes. Voici quelques scénarios où l’héritage multiple est avantageux :

  • Rôles du monde réel : un oiseau volant peut combiner les caractéristiques des classes Flying et Bird, représentant ainsi les deux capacités. La classe Flying peut également s’appliquer aux avions ou à d’autres objets volants.

  • Réutilisation du code : l’héritage multiple permet à une classe de réutiliser des fonctionnalités issues de différentes classes de base sans duplication.

  • Interfaces ciblées : favorise la combinaison de petites interfaces spécifiques au lieu d’en utiliser une seule, large et générale.

Note
Remarque

Diviser un objet complexe en objets plus simples et utiliser l’héritage multiple pour créer des logiciels flexibles et maintenables.

question mark

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

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 3

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

course content

Contenu du cours

Programmation Orientée Objet en C++

Programmation Orientée Objet en C++

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 accéder aux membres (données et fonctions) de plusieurs classes de base, combinant ainsi efficacement leurs attributs et comportements.

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 situées au même niveau dans la hiérarchie d'héritage. Considérons les classes : Shape et Color, chacune possédant des propriétés et méthodes distinctes. La classe Shape définit la forme d'un objet, tandis que la classe Color définit sa couleur.

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; };

Créons maintenant une sous-classe appelée ColoredShape qui hérite des propriétés et méthodes des deux classes Shape et 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'; } };

Héritage vertical

Dans l'héritage en profondeur, une class hérite des propriétés et méthodes de son parent direct et de ses ancêtres, formant ainsi une chaîne d'héritage. Par exemple, considérez la class Vehicle, qui peut servir de base pour l'héritage de Car, Truck et d'autres. Dans notre exemple, nous utiliserons la Car pour illustrer ce concept.

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"; } };

Pour réaliser une héritage verticale, il est nécessaire de mettre en place une hiérarchie où une class hérite d'une autre, puis une classe suivante hérite de la première, et ainsi de suite. Il est possible de créer une ElectricCar qui hérite de toutes les propriétés et fonctionnalités de la Car, laquelle hérite elle-même de la Vehicle, établissant ainsi une structure de héritage multiple complexe.

ElectricCar.h

ElectricCar.h

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

Pourquoi l’héritage multiple est-il nécessaire

L’héritage multiple offre flexibilité et réutilisation du code dans les situations où une class doit présenter des comportements ou des caractéristiques provenant de plusieurs class parentes. Voici quelques scénarios où l’héritage multiple est avantageux :

  • Rôles du monde réel : un oiseau volant peut combiner les caractéristiques des classes Flying et Bird, représentant ainsi les deux capacités. La classe Flying peut également s’appliquer aux avions ou à d’autres objets volants.

  • Réutilisation du code : l’héritage multiple permet à une classe de réutiliser des fonctionnalités issues de différentes classes de base sans duplication.

  • Interfaces ciblées : favorise la combinaison de petites interfaces spécifiques au lieu d’en utiliser une seule, large et générale.

Note
Remarque

Diviser un objet complexe en objets plus simples et utiliser l’héritage multiple pour créer des logiciels flexibles et maintenables.

question mark

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

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 3
some-alt