La différence entre l'héritage et la composition

Anonim

Héritage vs Composition

Héritage et Composition sont deux concepts importants trouvés dans OOP (Object Oriented Programming). En termes simples, la composition et l'héritage traitent de la fourniture de propriétés ou de comportements supplémentaires à une classe. 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. D'autre part, la composition est la capacité d'une classe à contenir des objets de différentes classes en tant que données de membre.

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

Comme mentionné ci-dessus, 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. L'héritage fournit essentiellement la réutilisation du code en autorisant l'extension des propriétés et le comportement d'une classe existante par une classe nouvellement définie. Si la classe A étend B, la classe B est appelée classe parent (ou classe super) et la classe A est appelée classe enfant (ou classe / 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 une fonctionnalité nouvelle ou étendue aux méthodes) le comportement hérité de la classe parente.

L'héritage représente une relation "is-a" dans 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 du monde réel, la classe Person pourrait être étendue pour créer la classe Employee. C'est ce qu'on appelle la spécialisation. Mais vous pouvez également créer la classe Employee puis la généraliser à une classe Person (par exemple, la généralisation). Dans cet exemple, l'employé aura toutes les propriétés et le comportement de la personne (c.-à-d. L'employé est également une personne) et peut contenir des fonctionnalités supplémentaires (ainsi, la personne n'est pas un employé).

Qu'est-ce que la composition?

La composition est la capacité d'une classe à contenir des objets de différentes classes en tant que données de membre. Par exemple, la classe A pourrait contenir un objet de classe B en tant que membre. Ici, toutes les méthodes publiques (ou fonctions) 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 aussi 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 accès pour exécuter toutes les méthodes publiques de la classe contenue, il n'est pas capable de modifier ou de fournir des fonctionnalités supplémentaires. Quand il s'agit d'un problème de programmation dans le monde réel, un objet de classe TextBox peut être contenu dans le formulaire de classe, et peut donc être dit qu'un formulaire contient un TextBox (ou 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 POO, ils sont assez différents dans ce qu'ils permettent au programmeur d'atteindre. L'héritage est la capacité d'une classe à hériter des propriétés et du comportement d'une classe parente en l'étendant tandis que Composition est la capacité d'une classe à contenir des objets de différentes classes en tant que données de membre. Si une classe est étendue, elle hérite de toutes 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 n'a pas la capacité de changer ou d'ajouter un comportement à la contenue. L'héritage représente une relation "is-a" dans POO, tandis que la composition représente une relation "has-a".