Çok biçimlilik çeşitli biçimler alabilme yeteneği olarak da ifade edilebilir. Bir nesne ya da metodun farklı yerlerde farklı kullanım şeklinde yer almasıdır. Örneğin + operatörü sayısal değerleri matematiksel olarak toplarken, metin değerleri birleştirme görevini yerine getirir. Öyleyse Python’da + operatörü çok biçimli bir nesnedir.
Şimdi, Python’da nesne tabanlı programlama ile çalışırken çok biçimlilikten nasıl faydalanabileceğimiz ile ilgili detaylı ama basit seviyede bir örnekle durumu açıklayalım.
class Personel: def __init__(kisi,ad,soyad, gorev, calismaSuresi): kisi.ad=ad kisi.soyad=soyad kisi.gorev=gorev kisi.calismaSuresi=calismaSuresi def maas(kisi): pass def veriyazdir(kisi): pass class Calisan(Personel): pass class Yonetici(Personel): pass
Gördüğünüz gibi ana sınıfımızdan her bir personel için adı-soyadı, görevi ve çalışma süresi ile ilgili bilgi üretebiliriz. Alt sınıflarımız ise belirli unvanlara göre personele farklı bir işlev kazandırabilecek şekilde kullanılabilir. Veri yapımızı böylece oluşturmuş olduk.
Şimdi de, uygulamamıza gerekli işlevselliği kazandıracak fonksiyonlarımızı yazalım.
class Personel: def __init__(kisi,ad,soyad, gorev, calismaSuresi): kisi.ad=ad kisi.soyad=soyad kisi.gorev=gorev kisi.calismaSuresi=calismaSuresi def maasHesapla(kisi): asgariUcret=2324 kidemKatsayisi=kisi.calismaSuresi*0.01 maas=asgariUcret+(asgariUcret*kidemKatsayisi) return maas def veriYazdir(kisi): print("Personelin Adı-Soyadı: ", kisi.ad, kisi.soyad) print("Görevi: ", kisi.gorev) print("Kurumda Çalışma Süresi: ", kisi.calismaSuresi) print("Aldığı Ücret: ") class Calisan(Personel): pass class Yonetici(Personel): def maasHesapla(kisi): asgariUcret=2324 kidemKatsayisi=kisi.calismaSuresi*0.01 if kisi.gorev == "Mühendis": unvanKatsayisi=0.25 elif kisi.gorev == "Üretim Müdürü": unvanKatsayisi=1.25 maas=(3*asgariUcret)+(asgariUcret*kidemKatsayisi)+(asgariUcret*unvanKatsayisi) return maas personel1=Calisan("Ahmet","Yılmaz","İşçi",4) personel2=Calisan("Veli","Kocaman","İşçi",9) personel3=Calisan("Hasan","Karadağ","Ustabaşı",13) personel4=Yonetici("Tamer","Doğrusöz","Mühendis",8) personel5=Yonetici("Serdar","Deveci","Üretim Müdürü",5) personel1.veriYazdir() print(personel1.maasHesapla()) print() print() personel2.veriYazdir() print(personel2.maasHesapla()) print() print() personel3.veriYazdir() print(personel3.maasHesapla()) print() print() personel4.veriYazdir() print(personel4.maasHesapla()) print() print() personel5.veriYazdir() print(personel5.maasHesapla())
Çıktı:
Personelin Adı-Soyadı: Ahmet Yılmaz Görevi: İşçi Kurumda Çalışma Süresi: 4 Aldığı Ücret: 2416.96 Personelin Adı-Soyadı: Veli Kocaman Görevi: İşçi Kurumda Çalışma Süresi: 9 Aldığı Ücret: 2533.16 Personelin Adı-Soyadı: Hasan Karadağ Görevi: Ustabaşı Kurumda Çalışma Süresi: 13 Aldığı Ücret: 2626.12 Personelin Adı-Soyadı: Tamer Doğrusöz Görevi: Mühendis Kurumda Çalışma Süresi: 8 Aldığı Ücret: 7738.92 Personelin Adı-Soyadı: Serdar Deveci Görevi: Üretim Müdürü Kurumda Çalışma Süresi: 5 Aldığı Ücret: 9993.2
Bağlantıda Kalalım