Kalıtım (programlama) - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Tarihçe
  • 2 Çeşitler
  • 3 Kaynakça

Kalıtım (programlama)

  • العربية
  • Azərbaycanca
  • تۆرکجه
  • Беларуская (тарашкевіца)
  • Bosanski
  • Català
  • Čeština
  • Deutsch
  • English
  • Español
  • فارسی
  • Suomi
  • Français
  • עברית
  • हिन्दी
  • Magyar
  • Հայերեն
  • Íslenska
  • İtaliano
  • 日本語
  • ქართული
  • 한국어
  • Lietuvių
  • Latgaļu
  • മലയാളം
  • Bahasa Melayu
  • Nederlands
  • Norsk nynorsk
  • Polski
  • Português
  • Русский
  • Simple English
  • Српски / srpski
  • Svenska
  • தமிழ்
  • Українська
  • Tiếng Việt
  • 中文
  • 粵語
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi
Bu madde, İngilizce Vikipedi'de yer alan aynı konulu maddeden
Türkçeye çeviri yapılarak genişletilebilir
.
Başlıca çeviri yönergeleri için [genişlet] düğmesine tıklayınız.
  • İngilizce maddenin makine çeviri sürümünü görüntüleyin.
  • Google Çeviri veya DeepL gibi makine çevirileri, yapacağınız çeviriler için iyi bir başlangıç noktasıdır ancak çevirmenler, sadece makine tarafından çevrilen metni kopyala yapıştır yapmak yerine, hataları gerektiği gibi gözden geçirmeli ve çevirinin tutarlı olduğunu onaylamalıdır.
  • Güvenilmeyen ya da düşük kaliteli görünen içerikleri eklemeyiniz. Mümkünse yabancı dil maddesinde verilen referanslar ile çevireceğiniz metni doğrulayın.
  • Çevirinize eşlik edecek bir şekilde dillerarası bağlantı ekleyerek değişiklik özetinizde bir telif hakkı atfı sağlamalısınız. Değişiklik özeti için örnek bir atıf : Bu değişiklikteki içerik İngilizce Vikipedi'de yer alan [[:en:Inheritance (object-oriented programming)]] sayfasından çevrilmiştir, atıf için sayfanın tarihine bakınız.
  • Ayrıca tartışma sayfasına {{Çevrilmiş sayfa|en|Inheritance (object-oriented programming)}} şablonunu eklemelisiniz.
  • Daha fazla bilgi için, bkz: Vikipedi:Çeviri.
Bir üst sınıftan türemiş alt sınıfın, kalıtım şeması.

Kalıtım (İngilizce: inheritance), 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

[değiştir | kaynağı değiştir]

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ı.[1] 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.[2] Bir bileşik nesnenin nicelikleri nokta gösterimi ile erişilirdi. Bu fikir ilk Simula 67 programlama dilinde uygulanmıştı.[3] Fikir sonrasında Smalltalk, C++, Java, Python ve başka birçok dile yayıldı.

Çeşitler

[değiştir | kaynağı değiştir]
Tekli kalıtım
Çoklu kalıtım

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

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.

Çoklu kalıtımı verimli bir şekilde programlaması çok zor olarak görülüyordu. Mesela, Objective-C üzerine kitabında, Brad Cox gerçekten C++'a çoklu kalıtım eklemenin imkansız olduğunu öne sürdü. 1982 kadar erken bir vakitte çoklu kalıtımı düşünüp 1984'te basit ve verimli bir programlama tekniği bulduğum için bu zorluğu üstüme aldım. Zannediyorum ki bu modanın olay örgüsünü değiştirdiği tek durum.[5]

— Bjarne Stroustrup

Ç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.
Ç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'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

[değiştir | kaynağı değiştir]
  1. ^ Hoare, C. A. R. (1966). Record Handling (PDF). ss. 15-16. 7 Nisan 2022 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 24 Mart 2024. 
  2. ^ Dahl, Ole-Johan; Nygaard, Kristen (May 1967). Class and subclass declarations (PDF). IFIP Working Conference on Simulation Languages. Oslo: Norwegian Computing Center. 16 Mayıs 2023 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 24 Mart 2024. 
  3. ^ Dahl, Ole-Johan (2004). The Birth of Object Orientation: the Simula Languages (PDF). From Object-Orientation to Formal Methods. Lecture Notes in Computer Science. 2635. ss. 15-25. doi:10.1007/978-3-540-39993-3_3. ISBN 978-3-540-21366-6. 
  4. ^ "C++ Inheritance". www.cs.nmsu.edu. 24 Eylül 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Mart 2024. 
  5. ^ Stroustrup, Bjarne (1994). The Design and Evolution of C++. Pearson. s. 417. ISBN 9780135229477. 
Taslak simgesiBilgisayar ile ilgili bu madde taslak seviyesindedir. Madde içeriğini genişleterek Vikipedi'ye katkı sağlayabilirsiniz.


Otorite kontrolü Bunu Vikiveri'de düzenleyin
  • GND: 4277478-0
"https://tr.wikipedia.org/w/index.php?title=Kalıtım_(programlama)&oldid=36233239" sayfasından alınmıştır
Kategoriler:
  • Bilgisayar taslakları
  • Bilgisayar bilimi
  • Nesne yönelimli programlama
Gizli kategoriler:
  • Tüm taslak maddeler
  • GND tanımlayıcısı olan Vikipedi maddeleri
  • Sayfa en son 17.05, 21 Ekim 2025 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
Kalıtım (programlama)
Konu ekle