Skip to main content

Hvad er sammensætning over arv?

Sammensætning over arv er en programmeringsmetodik, der bruges i objektorienterede programmeringssprog til at hjælpe med at etablere mere dynamiske og skiftbare forhold mellem objekter i en applikation.Det grundlæggende format til sammensætning over arv er inkludering af et eksempel på et objekt inde i et andet objekt.Dette adskiller sig tydeligt fra den objektorienterede metode til arv, men kan tjene det samme formål i mange modeller.Fordelene ved sammensætning over arv inkluderer veldefinerede grænser mellem de sammensatte objekter og indpakningsobjekterne, evnen til at ændre implementeringen af et objekt uden at påvirke et helt arvshierarki og en mindre restriktiv ramme for det indledende programdesign.Nogle af komplikationerne kan imidlertid omfatte vanskeligheder i serialisering og alt for komplekse strukturer i store, etablerede programmer.

I objektorienteret programmering er et af de træk, der er vigtigt at etablere under design, hvordan de forskellige objekter forholder sig til hinanden.Arv er en central mekanisme i objektorienteret programmering og giver et objekt mulighed for at arve alle data og metoder for dets forælder, som den derefter kan tilføje til, ændre eller udvide med sin egen implementering.Et eksempel på design baseret på arv kunne være med et program, der har en hovedklasse, der er definerer en bil og modellerer nogle generiske attributter for alle biler.Klassen for hvert individuelt bilmærke fremstilles derefter som en efterkommer af hovedklassen, men definerer specifik information, såsom motorstørrelse, brændstofkapacitet eller anden information, der er specifik for det pågældende bilmærke.

Sammensætning udtrykkes ved at inkludere objektForekomster inden for andre genstande.Hvis der er en hovedklasse, der definerer en generisk bil, i stedet for at oprette underklasser til specifikke bilmærker, kunne hovedklassen i stedet indeholde forekomster af andre objekter, der definerer bilen mere specifikt.Dette kan betyde, at den vigtigste bilklasse kunne indeholde et objekt for motortypen og et for brændstofkapaciteten, som ville blive indstillet, når klassen bruges til at skabe et eksempel på et specifikt bilmærke.

med sammensætning over arv, denObjekter, der er indeholdt i hovedklassen, er ikke direkte relateret til hovedklassen, hvilket giver udviklere friheden til at ændre, hvordan individuelle genstande fungerer.Et problem, som sammensætning over arv kan hjælpe med at forhindre, er en situation, hvor et arvetræ kan være for dybt, hvilket betyder, at enhver ændring af en klasse i træet kan kræve ændringer ned ad træets længde.Ikke alle objektorienterede sprog har støtte til flere arv, og sammensætning over arv er en metode, der kan bruges til at arbejde omkring denne begrænsning.