Kompozisyon ve toplama
Sınıflar ve nesneler birbiriyle ilişkilendirilebilir. Kalıtım, bir "IS A" ilişkisini tanımlar. ASLAN BİR HAYVANDIR. Bu ilişki, kalıtım kullanılarak kolayca ifade edilir, burada
Animal
ebeveyn sınıf ve
Lion
çocuk olacaktır. Ancak dünyadaki her ilişki bu şekilde doğru bir şekilde tanımlanmaz. Örneğin, bir klavyenin bilgisayarla kesinlikle bir ilişkisi vardır, ancak
o bir bilgisayar değildir . Ellerin bir kişiyle bir tür ilişkisi vardır ama onlar bir kişi değildir. Bu durumlar farklı bir ilişki türünü temsil eder - "IS A" değil, "HAS A". Eller bir kişi değildir, ancak bir kişinin elleri vardır. Klavye bilgisayar değildir, ancak bilgisayarın klavyesi vardır. "HA VAR"
. Bu kavramlar arasındaki fark, ilişkilerin "katılığında" yatmaktadır. Basit bir örnek verelim: Bir
Car
. Her arabanın bir motoru vardır. Ayrıca her araba yolcu taşıyabilir.
Engine engine
ve alanları arasındaki temel fark nedir
Passenger[] passengers
? Yolcu
A
bir arabanın içinde oturuyorsa, bu, yolcu olduğu anlamına gelmez
B
ve
C
aynı zamanda arabada olamaz. Bir araba birden fazla yolcu alabilir. Ayrıca tüm yolcular araçtan inse de araç sorunsuz çalışmaya devam eder.
Car
Sınıf ve dizi arasındaki ilişki
Passenger[] passengers
daha az katıdır.
Agregasyon denir . İşte bu konuyla ilgili iyi bir makale:
Sınıflar (nesneler) arasındaki ilişkiler. Toplama için başka bir iyi örnek sağlar. Diyelim ki
Student
bir öğrenciyi temsil eden bir sınıfımız ve
StudentGroup
bir öğrenci grubunu temsil eden bir sınıfımız var. Bir öğrenci bir fizik kulübünün, bir Star Wars öğrenci hayran kulübünün veya bir komedi kulübünün üyesi olabilir.
Kompozisyon daha katı bir ilişki türüdür. Kompozisyon kullanırken, bir nesnenin başka bir nesnesi vardır, ancak aynı türden başka bir nesneye ait olamaz. En basit örnek bir araba motorudur. Bir arabanın motoru varsa, o motor başka bir arabaya ait olamaz. Gördüğünüz gibi, bu ilişki
Car
ve ilişkisinden çok daha katıdır
Passengers
.
GO TO FULL VERSION