Kalıtım (programlama)

Kalıtım (), bir sınıfın üst sınıftan miras almasına denir. Pratikte karışıklıklara sebep olduğundan kimi programlama dilleri, ancak tekli kalıtıma izin verirler (Java gibi). Bu dillerde çoklu kalıtım yerine interface denilen nesnelerden faydalanılarak çoklu kalıtımın verdiği özellikler, yan etkileri olmaksızın kullanılabilmektedir.
Çoklu kalıtıma izin veren programlama dillerindeyse doğrudan bir sınıfın birden fazla sınıftan miras alması mümkündür. (C++ ve C# gibi dillerde olduğu gibi).

 Tarihçe 

1996'da Tony Hoare bileşikler üzerine birkaç görüş ortaya koydu ve özellikle de bileşik alt sınıflarına dair fikrini meydana attı. Bunları ortak nicelikleri olan fakat bir değişke etiketi ile ayırt edilen ve değişkelere özel nicelikler de içeren birer bileşik olarak tanımladı. Bundan esinlenerek, 1967'da Ole-Johan Dahl ve Kristen Nygaard farklı sınıflara mensup fakat farklı niceliklere sahip nesneler tanımlamaya yol açan bir tasarım ortaya koydu. Ortak nicelikler bir üst sınıfta toplanmakta ve üst sınıflar ise kendileri birer üst sınıfa mensup olabilmekteydi. Bu halde, bir alt sınıfın değerleri farklı üst sınıflara ait herhangi bir sayıda ön kısım ve alt sınıfa ait bir ana kısım içeren birer bileşik nesneydi. Bu kısımlar birleştirilmekteydi. Bir bileşik nesnenin nicelikleri nokta gösterimi ile erişilirdi. Bu fikir ilk Simula 67 programlama dilinde uygulanmıştı. Fikir sonrasında Smalltalk, C++, Java, Python ve başka birçok dile yayıldı.

Çeşitler
küçükresim|upright|Tekli kalıtım
küçükresim|upright|Çoklu kalıtım

Paradigma ve dile göre farklı kalıtım çeşitleri bulunmaktadır.

Tekli kalıtım 
Alt sınıflar tek bir üst sınıfın özelliklerini miras alır. Bir sınıf başka bir sınıfın özelliklerine sahip olur.
Çoklu kalıtım
Tek bir sınıf birden fazla üst sınıfa sahip olabilip tüm üst sınıflarından özellik miras alır. 

Çok seviyeli kalıtım
Alt sınıflar başka bir alt sınıfa/alt sınıflara mensup olabilir. "Çok seviyeli kalıtım" şeklinde gösterildiği halde bu durum epey yaygındır.
küçükresim|right|upright|Çok seviyeli kalıtım
A sınıfı B türetilmiş sınıfı için bir taban sınıfı görevi görür, ki o da C türetilmiş sınıfı için bir taban sınıfı görevi görür. B sınıfı bu durumda A ve C arasındaki kalıtım için bir aracı olduğundan dolayı ortanca taban sınıfı olarak bilinir. ABC zinciri kalıtım yolu olarak bilinir.
Çok seviyeli kalıtım ile türetilmiş sınıflar aşağıdaki gibi tanımlanır:
// C++ dilinde emplementasyon
class A { /* ... */ };      // Taban sınıfı
class B : public A { /* ... */ };   // A'dan türetilmiş B
class C : public B { /* ... */ };   // B'den türetilmiş C
Bu işlem herhangi bir seviye derinliğine sürdürülebilir.
Hiyerarşik kalıtım
Bu durumda tek bir sınıf birden fazla sınıfa üst sınıflık eder. Mesela, bir üst sınıf, A, B ve C olmak üzere iki alt sınıfa sahip olabilir. Hem B hem de C&apos;nin üst sınıfı A olsa da B ve C farklı birer sınıftır.

Karma kalıtım
Karma kalıtım, yukarıdaki çeşitlerden iki ya da ikiden fazlası gerçekleşmesidir. Bunun bir örneği bir A sınıfının iki C ve D olmak üzere iki alt sınıfa sahip bir B alt sınıfına sahip olmasıdır. Bu, çok seviyeli ve hiyerarşik kalıtımın bir karışımıdır.

 Kaynakça 

Kategori:Bilgisayar bilimi
Kategori:Nesne yönelimli programlama