Herència vs. contenidors
Herència i Contenidor són dos conceptes importants que es troben a la POO (Exemple de programació orientada a objectes: C++). En termes senzills, tant Contenidor 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, Containership és la capacitat d'una classe per 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 el contenidorship?
Containership é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. El contenidor també s'anomena composició. En aquest exemple, es pot dir que la classe A està composta per la classe B. En POO, Containership 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).
Diferència entre herència i contenidor
Tot i que l'herència i el contenidor 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 Containership é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 Containership representa una relació "té-a".