Différence entre l'héritage et la composition

Héritage vs Composition

L'héritage et la composition sont deux concepts importants de la programmation orientée objet (OOP). En termes simples, Composition et Héritage consistent à fournir des propriétés ou un comportement supplémentaires à une classe. L'héritage est la capacité pour une classe d'hériter des propriétés et du comportement d'une classe parent en l'étendant. D'autre part, Composition est la capacité d'une classe à contenir des objets de différentes classes en tant que données membres..

Qu'est-ce que l'héritage??

Comme mentionné ci-dessus, l'héritage est la capacité pour une classe d'hériter des propriétés et du comportement d'une classe parente en l'étendant. L'héritage permet essentiellement de réutiliser le code en permettant l'extension des propriétés et du comportement d'une classe existante par une classe nouvellement définie. Si la classe A s'étend sur B, la classe B est appelée la classe parente (ou la super classe) et la classe A, la classe enfant (ou la classe / sous-classe dérivée). Dans cet exemple de scénario, la classe A héritera de tous les attributs et méthodes publics et protégés de la super classe (B). La sous-classe peut éventuellement remplacer (fournir des fonctionnalités nouvelles ou étendues aux méthodes) le comportement hérité de la classe parente.

L'héritage représente une relation «est-une» en POO. Cela signifie essentiellement que A est aussi un B. En d'autres termes, B peut être la classe avec une description générale d'une certaine entité du monde réel, mais A spécifie une certaine spécialisation. Dans un problème de programmation réel, la classe Person pourrait être étendue pour créer la classe Employee. Ceci s'appelle la spécialisation. Mais vous pouvez aussi d'abord créer la classe Employee puis la généraliser à une classe Person (c'est-à-dire une généralisation). Dans cet exemple, l'employé aura toutes les propriétés et le comportement de la personne (c'est-à-dire que l'employé est également une personne) et peut contenir certaines fonctionnalités supplémentaires.

Quelle est composition?

La composition est la capacité d'une classe à contenir des objets de différentes classes en tant que données membres. Par exemple, la classe A pourrait contenir un objet de la classe B en tant que membre. Ici, toutes les méthodes (ou fonctions) publiques définies dans B peuvent être exécutées dans la classe A. La classe A devient le conteneur, tandis que la classe B devient la classe contenue. La composition est également appelée conteneur. Dans cet exemple, on peut dire que la classe A est composée de la classe B. Dans OOP, Composition représente une relation «has-a». Il est important de noter que, même si le conteneur a le droit d'exécuter toutes les méthodes publiques de la classe contenue, il n'est pas en mesure de modifier ou de fournir des fonctionnalités supplémentaires. Lorsqu'il s'agit d'un problème de programmation dans le monde réel, un objet de la classe TextBox peut être contenu dans la classe Form et peut donc être considéré comme un formulaire contenant un TextBox (ou bien un formulaire est composé d'un TextBox).

Quelle est la différence entre l'héritage et la composition?

Bien que l'héritage et la composition soient deux concepts de programmation orientée objet, ils permettent au programmeur d'obtenir des résultats très différents. L'héritage est la capacité d'une classe à hériter des propriétés et du comportement d'une classe parent en l'étendant, tandis que Composition est la capacité d'une classe à contenir des objets de différentes classes en tant que données membres. Si une classe est étendue, elle hérite de tous les propriétés / comportements publics et protégés, et ces comportements peuvent être remplacés par la sous-classe. Mais si une classe est contenue dans une autre, le conteneur ne peut modifier ou ajouter un comportement à la classe contenue. L'héritage représente une relation "est-a" dans la POO, tandis que la composition représente une relation "a-a".