Verschil tussen erfenis en containercontainer

Anonim

Erfelijkheid vs Containership

Erfelijkheid en Containerschap twee belangrijke concepten gevonden in OOP (Object Oriented Programming Example: C ++). In eenvoudige termen behandelen zowel Containership 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 Containership 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 Containership?

Containership 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. Containership wordt ook wel Compositie genoemd. In dit voorbeeld kan worden gezegd dat klasse A bestaat uit klasse B. In OOP vertegenwoordigt Containership 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).

Verschil tussen Erfenis en Containerschap

Hoewel Erfenis en Containership 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 Containership 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. Erfelijkheid vertegenwoordigt een "is-a" relatie in OOP, terwijl Containership een "has-a" relatie vertegenwoordigt.