Python’da Polimorfizm (Çok Biçimlilik)

Bu derste, Python’da çok biçimlilik (Polimorfizm) konseptinin ne olduğunu, nasıl kullanıldığını ve neden önemli olduklarını detaylarıyla inceleyeceğiz.

Python’da Polimorfizm

Polimorfizm, kelime anlamı olarak “çok biçimlilik” manasına gelir. Nesne yönelimli programlama penceresinden baktığımızda ise farklı sınıf türlerinin, aynı arayüzü ya da metodu kendi içinde farklı bir şekilde tanımlayabilmesi anlamına gelir. Başka bir deyişle, aynı metot adının farklı nesnelerde farklı işler yapabilme prensibidir.

Polimorfizmin belki de en büyük avantajlarından biri, daha genişletilebilir ve esnek kod yazmamıza olanak tanımasıdır. Bizlere, aynı isimli metotları farklı sınıflarda farklı şekillerde tanımlama yeteneği sunar. Örneğin:

Yukarıdaki örnekte, Personel, Doktor ve Hakim sınıflarının hepsi bağımsız olarak zam adında bir metoda sahip. Ancak hiçbir sınıf bir diğerinden miras almıyor. Yani, her sınıfın zam metodu tamamen bağımsız ve sınıfın kendi içerisinde tanımlanmış. Kodu çalıştırmak için: Trinket

Polimorfizm ve Miras Alma

Ebeveyn sınıftan çocuk sınıfa miras (inheritance) yoluyla aktarılan, ancak çocuk sınıfında farklı bir şekilde kullanılan metotların yaptığı iş polimorfizmdir. Böylece aynı metodu kullanıp farklı çıktılar alabiliriz.

Öncelikle örneğimizi, Personel adında bir ana sınıfımız olacak şekilde yeniden tanımlayalım ve bu sınıf içerisine, personelin maaşına ne kadar zam yapılacağını belirten bir zam metodu ekleyelim. Böylece metodun varsayılan davranışı, maaşa %10 zam yapmak olsun.

Daha sonra, Doktor ve Hakim adında iki alt sınıf oluşturalım. Bu iki sınıfı oluştururken, Personel sınıfından miras alacağız. Yani, Doktor ve Hakim sınıfları, Personel sınıfının tüm özelliklerini ve metodlarını devralacak. Ancak, doktor ve hakimler için zam oranlarının farklı olmasını istediğimiz için bu iki alt sınıf içerisinde zam metodunu yeniden tanımlayarak ana sınıfın zam metodunu “override” ediyoruz.

Bu kodda, Doktor ve Hakim sınıflarının her biri zam metodunu kendi ihtiyaçlarına göre yeniden tanımlayarak “override” ediyor. Bu sayede, her bir sınıf aynı isimli metodu farklı bir şekilde uyguluyor. İşte polimorfizm böyle bir şeydir. Kodu çalıştırmak için: Trinket

Bu yaklaşım, farklı sınıfların ortak bir arayüzü (yani aynı isimli metodu) paylaşmasına olanak tanırken, her sınıfın bu metodu kendi ihtiyaçlarına göre farklı bir şekilde uygulamasına da izin verir. Bu, kodun daha düzenli, esnek ve genişletilebilir olmasını sağlar.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu