Kalıtım ve Kompozisyon
Kalıtım ve Kompozisyon OOP (Nesneye Yönelik Programlama) 'da bulunan iki önemli kavramdır. Basit bir ifadeyle, hem Kompozisyon hem de Kalıtım, bir sınıfa ek özellikler veya davranışlar sağlamakla ilgilenir. Kalıtım, bir sınıfın bir üst sınıftan özellikleri ve davranışı genişleterek devralma yeteneğidir. Öte yandan, Kompozisyon, bir sınıfın üye verileri olarak farklı sınıflardaki nesneleri içerebilme yeteneğidir.
Kalıtım nedir?
Yukarıda belirtildiği gibi, Kalıtım, bir sınıfın bir üst sınıftan özelliklerini ve davranışını genişleterek devralma yeteneğidir. Devralma, temelde varolan bir sınıfın özelliklerini ve davranışını yeni tanımlanmış bir sınıf tarafından genişletmeye izin vererek kodun yeniden kullanımını sağlar. A sınıfı B'yi genişletirse, B sınıfına üst sınıf (veya süper sınıf), A sınıfına ise alt sınıf (veya türetilmiş sınıf / alt sınıf) denir. Bu örnek senaryoda, A sınıfı, süper sınıfın (B) tüm ortak ve korunan özniteliklerini ve yöntemlerini devralır. Alt sınıf isteğe bağlı olarak üst sınıftan devralınan davranışı geçersiz kılabilir (yöntemlere yeni veya genişletilmiş işlevsellik sağlar).
Kalıtım OOP'de bir “is-a” ilişkisini temsil eder. Bu aslında A'nın bir B olduğu anlamına gelir. Başka bir deyişle B, belirli bir gerçek dünya varlığının genel bir tanımına sahip sınıf olabilir, ancak A belirli bir uzmanlığı belirtir. Gerçek bir dünya programlama probleminde, Person sınıfı, Employee sınıfını oluşturmak için genişletilebilir. Buna uzmanlaşma denir. Ancak önce Çalışan sınıfını oluşturabilir ve daha sonra bunu bir Kişi sınıfına da genelleştirebilirsiniz (yani genelleme). Bu örnekte, Çalışan Kişinin tüm özelliklerine ve davranışına sahip olacaktır (yani Çalışan aynı zamanda bir Kişidir) ve bazı ek işlevler de içerebilir (bu nedenle, Kişi Çalışan Değildir).
Kompozisyon Nedir?
Kompozisyon, bir sınıfın üye verileri olarak farklı sınıflardaki nesneleri içerebilmesidir. Örneğin, A sınıfı üye olarak B sınıfı bir nesne içerebilir. Burada, B'de tanımlanan tüm genel yöntemler (veya işlevler) A sınıfı içinde yürütülebilir. A sınıfı kap olurken, B sınıfı içerilen sınıf olur. Bileşime Konteyner olarak da atıfta bulunulmaktadır. Bu örnekte, A sınıfının B sınıfından oluştuğu söylenebilir. OOP'de, Kompozisyon bir “has-a” ilişkisini temsil eder. Kapsayıcı, içerilen sınıfın tüm genel yöntemlerini yürütme erişimine sahip olsa da, ek işlevsellik değiştiremediğini veya sağlayamadığını not etmek önemlidir. Gerçek bir dünya programlama problemi söz konusu olduğunda, TextBox sınıfının bir nesnesi Form sınıfında bulunabilir ve bu nedenle bir Form'un bir TextBox içerdiği söylenebilir (veya alternatif olarak bir Form bir TextBox'tan oluşur).
Kalıtım ve Kompozisyon arasındaki fark nedir?
Kalıtım ve Kompozisyon iki OOP kavramı olmasına rağmen, programcının başarmasına izin verdiklerinden oldukça farklıdırlar. Kalıtım, bir sınıfın genişleterek bir üst sınıftan özellikleri ve davranışı devralma yeteneğidir, Kompozisyon ise bir sınıfın üye veri olarak farklı sınıflardaki nesneleri içerme yeteneğidir. Bir sınıf genişletilirse, tüm ortak ve korunan özellikleri / davranışı devralır ve bu davranışlar alt sınıf tarafından geçersiz kılınabilir. Ancak, bir sınıf başka bir sınıfta yer alıyorsa, kap, içerileni değiştirme veya davranış ekleme yeteneği elde etmez. Kalıtım OOP'de bir “is-a” ilişkisini temsil ederken, Kompozisyon bir “has-a” ilişkisini temsil eder.