Sammensetning og aggregering
Klasser og objekter kan relateres til hverandre. Arv beskriver et "IS A"-forhold. En løve ER ET dyr. Dette forholdet uttrykkes lett ved å bruke arv, hvor
Animal
ville være foreldreklassen og
Lion
barnet. Men ikke alle forhold i verden er riktig beskrevet på denne måten. For eksempel har et tastatur definitivt et forhold til en datamaskin, men
det er ikke en datamaskin . Hendene har et eller annet forhold til en person, men de er ikke en person. Disse tilfellene representerer en annen type forhold - ikke "ER A", men "HAS A". Hender er ikke en person, men en person HAR hender. Et tastatur er ikke en datamaskin, men en datamaskin HAR et tastatur. "HAR EN"
. Forskjellen mellom disse konseptene ligger i "strengheten" i relasjonene. La oss ta et enkelt eksempel: Vi har en
Car
. Hver bil har en motor. I tillegg kan hver bil frakte passasjerer. Hva er den grunnleggende forskjellen mellom feltene
Engine engine
og
Passenger[] passengers
? Hvis passasjer
A
sitter inne i en bil, betyr ikke det at passasjerer
B
og
C
ikke også kan være i bilen. En bil har plass til flere passasjerer. Dessuten kan alle passasjerene gå ut av bilen, men den vil fortsette å fungere problemfritt. Forholdet mellom
Car
klassen og
Passenger[] passengers
arrayet er mindre strengt. Det kalles
aggregering . Her er en god artikkel om dette emnet:
Forhold mellom klasser (objekter). Det gir et annet godt eksempel på aggregering. La oss si at vi har en
Student
klasse som representerer en elev, og en
StudentGroup
som representerer en gruppe elever. En student kan være medlem av en fysikkklubb, en Star Wars studentfanklubb eller en komedieklubb.
Komposisjon er en strengere type forhold. Ved bruk av komposisjon har et objekt et annet objekt, men det kan ikke tilhøre et annet objekt av samme type. Det enkleste eksemplet er en bilmotor. Hvis en bil har en motor, kan ikke den motoren tilhøre en annen bil. Som du kan se, er det forholdet mye strengere enn det til
Car
og
Passengers
.
GO TO FULL VERSION