10.08
Python’u ilk duyduğum da, Python’un nesne tabanlı olduğunu üstüne basa basa söylediler ama şu ana kadar uğraştığım birçok projede olsun, yazdığım kodların çoğunda olsun, “Ben bunu nesne tabanlı olsun diye yapıyorum.” diyerek yapmadım ve nesne tabanlı programlamayı da kullanmanın ne kadar büyük bir kolaylık getirdiğinin de farkında değilmişim.
Nesne tabanlı programlamayı basitçe, kendi dünyanıza ekleyeceğiniz nesnelerin yapım aracı olarak düşünebilirsiniz. Ben dünyamda kare istiyorum ve karemin alanı, çevresi belli olsun diyebilirsiniz. Eski bilgilerinizle böyle bir şey isteğiniz de fonksiyonlar yazıp, sonra çağırımlar yapabilirdiniz ama artık nesne tabanlı programlamayla, fonksiyon çağırımlarıyla uğraşmadan direk “a = kare(2) (2 burada kenarın uzunluğu)” diyebilirsiniz. Kafanızda “Nasıl olacak bu iş?” diye bir soru oluştuysa hadi bakalım nasıl oluyormuş.
Şu ana kadar sınıf(class) kullanmadıysanız sınıflara merhaba diyin. Eğer kullandıysanız, (Arayüz falan yazarken) belki de bilmeden kullandınız.(Tıpkı benim gibi
) Sınıflar nesneler üretmenin en güzel yoludur. Gelin bir kare nesnesinin sınıfını yazalım.
class kare(): def __init__(self, kenar): self.kenar = kenar def cevresi(self): return self.kenar*4 def alani(self): return self.kenar*self.kenar
Yaratığımız bu kare sınıfının en çok kafa karıştıran yeri “__init__” kısmı olabilir. Peki nedir “__init__” kısmı ? Basitçe burayı bir kitabın içindekiler bölümü olarak görebilirsiniz. Burada bizim kare için sadece “kenar” yerimiz var. Bir başka soru neden “self.kenar = kenar” dediğimiz olabilir. self ile sınıf içinde fonksiyonlara ulaşmak için global gibi bir değer kullanmak yerine kolayca fonksiyonlar arasında bu değerleri kullanabiliyoruz.
Peki son olarak gelin a bir kare nesnesi olsun. Bunu yapmak için “raw_input” kullanabiliriz.
b = int(raw_input("Kare'nin kenarı kaç olsun? : ")) a = kare(b)
Bundan sonra yapacağımız kare sınıfındaki fonksiyonları çağırmak olacaktır. Onu da şöyle halledebiliriz:
print "Çevresi: %s Alanı: %s" % (a.cevresi(), a.alani())
Kare cismimizi yaratarak nesne tabanlı programlama’yı az da olsa öğrenmiş olduk.
Not: Sınıfların içine yazdığımız fonksiyonlarda, __str__ adlı bir fonksiyon olduğunu ve bunla str(a) dediğinizde bir olayı başlatabileceğinizi biliyor muydunuz ? __str__ kısmını __int__ yapabilir ve daha birçok built_in fonksiyonlarla oynayabilirsiniz.
Python, Python, Python
Benzer yazılar:
Yorum yok.
Yorumla!