Merhabalar
Python programlama derslerinin bu bölümünde object oriented programlamanın yeni bir konusu olan kalıtım(inheritance) konusundan devam edeceğiz.
Nesne tabanlı programlama(OOP) derslerinin anlaşılabilmesi için Object oriented programlama derslerinin hepsine düzenli bakmanız tavsiye edilir.
Bir önceki dersimizde kalıtım kavramından ve niçin kullanıldığından bahsetmiştik. Bu dersimizde uygulamalarına yer vereceğiz.
İlk olarak algoritmadan bahsedelim. Okul otomasyon yazılımı yaptığımızı düşünelim. Okul içerisinde çalışan olarak işçiler ve öğretmenler bulunsun.
Bu iki sınıfın ortak noktaları ve farklılıkları bulunmaktadır. İki sınıfta da ortak bulunan ad,soyad, maas gibi bilgileri personel adındaki ana sınıfımızda bulunduralım.
Sonuç olarak öğretmenler de işçi sınıfındaki çalışanlar da nihayetinde personeldirler.
Sonrasında öğretmen ve işçi sınıflarını personel sınıfından miras aldığımızda personel sınıfı içerisindeki özellikler de bu sınıflara geçeceğinden aynı özellikleri tekrar tekrar yazmamıza gerek kalmayacaktır.
Algoritmamız bu şekildedir. Şimdi kod kısmına geçelim.
İlk olarak personel sınıfımızı tanımladık. personel sınıfımızın içerisinde init() fonksiyonu, bilgileriGoster() metodu ve maasArtir() metodu tanımlandı.
init() fonksiyonu içerisinde personel class'ına ait özellikler yer almaktadır. Bu fonksiyonu kendimiz bu şekilde tanımladığımız için bu sınıftan oluşturduğumuz herhangi bir nesneye farklı değerleri verebiliriz.
Sınıf içerisindeki metotlarda, self anahtar kelimesinin kullanılması zorunludur. Bu anahtar kelime sayesinde sınıftaki özellik ve metotlara erişim sağlanmaktadır.
init() fonksiyonundan önceki derslerimizde çok bahsettiğimiz için daha fazla ayrıntıya girmeyeceğim.
Sınıf içerisindeki diğer metotlara bakalım.
bilgileriGoster() metodu, self zorunlu referansı dışında parametre almayan bir metotdur, Bu sınıftan oluşturulan herhangi bir nesne ilk oluşturulduğundan verilen bilgileri ekrana yazmak için kullanılmaktadır.
format() içerisindeki self.ad, self.soyad gibi değerler bu sınıftan oluşturulan nesnenin özelliklerini göstermektedir.
self.ad
ifadesi ile oluşturulan nesnenin _ ad_ özelliği kastedilmektedir.
Gelelim maasArtir() metoduna :
Bu metot ilk çağrıldığından parametre olarak girilen _ miktar_ bilgisini
self.maas += miktar
kodu ile kişinin maaşına ekler ve maas bilgisini günceller.
Şimdi içeriğini sonradan girecek şekilde ogretmen sınıfı tanımlayalım ve bu ogretmen sınıfı personel sınıfından miras alsın.
Örnekteki sınıf bloğundaki _ pass_ ifadesi bu sınıfın içeriğinin sonradan tanımlanacağını ifade etmektedir.
Biz sınıf gövdesini bu anahtar kelimeyi yazmadan boş bırakırsak hata alırız.
ogretmen sınıfı miras alacağı sınıfın ismini, sınıf parantezleri içine yazmalıdır.
class ogretmen(personel)
ifadesinden ogretmen sınıfının personel sınıfından miras aldığını görüyoruz. Şu an ogretmen sınıfının içeriği olmasa dahi en azından personel sınıfının özellik ve metotlarına sahiptir.
Uygulamasını görelim :
Görüldüğü gibi ogretmenA nesnesini oluştururken normal bir sınıftan nesne oluşturur gibi oluşturduk. Ancak ilk değerleri verirken personel sınıfından miras aldığı için personel sınıfı içerisinde yer alan init() fonksiyonunun parametre sırasına uyarak değerleri yerleştirdik.
ogretmenA = ogretmen("Ali","Hoca", 4500)
kodunu çalıştırdığımızda
Personel sınıfının init fonksiyonu
mesajı da bize "personel sınıfındaki init() fonksiyonunun çalıştırıldığını" doğrulamaktadır.
Şimdi de ogretmenA nesnesi üzerinden miras aldığı personel sınıfının herhangi bir metodunu çalıştıralım :
Görüldüğü gibi ogretmen sınıfına ait bir nesne olan ogretmenA nesnesini kullanarak personel sınıfındaki bir metoda erişim sağlayabildik. Bunun sebebi ogretmen sınıfının personel sınıfından miras almasıdır.
Şimdilik bu kadar.
Umarım faydalı bir çalışma olmuştur.
Teşekkürler.
Kaynak belirtilmeyen görseller bana aittir. The pictures without source in the post is belong to me
This post is supported by $0.34 @tipU upvote funded by @thales7 :)
@tipU voting service: instant, profitable upvotes + profit sharing tokens | For investors.
Teşekkür ederim @thales7 hocam ;)
😉
Posted using Partiko Android
You got a 97.61% upvote from @minnowvotes courtesy of @elektroyazilim!
You got a 50.00% upvote from @redlambo courtesy of @elektroyazilim! Make sure to use tag #redlambo to be considered for the curation post!
You got a 94.75% upvote from @luckyvotes courtesy of @elektroyazilim!
You got a 18.70% upvote from @upvoteturtle. Thank you very much for using this upvote service. 😍
We would be very happy about a delegation to grow and increase the maximum upvote!😉
10SP 20SP 50SP 100SP 200SP
This voting Bot pays 100% out to all Delegators and gives an upvote Revenue of 130%
Transfer an amount between 0.001 - 0.01 SBD/Steem to @upvoteturtle with the Post Link as Memo.