Python ile Nesne Tabanlı Programlama (Object Oriented Programming)
Bu yazımda sizlere Python programlama dilinde Nesne Tabanlı Programlama nasıl yapılır anlatmaya çalışacağım
Bu yazımda sizlere Python programlama dilinde Nesne Tabanlı Programlama nasıl yapılır anlatmaya çalışacağım
Object oriented programming (OOP) ifadesini Türkçe’ye Nesne Yönelimli Programlama ya da Nesne Tabanlı Programlama olarak çevirebiliriz.
Aslında gerçek hayattan örnekler ile ilerlemek daha faydalı olacaktır. Gerçek hayatta kullanılan herşey birer nesne (obje) dir. Mesela telefonumuz bir nesnedir. Bu nesnenin belirli özellikleri ve yaptığı işlevler vardır. Telefonunuzun markası , şarj süresi ve depolama kapasitesi onun özellikleridir. Telefonunuz ile fotoğraf çekmeniz ve arama yapmanızda bu nesnenin davranışları ve faaliyetleridir. Bizim Python’da oluşturacağımız nesnelerin de özellikleri (attributes) ve davranışları (methods) olacak.
Nesne Tabanlı Programlama ne işimize yarayacak?
Bir okulda çalışan insanların ve öğrencilerin verilerini tutup üzerinde işlem yapacağınızı farz edelim. Nasıl bir kod yazmamız gerekirdi?
Örneğin üç öğrencinin özelliklerini yazmak bile bu kadar sürdü. Bir okulda 1000 öğrenci olduğunu düşünün. Ayrıca bir okulda sadece öğrenciler bulunmuyor. Aslında bir okulu 4 sınıfa ayırabiliriz. Bir okulda öğrenciler, öğretmenler, yönetim ve hizmetliler olmak üzere 4 sınıf insan vardır. Bu 4 sınıfın aynı ve ayrı özellikleri olacak elbette. Mesela isim, soyisim ve yaş gibi benzer özellikleri olacak. Ama öğrencilerin not ortalaması gibi özellikleri olacakken, öğretmenlerin maaşları gibi özellikleri olacak. Okulda çalışan bütün insanlara bu şekilde tek tek değişken atayarak veriler tanımlarsak 1000 kişi olduğunda işin içinden çıkılamaz hale gelecektir. İşte burada Nesne Tabanlı Programlama imdadımıza yetişiyor ve işlerimizi kolaylaştırıyor.
Daha iyi anlaşılması için hadi hemen bir öğrenci sınıfı (class) tanımlayalım
Class kelimesini kullanarak bir öğrenci sınıfı tanımladık. Her öğrencide bulunmasını belirlediğimiz 4 tane özelliğini girdik (isim, soyisim, yaş ve not ortalaması). Resimde gördüğünüz şekilde öğrencinin özelliklerine erişebildik.
Şimdi isimleri Mehmet ve Ali olacak şekilde iki tane öğrenci nesnesi oluşturalım
Burada iki öğrenci nesnesi oluşturduk. Bu şekilde bir çok öğrenci nesnesi oluşturabiliriz ama hepsinin değerleri aynı oluyor. Bizim her öğrencinin özelliklerini farklı şekilde yapabiliyor olmamız lazım. Aşağıdaki şekilde yaptığımızda oluşturduğumuz her nesnenin farklı özellikleri olabilecek.
Bakın burada öğrenci sınıfımızdan iki tane nesne oluşturduk. İstediğimiz kadar nesneyi kolaylıkla bu yöntemi kullanarak oluşturabiliriz. Şimdiye kadar görmediğiniz __init__() isiminde bir metot eklendi. Bu metot bizim sınıfımızın ana yapısını oluşturuyor. Ayrıca daha önce görmediğiniz self kelimesini kullanmaya başladık. Bu self kelimesi bizim nesnelerimizi tanımlıyor.
Aslında self.nesnenin_ismi = isim şeklinde yazılmasına gerek yok. Anlaşılması için böyle yazdım.Burada self.isim zaten nesnenin ismi demek. Biz şu ana kadar sadece nesnelerin özelliklerini (attributes) belirledik. Yazının başında belirttiğim gibi nesnelerin faaliyetleri ve işlevleri (methods) de olacak.
Burada iki öğrenci nesnesi oluşturduk. Öğrencilerin bilgilerini gösteren info isminde bir metot tanımladık. Metotlar aslında sınıflar içinde tanımlanan fonksiyonlardır. Bir fonksiyon sınıf içinde tanımlanmış ise metot ismini alır.
Metotları daha iyi anlamanız için yeni bir öğretmen sınıfı oluşturalım ve öğretmenlerin maaşına %30 zam yapacak bir metot yazalım
Evet Öğretmen sınıfı oluşturup bir nesne oluşturduk. Zam isminde bir metot tanımladık. Bu metot öğretmenin maaşını %30 oranında artırıyor. Biraz yukarıda metot ve fonksiyonların farkından bahsettik.Daha iyi anlaşılması için şimdi onunla ilgili bir örnek yapalım
Örnekte de görüldüğü gibi eğer sınıf içinde bir fonksiyon tanımlarsak bu metot oluyor. Sınıfın dışında tanımladığımız fonksiyonun sınıf ile bir ilişkisi olmuyor. Gördüğünüz gibi fonksiyon ve metotların çağırılması da birbirinden farklı.
Evet bu yazımızda Nesne Tabanlı Programlamaya giriş yapmış olduk.Bir sonraki yazımızda da ;
Encapsulation — Kapsülleme (Erişimi Engelleme)
Inheritance (Kalıtım)
Abstract Class — Soyut Sınıflar
Overriding (Üzerine Yazma-Öncekini İptal Etme)
Polymorphism — Çok Şekillilik
Konularını anlatıyor olacağım.Bir sonraki yazıda görüşmek üzere …
Udemy platformunda şu an 18'den fazla İngilizce ve Türkçe kursum bulunmakta.Dünya genelinde 100.000'den fazla öğrenciye programlama, yazılım ve e-ticaret alanlarında eğitimler vermekteyim.
Udemy eğitimlerime Mehmet TEK — Udemy adresinden ulaşabilirsiniz.Görüşmek üzere …