Junior — Middle
Quelle est la différence entre les relations d'agrégation et de composition en programmation orientée objet?
sobes.tech IA
Réponse de l'IA
L'agrégation et la composition sont deux types de relations entre objets en programmation orientée objet (POO), qui décrivent comment les objets sont liés entre eux.
-
Agrégation : c'est une relation de "a un" (has-a), où un objet contient un autre, mais le cycle de vie de l'objet contenu ne dépend pas du conteneur. L'objet contenu peut exister indépendamment.
-
Composition : une forme plus forte d'agrégation, où l'objet contenu appartient entièrement au conteneur et n'existe pas séparément. Si le conteneur est détruit, l'objet contenu l'est aussi.
Exemple :
class Engine {}
// Agrégation : une voiture possède un moteur, mais le moteur peut exister séparément
class Car {
var engine: Engine?
}
// Composition : une maison est composée de pièces, qui n'existent pas sans la maison
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
En composition, les objets sont étroitement liés et gérés ensemble, tandis qu'en agrégation, la relation est plus faible.