ÜNİTE:
1.3. PROGRAMLAMA
KAZANIMLAR:
1.3.5.1. Çevrimiçi araçları kullanarak belirlenen programlama dilinde ileri uygulamaların yer aldığı özgün proje geliştirir.
PYTHON - Polymorphism (Çok Biçimlilik)
1) Polymorphism (Çok Biçimlilik) Nedir?
Polymorphism, bir kelimenin anlamı gibi düşünülebilir. Örneğin, "Koş" dediğinizde, bir insan yürüyerek veya koşarak ilerlerken, bir bilgisayar bu kelimeyi bir komut olarak algılar. Yani, "aynı isimde bir fonksiyonun farklı sınıflar için farklı davranışlar sergilemesi" fikridir.
2. Günlük Hayattan Örnek Verin
Kalem Örneği: Bir kurşun kalemle yazı yazabiliriz, aynı işlemi tükenmez kalemle veya dolma kalemle de yaparız.
Ortak Metod: Yazı yazma.
Davranış Farkı: Her kalemin mürekkep bırakma biçimi farklıdır.
3. Python ile Basit Örnek
A) Ortak Sınıf ve Alt Sınıflarla Anlatım
Bu örnekte, Hayvan sınıfından türeyen Kopek ve Kedi sınıfları aynı metodu (ses_cikar) farklı şekilde uyguluyor. For döngüsü, polymorphism ile farklı nesnelere aynı metod çağrısını yaparak onların "kendi davranışlarını" sergilemesini sağlıyor.
Çıktının Açıklaması:
Kopek nesnesi: ses_cikar metodu Kopek sınıfında tanımlandığı için bu sınıfın davranışı çalışır ve "Hav hav!" yazdırılır.
Kedi nesnesi: ses_cikar metodu Kedi sınıfında tanımlandığı için "Miyav!" yazdırılır.
Hayvan nesnesi: Hayvan sınıfında tanımlı olan ses_cikar metodu çağrılır ve "Hayvan ses çıkarıyor." yazdırılır.
Bu şekilde Polymorphism sayesinde her sınıf, kendi davranışını sergiler.
B) Gerçek Hayattan Bir Örnek: Araçlar
Bu örnekte, Arac sınıfından türetilmiş Araba ve Ucak sınıfları, kendi hareket yöntemlerini tanımlıyor. Öğrenciler bu örnekle, aynı metot çağrısının farklı sınıflarda farklı davranışlar sergilediğini kolayca anlayabilir.
Çıktının Açıklaması:
Araba nesnesi: Araba sınıfında hareket metodu geçersiz kılındığı (override edildiği) için "Araba tekerlekleriyle ilerliyor." yazdırılır.
Ucak nesnesi: Ucak sınıfında hareket metodu yeniden tanımlandığı için "Uçak kanatlarıyla uçuyor." yazdırılır.
Arac nesnesi: Arac sınıfında tanımlı olan hareket metodu çağrılır ve "Araç hareket ediyor." yazdırılır.
Bu örnek, aynı metodun farklı sınıflarda farklı davranışlar sergileyebileceğini gösterir. Polymorphism'in temel amacı da budur.
C) Uygulamalı Çalışma Örneği
Bir "Çalışan" üst sınıfı ve "Yazılımcı", "Muhasebeci", "Müdür" gibi alt sınıflar oluşturun. Her bir sınıfta bir calis() metodu olsun ve her sınıf kendine özgü bir mesaj yazdırsın.
Örneğin:
Yazılımcı: "Kod yazıyor."
Muhasebeci: "Rapor hazırlıyor."
Müdür: "Toplantıya katılıyor."
Çıktının Açıklaması:
Yazilimci nesnesi: Yazilimci sınıfında calis metodu yeniden tanımlandığı için "Yazılımcı kod yazıyor." yazdırılır.
Muhasebeci nesnesi: Muhasebeci sınıfında calis metodu geçersiz kılındığı için "Muhasebeci rapor hazırlıyor." yazdırılır.
Mudur nesnesi: Mudur sınıfında calis metodu özelleştirildiği için "Müdür toplantıya katılıyor." yazdırılır.
Bu çıktı, Polymorphism sayesinde her sınıfın aynı metodun farklı davranışlarını nasıl sergilediğini açıkça gösterir.
E) Polymorphism (Çok Biçimlilik) Olmadan ve Kullanarak Örnek
Polymorphism olmadan ve kullanarak aynı problemi nasıl çözdüğümüzü görelim.
1. Polymorphism Olmadan
Her sınıf için ayrı bir metod çağrısı yapmamız gerekir. Ortak bir yapı olmadığı için kod tekrarı artar ve esneklik azalır.
Eksik Yanlar:
Her sınıfın nesnesi için ayrı ayrı metod çağırmak gerekiyor.
Yeni bir çalışan türü eklendiğinde kod tekrar düzenlenmek zorunda kalıyor.
Tüm çalışanlar için ortak bir yapı veya davranış tanımlı değil.
2. Polymorphism Kullanarak
Tüm çalışan türlerini aynı yapı altında toplar ve calis metodunu ortak bir arayüz olarak kullanırız.
Avantajlar:
Tüm çalışanlar, Calisan sınıfından türediği için aynı metod (örneğin calis) çağrılabilir.
Yeni bir çalışan türü eklendiğinde (örneğin Sekreter), mevcut kodda değişiklik yapmadan çalışmaya devam eder.
Kod okunabilir ve esnektir.
Kıyaslama
Polymorphism Olmadan | Polymorphism Kullanarak |
Kod tekrarı vardır. | Kod tekrarını ortadan kaldırır. |
Yeni sınıf eklemek daha zahmetlidir. | Yeni sınıf eklemek kolaydır. |
Farklı sınıfların metodlarını çağırmak için her biri ayrı ayrı ele alınır. | Ortak metodlar üzerinden çağrılır. |
Kodun okunabilirliği düşer. | Daha temiz ve organize bir yapı sağlar. |
Polymorphism kullanmak, kodun hem ölçeklenebilir hem de sürdürülebilir olmasını sağlar.
Polymorphism (Çok Biçimlilik) Özet Video:
Polymorphism (Çok Biçimlilik) Alıştırmaları:
1. Hayvanlar Dünyası
Bir Hayvan sınıfı oluşturun. Bu sınıftan türeyen alt sınıflar olsun: Kuş, Balık ve Maymun. Her alt sınıfın kendine özgü bir hareket_et() metodu tanımlayın.
Kuş: "Uçuyor."
Balık: "Yüzüyor."
Maymun: "Ağaçlara tırmanıyor."
Bir liste oluşturun ve her nesne için hareket_et() metodunu çağırın.
Örnek Kod:
2. Ev Aletleri
Bir EvAleti sınıfı oluşturun ve bu sınıftan türeyen Buzdolabı, ÇamaşırMakinesi ve Televizyon sınıflarını tanımlayın.Her alt sınıf, calistir() adlı bir metot içersin ve bu metot şu şekilde farklılık göstersin:
Buzdolabı: "Soğutma sistemi çalışıyor."
ÇamaşırMakinesi: "Yıkama işlemi başlıyor."
Televizyon: "Kanal açılıyor."
Bir listeye farklı ev aletlerini ekleyip hepsini tek tek çalıştırın.
Örnek Kod:
3. Şekiller
Bir Sekil sınıfı oluşturun ve bu sınıftan türeyen Kare, Daire, ve Üçgen sınıflarını tanımlayın. Her sınıfta bir alan_hesapla() metodu bulunsun:
Kare: kenar * kenar
Daire: pi yaricap * 2
Üçgen: (taban * yukseklik) / 2
Bir liste oluşturun ve her şeklin alanını hesaplayıp ekrana yazdırın. (Kullanıcıdan gerekli parametreleri alabilirsiniz.)
Örnek Kod:
Polymorphism (Çok Biçimlilik) Alıştırma Çözümleri Özet Video:
Ödev:
KONU BAŞLIĞI ve 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