Verschil tussen erfenis en samenstelling

Anonim

Erfenis versus Compositie

Erfelijkheid en Samenstelling twee belangrijke concepten gevonden in OOP (Object Oriented Programming). In eenvoudige termen behandelen zowel compositie als erfelijkheid extra eigenschappen of gedrag aan een klas. Erfelijkheid is het vermogen voor een klas om eigenschappen en gedrag van een ouderklasse te erven door het uit te breiden. Aan de andere kant is compositie het vermogen van een klas om objecten van verschillende klassen als lidgegevens te bevatten.

Wat is erfelijkheid?

Zoals hierboven vermeld, is erfelijkheid de mogelijkheid voor een klas om eigenschappen en gedrag van een ouderklasse te erven door het uit te breiden. Erfelijkheid biedt in wezen code hergebruik door de uitbreiding van eigenschappen en gedrag van een bestaande klasse door een nieuw gedefinieerde klasse toe te staan. Als klasse A B uitbreidt, dan wordt klasse B de ouderklasse genoemd (of superklasse) en klasse A heet de kinderklasse (of afgeleide klas / subklasse). In dit voorbeeld scenario zullen klasse A alle openbare en beschermde attributen en methoden van de superklasse (B) erven. De subklasse kan optioneel overschrijven (nieuwe of uitgebreide functionaliteit geven aan methoden) het gedrag dat in de ouderklasse is geërfd.

Erfenis vertegenwoordigt een "is-a" relatie in OOP. Dit betekent in wezen dat A ook een B is. Met andere woorden, B kan de klas zijn met een algemene beschrijving van een bepaalde echte wereldentiteit maar A specificeert een bepaalde specialisatie. In een echte wereldprogrammeringsprobleem kan de Person class worden uitgebreid om de Employee class te creëren. Dit heet specialisatie. Maar je zou ook eerst de Employee class kunnen creëren en vervolgens ook in een Person class kunnen generaliseren (i. E. Generalization). In dit voorbeeld zal de Werknemer alle eigenschappen en gedrag van de Persoon hebben (bv. Werknemer is ook een Persoon) en kan ook een aantal extra functionaliteit bevatten (dus Persoon is ook geen Werknemer).

Wat is compositie?

Samenstelling is het vermogen van een klas om objecten van verschillende klassen als lidgegevens te bevatten. Bijvoorbeeld, klasse A kan een object van klasse B bevatten als een lid. Hier kunnen alle openbare methoden (of functies) gedefinieerd in B worden uitgevoerd in de klasse A. Klasse A wordt de container, terwijl klasse B de ingeslote klasse wordt. Samenstelling wordt ook wel Containership genoemd. In dit voorbeeld kan men zeggen dat klasse A bestaat uit klasse B. In OOP vertegenwoordigt Compositie een "has-a" relatie. Het is belangrijk om op te merken dat, hoewel de container toegang heeft tot alle publieke methoden van de ingesloten klas, het niet kan wijzigen of aanvullende functionaliteit verschaffen. Als het gaat om een ​​echte wereldprogrammeringsprobleem, kan een object van de klasse TextBox zich in de formulier Form bevinden, en dus kan worden gezegd dat een formulier een TextBox bevat (of een formulier bestaat uit een TextBox).

Wat is het verschil tussen erfelijkheid en samenstelling?

Hoewel Erfenis en Samenstelling twee OOP-concepten zijn, zijn ze heel anders in wat ze de programmeur toestaan ​​te bereiken. Erfelijkheid is het vermogen voor een klas om eigenschappen en gedrag van een ouderklasse te erven door het uit te breiden, terwijl compositie het vermogen van een klas bevat om objecten van verschillende klassen als lidgegevens te bevatten. Als een klas wordt verlengd, wordt het overgenomen van alle publieke en beschermde eigenschappen / gedrag en deze gedragingen kunnen door de subklasse worden overschreden. Maar als een klas in een ander voorkomt, krijgt de container niet het vermogen om gedrag te veranderen of toe te voegen aan de inhoud. Erfenis vertegenwoordigt een 'is-a' relatie in OOP, terwijl de samenstelling een 'has-a' relatie vertegenwoordigt.