Verschil tussen overerving en compositie

Inheritance vs Composition

Overerving en compositie zijn twee belangrijke concepten die worden gevonden in OOP (Object Oriented Programming). Eenvoudig gezegd, zowel Composition als Inheritance hebben te maken met het bieden van extra eigenschappen of gedrag aan een klasse. Overerving is het vermogen van een klasse om eigenschappen en gedrag van een bovenliggende klasse over te nemen door deze uit te breiden. Aan de andere kant is Compositie het vermogen van een klasse om objecten van verschillende klassen als lidgegevens te bevatten.

Wat is overerving?

Zoals hierboven vermeld, is overerving het vermogen van een klasse om eigenschappen en gedrag van een bovenliggende klasse over te nemen door deze uit te breiden. Overerving biedt in essentie hergebruik van code door uitbreiding van eigenschappen en gedrag van een bestaande klasse door een nieuw gedefinieerde klasse. Als klasse A B verlengt, wordt klasse B de bovenliggende klasse (of superklasse) genoemd en wordt klasse A de onderliggende klasse (of afgeleide klasse / subklasse) genoemd. In dit voorbeeldscenario ervaart klasse A alle openbare en beschermde kenmerken en methoden van de superklasse (B). De subklasse kan optioneel het gedrag van de bovenliggende klasse overschrijven (nieuwe of uitgebreide functionaliteit aan methoden verschaffen).

Overname vertegenwoordigt een "is-een" -relatie in OOP. Dit betekent in wezen dat A ook een B is. Met andere woorden, B kan de klasse zijn met een algemene beschrijving van een bepaalde werkelijke entiteit, maar A geeft een bepaalde specialisatie aan. In een probleem met de echte wereldprogrammering kan de Person-klasse worden uitgebreid om de klasse Employee te maken. Dit wordt specialisatie genoemd. Maar u kunt ook eerst de klasse Employee maken en deze vervolgens ook generaliseren naar een Person-class (dat wil zeggen generalisatie). In dit voorbeeld heeft de werknemer alle eigenschappen en het gedrag van de persoon (dat wil zeggen, de werknemer is ook een persoon) en kan deze extra functionaliteit bevatten (dus ook de persoon is geen werknemer).

Wat is samenstelling?

Compositie is het vermogen van een klasse om objecten van verschillende klassen als lidgegevens te bevatten. Klasse A kan bijvoorbeeld een object van klasse B als lid bevatten. Hier kunnen alle publieke methoden (of functies) gedefinieerd in B worden uitgevoerd binnen de klasse A. Klasse A wordt de container, terwijl klasse B de ingesloten klasse wordt. Compositie wordt ook wel Containership genoemd. In dit voorbeeld kan worden gezegd dat klasse A is samengesteld uit klasse B. In OOP vertegenwoordigt Composition een "has-a" -relatie. Het is belangrijk op te merken dat, hoewel de container toegang heeft om alle openbare methoden van de ingesloten klasse uit te voeren, deze niet in staat is om aanvullende functionaliteit aan te brengen of aan te bieden. Als het gaat om een ​​probleem met de echte wereldprogrammering, kan een object van klasse TextBox zich in het klassenformulier bevinden, en dus kan worden gezegd dat een formulier een TextBox bevat (of als alternatief een formulier is samengesteld uit een TextBox).

Wat is het verschil tussen Inheritance en Composition?

Hoewel Inheritance en Composition twee OOP-concepten zijn, zijn ze behoorlijk verschillend in wat ze de programmeur toestaan ​​te bereiken. Overerving is het vermogen van een klasse om eigenschappen en gedrag van een bovenliggende klasse over te nemen door deze uit te breiden, terwijl Compositie het vermogen is van een klasse om objecten van verschillende klassen als lidgegevens te bevatten. Als een klasse wordt uitgebreid, neemt deze alle openbare en beschermde eigenschappen / gedrag over en dat gedrag kan door de subklasse worden overschreven. Maar als een klasse zich in een andere klasse bevindt, krijgt de container niet het vermogen om gedrag te veranderen of toe te voegen aan de inhoud. Overerving vertegenwoordigt een "is-een" -relatie in OOP, terwijl Compositie een "has-a" -relatie vertegenwoordigt.