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.
|
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. ( ve C# gibi dillerde olduğu gibi).
Tarihçe
1996'da Tony Hoare ü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, , Java, Python ve başka birçok dile yayıldı.
Çeşitler
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.
Çoklu kalıtımı verimli bir şekilde programlaması çok zor olarak görülüyordu. Mesela, Objective-C üzerine kitabında, 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.
- Ç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.
- 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
- ^ Hoare, C. A. R. (1966). Record Handling (PDF). ss. 15-16. 7 Nisan 2022 tarihinde kaynağından (PDF). Erişim tarihi: 24 Mart 2024.
- ^ 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 (PDF). Erişim tarihi: 24 Mart 2024.
- ^ 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 . Eksik ya da boş
|başlık=
() - ^ "C++ Inheritance". www.cs.nmsu.edu. 24 Eylül 2023 tarihinde kaynağından . Erişim tarihi: 24 Mart 2024.
- ^ Stroustrup, Bjarne (1994). The Design and Evolution of C++. Pearson. s. 417. ISBN .
Bilgisayar ile ilgili bu madde seviyesindedir. Madde içeriğini genişleterek Vikipedi'ye katkı sağlayabilirsiniz. |
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Bu madde Ingilizce Vikipedi de yer alan ayni konulu maddeden Turkceye ceviri yapilarak genisletilebilir Baslica ceviri yonergeleri icin genislet dugmesine tiklayiniz Ingilizce maddenin makine ceviri surumunu goruntuleyin Google Ceviri gibi makine cevirileri yapacaginiz ceviriler icin iyi bir baslangic noktasidir ancak cevirmenler sadece makine tarafindan cevrilen metni kopyala yapistir yapmak yerine hatalari gerektigi gibi gozden gecirmeli ve cevirinin tutarli oldugunu onaylamalidir Guvenilmeyen ya da dusuk kaliteli gorunen icerikleri eklemeyiniz Mumkunse yabanci dil maddesinde verilen referanslar ile cevireceginiz metni dogrulayin Cevirinize eslik edecek bir sekilde dillerarasi baglanti ekleyerek degisiklik ozetinizde bir telif hakki atfi saglamalisiniz Degisiklik ozeti icin ornek bir atif Bu degisiklikteki icerik Ingilizce Vikipedi de yer alan en Inheritance object oriented programming sayfasindan cevrilmistir atif icin sayfanin tarihine bakiniz Ayrica tartisma sayfasina Cevrilmis sayfa en Inheritance object oriented programming sablonunu eklemelisiniz Daha fazla bilgi icin bkz Vikipedi Ceviri Kalitim Ingilizce inheritance bir sinifin ust siniftan miras almasina denir Pratikte karisikliklara sebep oldugundan kimi programlama dilleri ancak tekli kalitima izin verirler Java gibi Bu dillerde coklu kalitim yerine interface denilen nesnelerden faydalanilarak coklu kalitimin verdigi ozellikler yan etkileri olmaksizin kullanilabilmektedir Coklu kalitima izin veren programlama dillerindeyse dogrudan bir sinifin birden fazla siniftan miras almasi mumkundur C ve C gibi dillerde oldugu gibi Bir ust siniftan turemis alt sinifin kalitim semasi Tarihce1996 da Tony Hoare uzerine birkac gorus ortaya koydu ve ozellikle de bilesik alt siniflarina dair fikrini meydana atti Bunlari ortak nicelikleri olan fakat bir degiske etiketi ile ayirt edilen ve degiskelere ozel nicelikler de iceren birer bilesik olarak tanimladi Bundan esinlenerek 1967 da Ole Johan Dahl ve Kristen Nygaard farkli siniflara mensup fakat farkli niceliklere sahip nesneler tanimlamaya yol acan bir tasarim ortaya koydu Ortak nicelikler bir ust sinifta toplanmakta ve ust siniflar ise kendileri birer ust sinifa mensup olabilmekteydi Bu halde bir alt sinifin degerleri farkli ust siniflara ait herhangi bir sayida on kisim ve alt sinifa ait bir ana kisim iceren birer bilesik nesneydi Bu kisimlar birlestirilmekteydi Bir bilesik nesnenin nicelikleri nokta gosterimi ile erisilirdi Bu fikir ilk Simula 67 programlama dilinde uygulanmisti Fikir sonrasinda Smalltalk C Java Python ve baska bircok dile yayildi CesitlerTekli kalitimCoklu kalitim Paradigma ve dile gore farkli kalitim cesitleri bulunmaktadir Tekli kalitim Alt siniflar tek bir ust sinifin ozelliklerini miras alir Bir sinif baska bir sinifin ozelliklerine sahip olur Coklu kalitim Tek bir sinif birden fazla ust sinifa sahip olabilip tum ust siniflarindan ozellik miras alir Coklu kalitimi verimli bir sekilde programlamasi cok zor olarak goruluyordu Mesela Objective C uzerine kitabinda gercekten C a coklu kalitim eklemenin imkansiz oldugunu one surdu 1982 kadar erken bir vakitte coklu kalitimi dusunup 1984 te basit ve verimli bir programlama teknigi buldugum icin bu zorlugu ustume aldim Zannediyorum ki bu modanin olay orgusunu degistirdigi tek durum Bjarne Stroustrup Cok seviyeli kalitim Alt siniflar baska bir alt sinifa alt siniflara mensup olabilir Cok seviyeli kalitim seklinde gosterildigi halde bu durum epey yaygindir Cok seviyeli kalitim A sinifi B turetilmis sinifi icin bir taban sinifi gorevi gorur ki o da C turetilmis sinifi icin bir taban sinifi gorevi gorur B sinifi bu durumda A ve C arasindaki kalitim icin bir araci oldugundan dolayi ortanca taban sinifi olarak bilinir ABC zinciri kalitim yolu olarak bilinir Cok seviyeli kalitim ile turetilmis siniflar asagidaki gibi tanimlanir C dilinde emplementasyon class A Taban sinifi class B public A A dan turetilmis B class C public B B den turetilmis C Bu islem herhangi bir seviye derinligine surdurulebilir Hiyerarsik kalitim Bu durumda tek bir sinif birden fazla sinifa ust siniflik eder Mesela bir ust sinif A B ve C olmak uzere iki alt sinifa sahip olabilir Hem B hem de C nin ust sinifi A olsa da B ve C farkli birer siniftir Karma kalitim Karma kalitim yukaridaki cesitlerden iki ya da ikiden fazlasi gerceklesmesidir Bunun bir ornegi bir A sinifinin iki C ve D olmak uzere iki alt sinifa sahip bir B alt sinifina sahip olmasidir Bu cok seviyeli ve hiyerarsik kalitimin bir karisimidir Kaynakca Hoare C A R 1966 Record Handling PDF ss 15 16 7 Nisan 2022 tarihinde kaynagindan PDF Erisim tarihi 24 Mart 2024 Dahl Ole Johan Nygaard Kristen May 1967 Class and subclass declarations PDF IFIP Working Conference on Simulation Languages Oslo Norwegian Computing Center 16 Mayis 2023 tarihinde kaynagindan PDF Erisim tarihi 24 Mart 2024 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 Eksik ya da bos baslik yardim C Inheritance www cs nmsu edu 24 Eylul 2023 tarihinde kaynagindan Erisim tarihi 24 Mart 2024 Stroustrup Bjarne 1994 The Design and Evolution of C Pearson s 417 ISBN 9780135229477 Bilgisayar ile ilgili bu madde taslak seviyesindedir Madde icerigini genisleterek Vikipedi ye katki saglayabilirsiniz