Skład i agregacja
Klasy i obiekty mogą być ze sobą powiązane. Dziedziczenie opisuje związek „jest” (lub w języku angielskim „IS A”). Lew jest zwierzęciem. Taki związek łatwo wyrazić za pomocą dziedziczenia, gdzie
Animal
będzie to klasa nadrzędna i
Lion
potomek. Jednak nie wszystkie relacje na świecie są opisywane w ten sposób. Na przykład klawiatura jest zdecydowanie w jakiś sposób powiązana z komputerem, ale
nie jest komputerem . Ręce są w jakiś sposób związane z osobą, ale nie są osobą. W tych przypadkach opiera się na innym typie relacji: nie „jest”, ale „jest częścią” („MA A”). Ręka nie jest osobą, ale jest częścią osoby. Klawiatura nie jest komputerem, ale jest częścią komputera. HAS Relacje można opisać w kodzie za pomocą mechanizmów
kompozycji i
agregacja . Różnica między nimi polega na „ścisłości” tych połączeń. Podajmy prosty przykład: mamy swój
Car
- samochód. Każdy samochód ma silnik. Ponadto w każdym samochodzie znajdują się pasażerowie. Jaka jest podstawowa różnica między polami
Engine engine
a
Passenger[] passengers
? Jeśli pasażer siedzi w samochodzie , nie oznacza to, że pasażerowie i
A
nie mogą w nim przebywać . Jeden samochód może pomieścić wielu pasażerów. Ponadto, jeśli wszyscy pasażerowie wypadną z samochodu, będzie on nadal działał płynnie. Związek między klasą a tablicą pasażerów jest mniej ścisły. Nazywa się to
agregacją . Jest dobry artykuł na ten temat:
Relacje między klasami (obiektami)B
C
Car
Passenger[] passengers
. Stanowi kolejny dobry przykład agregacji. Powiedzmy, że mamy klasę
Student
oznaczającą ucznia i klasę
StudentGroup
(grupę uczniów). Uczeń może być członkiem klubu fizyki, studenckiego fanklubu Gwiezdnych Wojen lub zespołu KVN.
Kompozycja jest bardziej rygorystycznym typem relacji. W przypadku kompozycji obiekt jest nie tylko częścią obiektu, ale nie może należeć do innego obiektu tego samego typu. Najprostszym przykładem jest silnik samochodowy. Silnik jest częścią samochodu, ale nie może być częścią innego samochodu. Jak widać, ich związek jest znacznie bardziej ścisły niż związek
Car
i
Passengers
.
GO TO FULL VERSION