Verschil tussen overerving en samenstelling

Verschil tussen overerving en samenstelling
Verschil tussen overerving en samenstelling

Video: Verschil tussen overerving en samenstelling

Video: Verschil tussen overerving en samenstelling
Video: What's the difference between Authentication vs Authorization? 2024, November
Anonim

Overerving versus compositie

Overerving en compositie zijn twee belangrijke concepten die te vinden zijn in OOP (Object Oriented Programming). In eenvoudige bewoordingen hebben zowel Composition als Inheritance te maken met het verstrekken van aanvullende eigenschappen of gedrag aan een klasse. Overerving is het vermogen van een klasse om eigenschappen en gedrag van een bovenliggende klasse te erven 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 de mogelijkheid voor een klasse om eigenschappen en gedrag van een bovenliggende klasse te erven door deze uit te breiden. Overerving biedt in wezen codehergebruik door eigenschappen en gedrag van een bestaande klasse uit te breiden met een nieuw gedefinieerde klasse. Als klasse A B uitbreidt, dan wordt klasse B de bovenliggende klasse (of superklasse) genoemd en wordt klasse A de onderliggende klasse (of afgeleide klasse/subklasse) genoemd. In dit voorbeeldscenario neemt klasse A alle openbare en beschermde kenmerken en methoden van de superklasse (B) over. De subklasse kan optioneel het gedrag overschrijven dat is geërfd van de bovenliggende klasse.

Overerving 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 entiteit in de echte wereld, maar A specificeert een bepaalde specialisatie. In een echt programmeerprobleem zou de klasse Persoon kunnen worden uitgebreid om de klasse Werknemer te creëren. Dit wordt specialisatie genoemd. Maar u kunt ook eerst de klasse Employee maken en deze vervolgens generaliseren naar een klasse Person (d.w.z.e. generalisatie). In dit voorbeeld heeft de werknemer alle eigenschappen en het gedrag van de persoon (d.w.z. de werknemer is ook een persoon) en kan ook een aantal extra functionaliteit bevatten (de persoon is dus geen werknemer).

Wat is compositie?

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 openbare methoden (of functies) gedefinieerd in B worden uitgevoerd binnen de klasse A. Klasse A wordt de container, terwijl klasse B de ingesloten klasse wordt. Samenstelling wordt ook wel containerschip genoemd. In dit voorbeeld kan worden gezegd dat klasse A is samengesteld uit klasse B. In OOP vertegenwoordigt compositie 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 te wijzigen of te bieden. Als het gaat om een programmeerprobleem in de echte wereld, kan een object van de klasse TextBox zich in de klasse Form bevinden, en dus kan worden gezegd dat een Form een TextBox bevat (of als alternatief bestaat een Form uit een TextBox).

Wat is het verschil tussen overerving en compositie?

Hoewel Overerving en Samenstelling twee OOP-concepten zijn, verschillen ze nogal in wat ze de programmeur laten bereiken. Overerving is het vermogen van een klasse om eigenschappen en gedrag van een bovenliggende klasse te erven door deze uit te breiden, terwijl Composition het vermogen van een klasse is om objecten van verschillende klassen als lidgegevens te bevatten. Als een klasse wordt uitgebreid, erft deze alle openbare en beschermde eigenschappen/gedrag en dat gedrag kan worden overschreven door de subklasse. Maar als een klasse zich in een andere bevindt, krijgt de container niet de mogelijkheid om gedrag te veranderen of toe te voegen aan de ingesloten klasse. Overerving vertegenwoordigt een 'is-een'-relatie in OOP, terwijl Composition een 'heeft-een'-relatie vertegenwoordigt.

Aanbevolen: