Sammensætning og aggregering
Klasser og objekter kan relateres til hinanden. Arv beskriver et "IS A"-forhold. En løve ER ET dyr. Dette forhold er let udtrykt ved hjælp af arv, hvor
Animal
ville være forældreklassen og
Lion
ville være barnet. Men ikke alle forhold i verden er korrekt beskrevet på denne måde. For eksempel har et tastatur bestemt et forhold til en computer, men
det er ikke en computer . Hænder har et eller andet forhold til en person, men de er ikke en person. Disse tilfælde repræsenterer en anden type forhold — ikke "ER A", men "HAS A". Hænder er ikke en person, men en person HAR hænder. Et tastatur er ikke en computer, men en computer HAR ET tastatur. "HAR EN"
. Forskellen mellem disse begreber ligger i relationernes "strenghed". Lad os tage et simpelt eksempel: Vi har en
Car
. Hver bil har en motor. Derudover kan hver bil transportere passagerer. Hvad er den grundlæggende forskel mellem felterne
Engine engine
og
Passenger[] passengers
? Hvis passageren
A
sidder inde i en bil, betyder det ikke, at passagererne
B
ikke
C
også kan være i bilen. En bil kan rumme flere passagerer. Desuden kan alle passagerer komme ud af bilen, men den vil fortsætte med at fungere problemfrit. Forholdet mellem
Car
klassen og
Passenger[] passengers
arrayet er mindre strengt. Det kaldes
aggregering . Her er en god artikel om dette emne:
Relationer mellem klasser (objekter). Det giver endnu et godt eksempel på sammenlægning. Lad os sige, at vi har en
Student
klasse, der repræsenterer en elev, og en
StudentGroup
, der repræsenterer en gruppe elever. En studerende kan være medlem af en fysikklub, en Star Wars-studenterfanklub eller en komedieklub.
Komposition er en strengere type forhold. Når du bruger komposition, har et objekt et andet objekt, men det kan ikke tilhøre et andet objekt af samme type. Det enkleste eksempel er en bilmotor. Hvis en bil har en motor, så kan den motor ikke tilhøre en anden bil. Som du kan se, er det forhold meget strengere end det med
Car
og
Passengers
.
GO TO FULL VERSION