BİLGİSAYAR BİLİMİ KUR 1 - 2. DÖNEM 12. HAFTA - NESNE YÖNELİMLİ PROG. - KALITIM - İNHERİTANCE
- egitimdebilisim.com
- 30 Tem 2024
- 4 dakikada okunur
Güncelleme tarihi: 1 Şub
ÜNİTE:
1.3. PROGRAMLAMA
KAZANIMLAR:
1.3.4.2. Bir dosyaya veri yazan program geliştirir.
PYTHON - Inheritance (Kalıtım)
Kalıtım (Inheritance) Nedir?
Kalıtım, Nesne Yönelimli Programlama'nın temel konseptlerinden biridir. Bir sınıfın (parent/superclass) özelliklerini ve yöntemlerini başka bir sınıfa (child/subclass) aktarmayı sağlar. Bu sayede kod tekrarını azaltır ve yeniden kullanılabilirliği artırır.
1. Kalıtımın Amacı
Kod tekrarını önlemek.
Daha düzenli ve anlaşılır bir yapı sağlamak.
Var olan bir sınıfın işlevselliğini genişletmek.
2. Python'da Kalıtım Nasıl Yapılır?
Bir sınıf, başka bir sınıfı miras alarak tanımlanır:

3. Örneklerle Anlatım
Örnek 1: Basit Kalıtım

Kod Açıklaması
Hayvan sınıfı, bir hayvanın ismini alır ve bu ismi self.isim ile saklar.
Kopek sınıfı, Hayvan sınıfından türetilmiştir ve havla adlı bir metod içerir. Bu metod, köpeğin havlama sesini simüle eder.
kopek nesnesi, Kopek sınıfından oluşturulmuş ve ismi "Karabaş" olarak verilmiştir. Ardından havla metodu çağrılmıştır.
Örnek 2: super() Kullanımı
super() ile parent sınıfın init veya başka bir metoduna erişebilirsiniz.

Kod Açıklaması
Hayvan Sınıfı (Üst Sınıf - Parent Class)
init metodu isim parametresini alır ve self.isim değişkenine atar.
Kopek Sınıfı (Alt Sınıf - Child Class)
Hayvan sınıfından türetilmiştir (class Kopek(Hayvan):).
init metodu hem isim hem de tur (türü) bilgisini alır.
super().__init__(isim) kullanılarak üst sınıfın (Hayvan) init metodu çağrılır. Bu, self.isim = isim işlemini üst sınıfta gerçekleştirmeyi sağlar.
self.tur = tur ile tur bilgisi eklenir.
bilgi_ver metodu, nesnenin adını ve türünü ekrana yazdırır.
Nesne Oluşturma ve Metot Çağrısı
kopek = Kopek("Karabaş", "Köpek") ile Kopek sınıfından bir nesne oluşturulur.
kopek.bilgi_ver() çağrıldığında, "Karabaş bir Köpek." çıktısı alınır.
Çalışma Mantığı
super().__init__(isim), üst sınıfın init metodunu çağırarak self.isim = isim işlemini yapar.
self.tur = tur ile ek olarak tur bilgisi de saklanır.
bilgi_ver metodu, bu bilgileri kullanarak "Karabaş bir Köpek." çıktısını üretir.
Örnek 3: Çok Seviyeli Kalıtım
Bir sınıf başka bir sınıfı miras alırken aynı zamanda kendisi de başka bir sınıfa miras olabilir.

Kodun İncelenmesi
class Canli: (Canlı Sınıfı)
Bu, en genel sınıftır ve bir canlıyı temsil eder.
Bir metodu (bir sınıfla ilişkili bir fonksiyon) vardır:
yasiyor(): "Bu canlı yaşıyor" (This living thing is alive) yazdırır.
class Hayvan(Canli): (Hayvan Sınıfı)
Bu sınıf, Canli sınıfından kalıtım alır. Bu, bir Canli'nın tüm özelliklerine otomatik olarak sahip olduğu anlamına gelir.
Kendi metodunu ekler:
hareket(): "Bu hayvan hareket ediyor." (This animal is moving) yazdırır.
class Kopek(Hayvan): (Köpek Sınıfı)
Bu sınıf, Hayvan sınıfından kalıtım alır, bu nedenle aynı zamanda Canli'dan da kalıtım alır. Her ikisinin de tüm özelliklerine sahiptir.
Kendi metodunu ekler:
ses_cikar(): "Hav hav!" (Woof woof!) yazdırır.
Nasıl Çalışır?
Kopek sınıfından bir nesne oluşturduğunuzda (kopek = Kopek()), bu nesne Kopek, Hayvan ve Canli'da tanımlanan tüm metotlara erişebilir.
Kod daha sonra bu metotları sırayla çağırır:
kopek.yasiyor(): Canli sınıfındaki yasiyor() metodunu çağırır.
kopek.hareket(): Hayvan sınıfındaki hareket() metodunu çağırır.
kopek.ses_cikar(): Kopek sınıfındaki ses_cikar() metodunu çağırır.
4. Çoklu Kalıtım
Bir sınıf birden fazla sınıfı miras alabilir.

