Wat is compositie over erfenis?
Compositie boven overerving is een programmeermethode die wordt gebruikt in objectgeoriënteerde programmeertalen om meer dynamische en veranderlijke relaties tussen objecten in een toepassing tot stand te brengen. Het basisformaat voor compositie boven overerving is het opnemen van een instantie van een object in een ander object. Dit verschilt duidelijk van de objectgeoriënteerde methode van overerving, maar kan in veel modellen hetzelfde doel dienen. De voordelen van compositie ten opzichte van overerving omvatten goed gedefinieerde grenzen tussen de samengestelde objecten en de wrapper-objecten, de mogelijkheid om de implementatie van een object te wijzigen zonder een hele overervingshiërarchie te beïnvloeden, en een minder beperkend kader voor het initiële programmaontwerp. Sommige van de complicaties kunnen echter problemen zijn met serialisatie en te complexe structuren in grote, gevestigde programma's.
In objectgeoriënteerd programmeren is een van de eigenschappen die belangrijk is om vast te stellen tijdens het ontwerp, hoe de verschillende objecten zich tot elkaar verhouden. Overerving is een centraal mechanisme in objectgeoriënteerd programmeren en stelt een object in staat om alle gegevens en methoden van het bovenliggende object te erven, die het vervolgens kan toevoegen, wijzigen of uitbreiden met zijn eigen implementatie. Een voorbeeld van een ontwerp op basis van overerving zou kunnen zijn met een programma dat één hoofdklasse heeft die een auto definieert en enkele generieke kenmerken van alle auto's modelleert. De klasse voor elk individueel automerk wordt dan gemaakt als een afstammeling van de hoofdklasse, maar definieert specifieke informatie, zoals de motorgrootte, brandstofcapaciteit of andere informatie die specifiek is voor dat specifieke automerk.
Samenstelling wordt uitgedrukt door objectinstanties in andere objecten op te nemen. Als er een hoofdklasse is die een generieke auto definieert, kan de hoofdklasse in plaats van subklassen voor specifieke automerken te maken, in plaats daarvan instanties bevatten van andere objecten die de auto specifieker definiëren. Dit kan betekenen dat de hoofdautoklasse een object voor het motortype en een voor de brandstofcapaciteit kan bevatten, die zou worden ingesteld wanneer de klasse wordt gebruikt om een exemplaar van een specifiek automerk te maken.
Met compositie boven overerving zijn de objecten in de hoofdklasse niet direct gerelateerd aan de hoofdklasse, waardoor ontwikkelaars de vrijheid hebben om te veranderen hoe individuele objecten werken. Een probleem dat samenstelling over erfelijkheid kan helpen voorkomen, is een situatie waarin een erfboom buitengewoon diep kan zijn, wat betekent dat voor elke wijziging van een klasse in de boom wijzigingen langs de lengte van de boom nodig kunnen zijn. Niet alle objectgeoriënteerde talen bieden ondersteuning voor meerdere overervingen en compositie boven overerving is een methode die kan worden gebruikt om deze beperking te omzeilen.