Qu'est-ce que la composition sur l'héritage?
La composition sur l'héritage est une méthodologie de programmation utilisée dans les langages de programmation orientés objet pour aider à établir des relations plus dynamiques et modifiables entre les objets dans une application. Le format de base pour la composition sur l'héritage est l'inclusion d'une instance d'un objet à l'intérieur d'un autre objet. Ceci est nettement différent de la méthode d'hérédité orientée objet mais peut servir le même objectif dans de nombreux modèles. Les avantages de la composition sur l'héritage comprennent des frontières bien définies entre les objets composés et les objets de wrapper, la capacité de modifier la mise en œuvre d'un objet sans affecter une hiérarchie d'héritage entière, et un cadre moins restrictif pour la conception initiale du programme. Cependant, certaines des complications pourraient inclure des difficultés de sérialisation et des structures trop complexes dans de grands programmes établis.
dans l'orientation d'objetLa programmation ED, l'un des traits qui est important à établir lors de la conception est la façon dont les différents objets sont liés les uns aux autres. L'héritage est un mécanisme central de la programmation orientée objet et permet à un objet de hériter de toutes les données et méthodes de son parent, auxquels il peut ensuite ajouter, modifier ou étendre avec sa propre implémentation. Un exemple de conception basé sur l'héritage pourrait être avec un programme qui a une classe principale qui définit une voiture et modélise certains attributs génériques de toutes les voitures. La classe pour chaque marque de voiture individuelle est ensuite faite en tant que descendant de la classe principale mais définit des informations spécifiques, telles que la taille du moteur, la capacité de carburant ou d'autres informations spécifiques à cette marque particulière de voiture.
La composition est exprimée en incluant des instances d'objet dans d'autres objets. S'il y a une classe principale qui définit une voiture générique, alors au lieu de créer des sous-classes pour des marques de voitures spécifiques, la classe principale pourrait plutôt contenir des cas d'autres objets qui définissente la voiture plus spécifiquement. Cela pourrait signifier que la classe de voiture principale pourrait contenir un objet pour le type de moteur et un pour la capacité de carburant, qui serait réglé lorsque la classe est utilisée pour créer une instance d'une marque spécifique de voiture.
Avec la composition sur l'héritage, les objets qui sont contenus dans la classe principale ne sont pas directement liés à la classe principale, donnant aux développeurs la liberté de changer le fonctionnement des objets individuels. Un problème que la composition sur l'héritage peut aider à prévenir est une situation dans laquelle un arbre d'héritage peut être excessivement profond, ce qui signifie que toute modification d'une classe dans l'arbre pourrait nécessiter des changements sur la longueur de l'arbre. Toutes les langues orientées objet n'ont pas le support pour plusieurs héritages, et la composition sur l'héritage est une méthode qui peut être utilisée pour contourner cette restriction.