Diferència entre herència i composició

Diferència entre herència i composició
Diferència entre herència i composició

Vídeo: Diferència entre herència i composició

Vídeo: Diferència entre herència i composició
Vídeo: Webinar Retos de la nueva PAC 2023/27 2024, De novembre
Anonim

Herència vs composició

Herència i Composició són dos conceptes importants que es troben a la POO (Programació Orientada a Objectes). En termes senzills, tant Composició com Herència s'ocupen de proporcionar propietats o comportament addicionals a una classe. L'herència és la capacitat d'una classe d'heretar propietats i comportament d'una classe pare ampliant-la. D' altra banda, la composició és la capacitat d'una classe de contenir objectes de diferents classes com a dades dels membres.

Què és l'herència?

Com s'ha esmentat anteriorment, l'herència és la capacitat d'una classe d'heretar propietats i comportament d'una classe pare ampliant-la. L'herència proporciona essencialment la reutilització del codi permetent estendre les propietats i el comportament d'una classe existent per una classe recentment definida. Si la classe A s'estén a B, aleshores la classe B s'anomena classe pare (o superclasse) i la classe A s'anomena classe fill (o classe/subclasse derivada). En aquest escenari d'exemple, la classe A heretarà tots els atributs i mètodes públics i protegits de la superclasse (B). La subclasse pot substituir opcionalment (proporcionar una funcionalitat nova o ampliada als mètodes) el comportament heretat de la classe pare.

L'herència representa una relació "és-a" en POO. Això significa essencialment que A també és una B. En altres paraules, B pot ser la classe amb una descripció general d'una determinada entitat del món real, però A especifica una certa especialització. En un problema de programació del món real, la classe Persona es podria ampliar per crear la classe Employee. Això s'anomena especialització. Però també podeu crear primer la classe Empleat i després generalitzar-la també a una classe Persona (p.e. generalització). En aquest exemple, l'empleat tindrà totes les propietats i el comportament de la persona (és a dir, l'empleat també és una persona) i també pot contenir alguna funcionalitat addicional (per tant, la persona no és un empleat).

Què és la composició?

La composició és la capacitat d'una classe per contenir objectes de diferents classes com a dades dels membres. Per exemple, la classe A podria contenir un objecte de la classe B com a membre. Aquí, tots els mètodes públics (o funcions) definits a B es poden executar dins de la classe A. La classe A es converteix en el contenidor, mentre que la classe B es converteix en la classe continguda. La composició també es coneix com a contenidor. En aquest exemple, es pot dir que la classe A està composta per la classe B. En POO, Composició representa una relació "té-a". És important tenir en compte que, tot i que el contenidor té accés per executar tots els mètodes públics de la classe continguda, no és capaç d' alterar o proporcionar funcionalitats addicionals. Quan es tracta d'un problema de programació del món real, un objecte de la classe TextBox pot estar contingut a la classe Form, i per tant es pot dir que un Formulari conté un TextBox (o alternativament, un Formulari està format per un TextBox).

Quina diferència hi ha entre l'herència i la composició?

Tot i que l'herència i la composició són dos conceptes de POO, són força diferents pel que fa al que permeten aconseguir al programador. L'herència és la capacitat d'una classe d'heretar propietats i comportament d'una classe pare estenent-la, mentre que la composició és la capacitat d'una classe de contenir objectes de diferents classes com a dades dels membres. Si una classe s'estén, hereta totes les propietats/comportaments públics i protegits i aquests comportaments poden ser anul·lats per la subclasse. Però si una classe està continguda en una altra, el contenidor no té la capacitat de canviar o afegir comportament al contingut. L'herència representa una relació "és-a" en POO, mentre que Composició representa una relació "té-a".

Recomanat: