Object Oriented Programlama # 5 - Python Dersleri (Tutorials)

in #palnet5 years ago

object.jpg

Merhabalar

Object oriented programlama konusuna başladığımızdan beri sınıf, nesne, özellikler, yapıcı fonksiyonlar ve init() fonksiyonundan bahsettik.

Bu dersimizde sınıf yapısının içerisinde metot nasıl tanımlanır, bunu göreceğiz.

Özellikleri ve metotları olan bir sınıf tanımlayarak başlayalım. personel adında bir sınıfımız olsun ve personele ait genel özellik ve metotlarımız bulunsun.

Kod kısmı aşağıdaki gibidir :

Örneğimizde personel adında bir sınıf tanımlanmıştır. Sınıf içerisinde init() fonksiyonu ve bilgilerGoster() metodu bulunmaktadır.

init() fonksiyonunu önceki derslerimizden biliyoruz. Sınıf içerisinde yer alan özelliklere ilk değer ataması yapmak için kullanılan constructor tarzı bir fonksiyon. Örneğimizdeki gibi init() fonksiyonunu tanımlama zorunluluğu bulunmamaktadır.

Eğer programcı init() fonksiyonunu tanımlamazsa Python default olarak oluşturmaktadır. Ancak init() fonksiyonunu Python oluşturduğunda özellikleri nesnelere göre değiştirilebilir hale getiremiyoruz.

Sınıf içerisinde bulunan özellik bilgilerini nesnelere göre değiştirilebilir hale getirmek için init() fonksiyonunu biz tanımladık.

İki fonksiyon da tanım olarak neredeyse birbirinin aynısı gibi gözüküyor:

  • Fonksiyon tanımlamak için def anahtar kelimesinin ve fonksiyon parantezlerinin kullanılması
  • self referansının kullanılması: Sınıf içerisinde herhangi bir fonksiyon tanımladığımızda self referansının ilk parametre olarak verilmesi zorunludur. Bu referans sayesinde sınıfın özelliklerine ve metotlarına erişebiliriz.

Yukarıdaki init tanımından bahsedelim. Buradaki self anahtar kelimesi bu sınıftan oluşturulacak objeyi simgelemektedir. Yani bir nesne üzerinden o sınıfın özellik ve metotlarına erişebilmek için bu anahtar kelimenin kullanılması gerekir.

self.ad = ad

kodu ise "init() fonksiyonuna parametre olarak gelen ad değerini nesnenin ad özelliğine ata", demektir. Diğer özellikler de aynı şekilde.

Bu arada özellikler hakkında herhangi bir tip sınırı bulunmamaktadır. ad, soyad string olabilir ya da numara ve maas bilgileri tamsayı. Hatta diller değişkeni de bir liste olabilir. Bunların kullanımını bir nesne oluşturduğumuzda göreceğiz.

bilgilerGoster() fonksiyonu ise self zorunlu parametresi dışında herhangi bir parametre almamıştır. Fonksiyon bloğunda yer alan tek kod print() fonksiyonudur.

print() fonksiyonu içerisinde self referansını kullanarak sınıfın özelliklerine erişildiğini görüyoruz.

Gelelim bu sınıfın kullanılmasına. Bir sınıfı kullanabilmek için o sınıftan nesne oluşturmamız gerekir.

worker adında bir nesne oluşturduk. personel sınıfı içerisinde tanımladığımız özel bir init fonksiyonu olduğundan nesne oluştururken ilk değerlerini verebildik.

İlk değer verilirken init fonksiyonunda parametreler hangi sırayla bulunuyorsa, değerleri de o sıraya uygun olarak vermek gerekir.

ad ve soyad özelliklerinin string, numara ve maas özelliklerinin tam sayı ve diller özelliğinin de bir liste olduğunu görüyoruz.

Nesnemizi oluşturduğumuza göre sınıfa ait bir metot çağıralım :

bilgileriGoster() metodunun çağrılışı diğer metotlar gibidir. Nesne ismini yazdıktan sonra noktaya ve sonrasında TAB a bastığımızda çıkan listeden fonksiyonu seçebiliriz. Bu metodun geri dönüş değeri olmadığından direk çalıştırabildik.

Sınıf içerisinde çok daha fazla fonksiyon oluşturabiliriz. İki adet daha fonksiyon ekleyip kullanımlarına bakalım :

dilEkle() ve maasArtir adında iki adet daha fonksiyon ekledik. İkisi de birer parametre içermektedir. Kullanımları ise aşağıdaki gibidir :

Şimdilik bu kadar.

Umarım faydalı bir çalışma olmuştur.

Teşekkürler.

yesilayrca.png

Kaynak belirtilmeyen görseller bana aittir. The pictures without source in the post is belong to me

Sort:  

You got a 98.95% upvote from @minnowvotes courtesy of @elektroyazilim!

You got a 25.00% upvote from @redlambo courtesy of @elektroyazilim! Make sure to use tag #redlambo to be considered for the curation post!

You got a 93.45% upvote from @luckyvotes courtesy of @elektroyazilim!

You got a 33.33% upvote from @whalecreator courtesy of @elektroyazilim! Delegate your Steem Power to earn 100% payouts.

Coin Marketplace

STEEM 0.29
TRX 0.11
JST 0.031
BTC 68308.81
ETH 3883.32
USDT 1.00
SBD 3.71