Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Segmentation et Agrégation | Aperçu de l'Encapsulation
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
Segmentation et Agrégation

Lorsque vous créez un logiciel qui est maintenable et flexible, il y a beaucoup de choses à considérer dans le processus, surtout en programmation orientée objet. La composition et l'agrégation sont des concepts fondamentaux qui permettent la création de systèmes complexes à partir de composants plus simples et font partie du paradigme de l'encapsulation.

Composition

La composition est une technique de conception où une classe contient des objets d'autres classes en tant que variables membres. Ces membres sont des composants vitaux de la classe contenant et ont une relation de propriété forte. Lorsque l'objet contenant est détruit, ses parties composées le sont également. Par exemple :

h

Car

h

Engine

copy
123456789101112
#include "Engine.h" class Car { public: void Start() { engine.Start(); // Start the engine std::cout << "Car started" << std::endl; } private: Engine engine; // Engine object composition };

La classe Car compose un objet Engine. Lorsqu'un objet Car est créé, il crée automatiquement une instance de Engine dans le cadre de sa composition.

Agrégation

L'agrégation est une autre forme de composition d'objet où une classe contient des objets d'autres classes, mais les instances contenues ont une relation plus faible par rapport à la composition. Dans l'agrégation, les classes membres contenues peuvent exister indépendamment et peuvent être partagées entre plusieurs classes.

h

Car

h

Engine

copy
123456789101112131415
#include "Engine.h" class Car { public: Car(Engine* engine) : engine(engine) {} void Start() { engine->Start(); // Start the engine std::cout << "Car started" << std::endl; } private: Engine* engine; // Engine object aggregation };

Dans cet exemple, la classe Car agrège un objet Engine en utilisant un pointeur. La classe Car ne possède pas l'objet Engine; elle ne fait que le référencer. Cela permet à l'instance Engine d'exister indépendamment de l'objet Car et d'être partagée entre plusieurs instances si nécessaire.

Choisir entre Composition et Agrégation

Lors de la conception de systèmes logiciels, il est essentiel de bien réfléchir à l'utilisation de la composition ou de l'agrégation en fonction des relations entre les classes et les objets.

Composition
Agrégation
La classe contenant doit prendre possession des objets contenus
Oui
Non
Les objets contenus sont des parties intégrantes de la classe contenant
Oui
Non
La classe contenant ne fait que référencer les objets contenus
Non
Oui
Les objets contenus peuvent exister indépendamment ou être partagés entre plusieurs instances
Non
Oui

Dans le contexte des classes Car et Engine, utiliser la composition serait plus approprié. Chaque voiture a généralement son propre moteur, et le moteur est une partie intégrante de la voiture elle-même. De plus, cela empêche le Engine d'être partagé ou réutilisé entre plusieurs objets voiture, ce qui est également logique.

Lequel des éléments suivants est un exemple d'agrégation ?

Lequel des éléments suivants est un exemple d'agrégation ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

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