PYTHON NESNE TABANLI PROGRAMLAMA

Bu  konumuzda, programlama dillerinde oldukça önemli olan  Nesne Tabanlı Programlamadan bahsedeceğiz. Nesne Tabanlı Programla dediğimiz konu, oldukça yaygın kullanılan bir yöntemdir ve karşımıza sürekli çıkacaktır.

İngilizce Karşılığı Object Oriented Programming (OOP)  

Örnek verecek olursak bir otel otomasyonu yazmak istiyoruz.Bu otomasyon için  otel çalışanlarını , misafirleri  , etkinlikleri vs. hepsini birer nesne olarak oluşturuyoruz.Her nesnenin yapısını tanımlayıp bu yapılardan nesneler üretiyoruz diyerek Nesne Tabanlı Programlama tanımını yapabiliriz.

 

Sınıflar (Class)

Örnekler üzerinden daha anlaşılır olacağını düşünüyorum o yüzden hemen bir tane bilgisayar classı tanımlayalım:

 

Yukarıda görüldüğü üzere bir bilgisayar sınıfı tanımladık.Sınıfımızı tanımladık şimdi bu sınıftan nasıl obje oluşturacağız ona bakalım :

objemizin_ismi=sınıfımızın_ismi(parametreler)

Tanımladığımız pc1 ve pc2 objeleri  artık bilgisayar sınıfımızın bütün özelliklerine sahip oldu. Print() fonksiyonumuz ile  obje_ismi.özellikler şeklinde özelliklerimizi tanımladığımız obje isimleriyle ekrana bastırabiliyoruz..

Ekran Çıktısı:

Asus
X540UB Notebook
Intel
4 GB
Intel Core i5
Intel

 

 

Peki biz eğer objelerimizi oluştururken istediğimiz değerleri göndermek istersek nasıl bir yol izleriz ?

Bunun için   __init__() methodunu  kullanmamız gerekmektedir.

Şimdi  print(dir(pc1))  ile dir fonksiyonu kullanarak pc1 objemizin içinde neler olduğuna bakalım :

Yukarıda görüldüğü üzere pc1 objemizin methodlarını ve özelliklerini görebiliyoruz.Yukarıda ki methodlar , bir obje oluşturduğumuzda Python tarafından  tanımlanır.Bizler özellikle bu methodları gidip tanımlamazsak Python bunu varsayılan olarak tanımlıyor.

Şimdi bizim yapmak istediğimiz objelerimizi oluştururken istediğimiz değerleri göndermek, bunun içinde init methodundan yararlanacağız demiştik.Bu  methodu da yukarıda görebiliyoruz.Biz bu methodu kendimiz tanımlayarak yapmak istediğimiz işlemi gerçekleştireceğiz.

Örnek üzerinden gidelim bu methodumuzu nasıl kullanırız nasıl tanımlarız ona bakalım :

Ekran Çıktısı:

null connection

 

Şimdi yukarıda methodun nasıl çalıştığını gördük.Burada self diye bir şey kullandık , bu nedir ne değildir : self bir obje oluşturduğumuzda o objenin referansıdır.Objenin bütün özelliklerini bu referans üstünden kullanabiliriz.

Daha iyi anlamak için  örneğimize bakalım:

Ekran Çıktısı:

X540UB Notebook
Asus
Intel
Belirtilmedi
Belirtilmedi
****************
Lenovo
IDEAPAD 330
Intel
Intel Core i5
Belirtilmedi

Kalıtım (Inheritance)

Kalıtımı şöyle tanımlayalım elimizde bir sınıfımız var bu sınıfın başka bir sınıftan özelliklerini alması olarak tanımlanabilir.

Örnek üzerinden gidelim :

Bir personel sınıfı oluşturalım ,

personel sınıfını oluşturduk , şimdi insan_kaynakları diye bir sınıf oluşturup personel sınıfının özelliklerini alalım..

Burada personel sınıfının bütün özelliklerini insan_kaynakları sınıfına aldık.

şimdi personel sınıfının özelliklerini kullanalım:

Ekran Çıktısı:

Personel Sınıfı Bilgileri
Ad : Null
Soyad: Conenction
Maaş: 3500
Bölüm: İnsan Kaynakları

Görüldüğü üzere  personel sınıfı özelliklerini  insan_kaynakları sınıfında kullandık.

 

Ekran Çıktısı:

Personel Sınıfı Bilgileri
Ad : Null
Soyad: Conenction
Maaş: 3500
Bölüm: Bilgi İşlem

 

Şimdi oluşturduğumuz insan_kaynakları sınıfına özellik ekleyebiliyor muyuz onu görelim :

Yukarıda insan_kaynakları sınıfımızda ikramiye adında bir method ekledik , ikramiye tutarını belirleyip bunu maaş‘a yansıttık.

Ekran Çıktısı:

İkramiye Ekleniyor…
Personel Sınıfı Bilgileri
Ad : Null
Soyad: Conenction
Maaş: 4500
Bölüm: Bilgi İşlem

 

Biz eğer özelliklerini aldığımız methodları başka bir sınıfta tanımlarsak  aynı isimlerle tanımladığımız zaman  özelliğini aldığımız sınıf değil kendi sınıfımız çalışacaktır…

Yani personel sınıfının init methodunu iptal edip , insan kaynakları sınıfının init methodunu kullanıyoruz…

Örnek üzerinden görelim :

Ekran Çıktısı:

İnsan Kaynakları Sınıfının Bilgileri
Ad : Kürşad
Soyad: YILMAZ
Maaş: 3955
Bölüm: Muhasebe Bilgi Sitemleri
Erkek Personel Sayısı: 5
Bayan Personel Sayısı: 2

 

Şöyle bir şey yapmak istersek yukarıda ki örnekte mesela biz eğer  ad,soyad,maaş,bölüm kısmını personel sınıfından almak istesekgeri kalan 2 tane özelliğide insan kaynakları sınıfında eklemek istersek bunu nasıl yaparız ?

Bunun İçin super() fonksiyonundan yararlanırız örnek üzerinden  super() fonksiyonunun kullanımını görelim:

 

Ekran Çıktısı:

İnsan Kaynakları Sınıfının Bilgileri
Ad : Kürşad
Soyad: YILMAZ
Maaş: 3955
Bölüm: Muhasebe Bilgi Sitemleri
Erkek Personel Sayısı: 5
Bayan Personel Sayısı: 2

 

 

Şimdi sizler sınıflar oluşturarak bu sınıflara yeni özellikler ekleyerek  diğer sınıflardan özellik alarak bol bol pratik yapmanızda fayda var yine projelerinizde takıldığınız yapamadığınız kısımları yollarsanız beraber  halledebiliriz…

Leave a reply:

Your email address will not be published.

Site Footer