La composition est une approche plus flexible et moins liée de la conception orientée objet. Elle vous permet de créer des objets complexes en combinant des objets plus simples, sans le couplage serré de l’héritage. Cela rend le code plus modulaire et plus facile à maintenir.
Quand l’utiliser ?
La composition est appropriée lorsque vous pouvez dire d’une relation qu’elle « possède un » / « est composé de » entre deux classes. Par exemple, une classe voiture pourrait avoir un objet moteur comme propriété.
Dans cet exemple, la classe Ordinateur utilise la composition pour inclure des instances de Processeur, CarteMere, DisqueDur et MemoireRAM. Chaque composant peut être modifié ou remplacé sans affecter la structure globale de la classe Ordinateur, ce qui montre la flexibilité de la composition par rapport à l’héritage.
Avantages de la composition
La composition comporte un certain nombre d’avantages sur l’héritage, notamment :
Plus de flexibilité
La composition vous permet de créer des objets complexes en combinant des objets plus simples, sans le couplage serré de l’héritage. Cela rend le code plus modulaire et plus facile à maintenir.
Ce code montre comment on peut facilement modifier ou ajouter des composants à l’instance de la classe Ordinateur sans redéfinir ou modifier les autres parties de la classe. Cela démontre la flexibilité offerte par la composition, où des changements peuvent être effectuées de manière modulaire.
Moins de duplication de code
La composition peut aider à réduire la duplication de code en vous permettant de réutiliser les mêmes objets de différentes manières.
Les mêmes classes de composants (Processeur, DisqueDur, MemoireRAM) sont utilisées pour créer un autre type d’objet complexe, Serveur. Cette approche évite de redéfinir les mêmes propriétés et méthodes dans différentes classes, réduisant ainsi la duplication du code.
Plus facile à tester
La composition peut rendre le code plus facile à tester car elle vous permet d’isoler des objets individuels et de les tester indépendamment.
Cet exemple montre comment tester individuellement la classe Processeur sans dépendre d’autres classes ou du contexte plus large de la classe Ordinateur. Chaque composant peut être testé de manière isolée, ce qui facilite grandement le débogage.
Conclusion
L’héritage et la composition sont deux outils puissants pour la conception orientée objet. Cependant, la composition est généralement considérée comme une approche plus souple et faiblement couplée, ce qui en fait un bon choix pour la plupart des situations.