Konu Anlatımı
Kalıtım (Inheritance)
Kalıtım, bir sınıfın diğer sınıfın özelliklerini ve metotlarını devralmasıdır.
class Hayvan
{ public string isim; public void sesCikar() { Console.WriteLine("Ses çıkıyor..."); }
} class Kopek: Hayvan
{ public void havlama() { Console.WriteLine("Hav hav!"); }
}Çok Biçimlilik (Polymorphism)
Aynı isimdeki metotların farklı sınıflarda farklı şekillerde davranış göstermesidir. override ve virtual anahtar kelimeleri kullanılır.
Kalıtımın Çalışma Zamanı Davranışı
Kalıtım kurulurken üst sınıfa ait alanlar alt sınıfın nesnesi içinde saklanır; alt sınıf kendi alanlarını bu alanların yanına ekler. Böylece bir Otomobil nesnesi hem Tasit sınıfından gelen hız bilgisini hem de kendine özgü vites sayısını taşır. Metot çağrısı yapılırken önce alt sınıfın metotları taranır, bulunamazsa arama üst sınıfa doğru devam eder; bu ilkeye metot arama zinciri denir. Bu sayede alt sınıf, üst sınıfın çalışan kodunu tekrar yazmadan kullanır ve bakımı tek noktadan yapılır.
Üst Sınıfa Erişim: base ve Koruma Düzeyleri
Alt sınıfta yeniden tanımlanan bir metot, üst sınıftaki aynı isimli metodu gizler; bu durumda üst sınıfın sürümüne base anahtar kelimesiyle erişilir. public üyeler her yerden, protected üyeler yalnızca sınıfın kendisi ve alt sınıflarından, private üyeler ise yalnızca tanımlandığı sınıftan çağrılabilir. Koruma düzeyi seçimi, nesnenin dışarıya açtığı yüzeyi belirlediği için tasarımın güvenli olmasını sağlar: iç hesap alanlarını private tutmak, nesnenin geçersiz değerlerle bozulmasını engeller. Kurucu metot devralınmaz; alt sınıfın kurucusu isterse base çağrısıyla üst sınıfın kurucusunu çalıştırarak ortak alanları başlatır.
Uygulama: Soyut Sınıfla Kalıtımı Birlikte Kullanma
Gerçek projelerde kalıtım çoğunlukla soyut sınıflarla birlikte kullanılır. Soyut sınıf, alt sınıfların doldurması zorunlu metotları gövdesiz bildirir; alt sınıf bu metodu uygulamazsa program derlenmez. Örneğin Sekil adlı soyut sınıf AlanHesapla metodunu bildirir; Dikdortgen ve Daire sınıfları kendi formülleriyle bu metodu uygular. Böylece çizim programı, şeklin türünü bilmek zorunda kalmadan alan hesaplatabilir. Sınavda en sık karıştırılan nokta, kalıtımın yalnızca kod tekrarını azaltmak için değil ortak davranışı tek yerde toplamak için de kullanıldığıdır.
Sınav ve Atölye Odaklı Notlar
Sınav sorularında sınıf diyagramı verilip hangi üyelerin devralındığı, base ile hangi metoda erişileceği ve koruma düzeylerinin ne işe yaradığı sorulur. Atölyede kalıtımlı bir projede üst sınıfı değiştirmenin tüm alt sınıfları etkileyeceği unutulmamalı; bu yüzden üst sınıf metotlarının imzaları sonradan değiştirilmez. Kod yazarken sınıf adları büyük harfle başlar, metot adları kelime başları büyük harfle yazılır; bu kural ekibin kodu okumasını kolaylaştırır ve sınavda kod okuma sorularının çözümünü hızlandırır.
Ne Öğreneceğiz
Nesne Tabanlı Programlama dersi kapsamında Kalıtım konusu. Bu konuda ögrenme çıktıları:
- Kalıtım ile ilgili temel kavramları açıklar.
- Kalıtım konusunun Nesne Tabanlı Programlama dersi içindeki yerini ve önemini belirtir.
- Konuyla ilgili araç, gereç ve malzemeleri amacına uygun seçer.
- İş sağlığı ve güvenliği kurallarına uygun çalışır.
- Öğrendiği bilgi ve becerileri atölye/iş yeri uygulamalarında kullanır.
Ön Bilgi
Bu konuya başlamadan önce temel kavram ve ön koşulları kavramanız yardımcı olacaktır. Konunun çerçevesinde şu kavramlar dikkat ister:
- Kalıtım ile kod tekrarı önlenir
- : işareti ile üst sınıfa bağlanılır
- Alt sınıflar üst sınıftaki public elemanları devralır
- base ile üst sınıfa erişilir
- Çok biçimlilik override ile sağlanır
Basit Örnek ve Günlük Yaşam
Günlük yaşamda ve mesleki bağlamda bir uygulama:
Soru: Hayvan sınıfında ortak özellik olarak ad ve ses bilgisi tutuluyor. Bu sınıftan Kopek ve Kedi sınıfları türetilecektir. Ortak ve özgün özellikler nasıl dağılır?
- Adım 1: Ad ve ses gibi ortak özellikler Hayvan sınıfında bırakılır.
- Adım 2: Kopek sınıfı yalnızca kendi özgün özelliğini ekler: koruma içgüdüsü.
- Adım 3: Kedi sınıfı da kendi özgün özelliğini ekler: tırmanma yeteneği; ortak özellikler tekrar yazılmaz.
Sonuç/cevap: Cevap: Ortak özellikler üst sınıfta kalır, Kopek ve Kedi yalnızca özgün özelliklerini ekler.
İleri Örnek
Daha ileri bir uygulama:
Soru: Sekil soyut sınıfı AlanHesapla metodunu gövdesiz bildiriyor. Dikdortgen sınıfı bu metodu 4 cm genişlik ve 6 cm boy için uyguluyor. Sekil türünden referansla Dikdortgen nesnesine AlanHesapla denirse sonuç kaç cm² olur?
- Adım 1: Uygulanan metot dikdörtgen alan formülünü çalıştırır: alan = genişlik × boy.
- Adım 2: Değerler yerine yazılır: alan = 4 × 6.
- Adım 3: Çarpım hesaplanır: alan = 24 cm².
Sonuç/cevap: Cevap: Alan 24 cm² olarak hesaplanır.
Adım Adım Çözülmüş Örnek
Örnek 1: Hayvan Sınıfından Türetme konusunun adımları:
- Adım 1: Ad ve ses gibi ortak özellikler Hayvan sınıfında bırakılır.
- Adım 2: Kopek sınıfı yalnızca kendi özgün özelliğini ekler: koruma içgüdüsü.
- Adım 3: Kedi sınıfı da kendi özgün özelliğini ekler: tırmanma yeteneği; ortak özellikler tekrar yazılmaz.
Karşılaştırma Tablosu
| Kavram | Açıklama |
|---|
| Kalıtım ile kod tekrarı önlenir | Kalıtım ile kod tekrarı önlenir |
| : işareti ile üst sınıfa bağlanılır | : işareti ile üst sınıfa bağlanılır |
| Alt sınıflar üst sınıftaki public eleman | Alt sınıflar üst sınıftaki public elemanları devralır |
| base ile üst sınıfa erişilir | base ile üst sınıfa erişilir |
| Çok biçimlilik override ile sağlanır | Çok biçimlilik override ile sağlanır |
Sık Yapılan Hatalar
Kalıtım ile ilgili kavramları birbirine karıştırmak: Temel kavramları tablo veya zihin haritasıyla ayırt et.
Uygulamada standartlara ve iş güvenliği kurallarına uymamak: Her adımda güvenlik ve kalite kurallarını uygula.
Kullanılan araç-gereci amacına uygun seçmemek ve bakımını ihmal etmek: Doğru ekipmanı seç, kullanım öncesi ve sonrası kontrol et.
private alanın alt sınıftan da okunabileceğini sanmak: private üyeler yalnızca tanımlandıkları sınıftan erişilir; alt sınıfın bu alana erişebilmesi için alanın protected veya public açılması gerekir.
Özet
Kalıtım, Nesne Tabanlı Programlama dersi kapsamında ele alınan temel konulardan biridir. Kalıtım ile kod tekrarı önlenir: işareti ile üst sınıfa bağlanılır Alt sınıflar üst sınıftaki public elemanları devralır base ile üst sınıfa erişilir Çok biçimlilik override ile sağlanır Bu bilgiler uygulama ve iş güvenliği kurallarıyla birlikte pekiştirilmelidir.
Kendini Dene
Soru: Hayvan üst sınıfından türeyen Kopek ve Kedi alt sınıflarını oluştur. Ortak özellikleri üst sınıfta, yalnızca özgün özellikleri alt sınıflarda tut; base ile bir çağrı yap ve private bir alanın neden devralınamadığını açıkla.
Örnek cevap: Puanlama anahtarı: Kalıtım: işaretiyle doğru belirtilir, ortak alan ve metotlar üst sınıfta toplanır (5 puan); Alt sınıflar yalnızca özgün üyelerini ekler (3 puan); base. ile üst sınıf metodu çağrısı doğru kullanılır (3 puan); Private üyenin yalnızca tanımlandığı sınıftan erişildiği ve bu yüzden alt sınıfta doğrudan kullanılamadığı açıklanır (2 puan); Kalıtımın kod tekrarını önlediği bir cümleyle vurgulanır (2 puan).