Kodun Açıklaması:
class Ucan::
Ucan adında bir sınıf tanımlanır. Bu sınıf, uçabilen canlıları temsil eder.
uc() adında bir metot (fonksiyon) içerir. Bu metot, "Bu canlı uçuyor." mesajını ekrana yazdırır.
class Kosan::
Kosan adında bir sınıf tanımlanır. Bu sınıf, koşabilen canlıları temsil eder.
kos() adında bir metot içerir. Bu metot, "Bu canlı koşuyor." mesajını ekrana yazdırır.
class Ucankopek(Ucan, Kosan)::
Ucankopek adında bir sınıf tanımlanır. Bu sınıf, hem uçabilen hem de koşabilen canlıları (örneğin, mitolojik bir yaratık olan uçan köpek) temsil eder.
(Ucan, Kosan) ifadesi, Ucankopek sınıfının Ucan ve Kosan sınıflarından kalıtım aldığını gösterir. Bu, Ucankopek sınıfının hem uc() hem de kos() metotlarına sahip olduğu anlamına gelir.
pass ifadesi, bu sınıfın herhangi bir ek özellik veya davranış içermediğini belirtir. Ucankopek, sadece üst sınıflarından (Ucan ve Kosan) kalıtım yoluyla özellikler kazanır.
kopek = Ucankopek():
Ucankopek sınıfından bir nesne (instance) oluşturulur ve bu nesneye kopek adı verilir.
kopek.uc():
kopek nesnesinin uc() metodu çağrılır. Bu, "Bu canlı uçuyor." mesajının ekrana yazdırılmasını sağlar.
kopek.kos():
kopek nesnesinin kos() metodu çağrılır. Bu, "Bu canlı koşuyor." mesajının ekrana yazdırılmasını sağlar.
Bu kod, kalıtım yoluyla bir sınıfın (Ucankopek) birden fazla üst sınıfın (Ucan ve Kosan) özelliklerini ve davranışlarını nasıl miras alabileceğini göstermektedir. Bu, nesne yönelimli programlamanın önemli bir özelliğidir ve kodun daha düzenli, yeniden kullanılabilir ve genişletilebilir olmasını sağlar.
Inheritance (Kalıtım) Özet Video:
Inheritance (Kalıtım) Alıştırması:
Alıştırma 1: Kalıtımı Kavrama
Görev:
Bir Insan sınıfı tanımlayın ve bu sınıfı miras alan Ogrenci ve Ogretmen sınıflarını oluşturun.
Insan sınıfı: isim ve soyisim özellikleri içerir.
Ogrenci: Bir sınıf adını tutar ve kendini tanıtabilir.
Ogretmen: Branşını tutar ve kendini tanıtabilir.
Çözüm: İnsan - Öğrenci - Öğretmen Sınıfları


Kod Açıklaması:
Parent Sınıf - Insan:
Ad ve soyad bilgilerini tutar.
kendini_tanit yöntemiyle genel bir tanıtım yapar.
Child Sınıf 1 - Ogrenci:
Insan sınıfını miras alır.
Ek olarak sinif özelliği içerir.
kendini_tanit yöntemini özelleştirerek sınıf bilgisini ekler.
Child Sınıf 2 - Ogretmen:
Insan sınıfını miras alır.
Ek olarak brans özelliği içerir.
kendini_tanit yöntemini özelleştirerek branş bilgisini ekler.
Alıştırma 2: Çok Seviyeli Kalıtım
Aşağıdaki gibi bir sınıf yapısı oluşturun:
Arac sınıfı oluşturun:
hareket_et() metodu: "Araç hareket ediyor." yazdırsın.
Otomobil sınıfı, Arac sınıfından türetilsin:
calistir() metodu: "Otomobil çalıştırıldı." yazdırsın.
ElektrikliOtomobil sınıfı, Otomobil sınıfından türetilsin:
sarj_et() metodu: "Batarya şarj ediliyor." yazdırsın.
Bir ElektrikliOtomobil nesnesi oluşturun ve tüm metodlarını çağırarak çalıştırın.
Çözüm:

Çözüm Açıklaması
Arac sınıfı (Ana sınıf - Base Class):
hareket_et() metodu "Araç hareket ediyor." yazdırır.
Tüm araçlar hareket edebildiği için bu genel bir fonksiyondur.
Otomobil sınıfı (Ara sınıf - Intermediate Class):
Arac sınıfından türetilmiştir (class Otomobil(Arac)).
calistir() metodu "Otomobil çalıştırıldı." yazdırır.
Otomobiller çalıştırılabildiği için bu metot eklenmiştir.
ElektrikliOtomobil sınıfı (Alt sınıf - Derived Class):
Otomobil sınıfından türetilmiştir (class ElektrikliOtomobil(Otomobil)).
sarj_et() metodu "Batarya şarj ediliyor." yazdırır.
Sadece elektrikli otomobiller için geçerli bir özellik olduğu için bu metot en alt sınıfa eklenmiştir.
Nesne (tesla) oluşturuluyor ve miras alınan metotlar çağrılıyor:
tesla.hareket_et() → Üst sınıftan (Arac) gelen metot çalışır.
tesla.calistir() → Orta seviyedeki sınıftan (Otomobil) gelen metot çalışır.
tesla.sarj_et() → En alt sınıftaki (ElektrikliOtomobil) metot çalışır.
Inheritance (Kalıtım) Alıştırma Çözümleri Özet Video:
Ödev:
Bir Insan sınıfı tanımlayın ve bu sınıfı miras alan Ogrenci ve Ogretmen sınıflarını oluşturun.
Insan sınıfı: isim ve soyisim özellikleri içerir.
Ogrenci: Bir sınıf adını tutar ve kendini tanıtabilir.
Ogretmen: Branşını tutar ve kendini tanıtabilir.
Oluşturduğunuz kodların fotoğrafını aşağıdaki mail adresine gönderiniz.
Maile isim soy isim, sınıf ve okul numarası bilgilerinizi yazmayı unutmayınız.
egitimdebil@gmail.com
Önerilen program: IDE - PYTHON (Bilgisayarla çalışmayanlar, kodları deftere yazıp fotoğrafını gönderebilirler.)
Bilişim Teknolojileri Öğretmeni: İshak BEZCİ
Son gün ve saat : Pazar gece 12.00
Comments