14 Ağustos 2008 Perşembe

Pyton ve Nesnel Programlama

Nesnel programlama sizin programınızı gerçek dünyadaki sistemler gibi modelleyebilmenizi sağlayan bir güzelliktir , kim icat ettiyse elleri öpülesi mukaddes bir insandır.

  • Nesnel yaklaşımda bir sınıf yaratılır, sınıf bir genellemedir. Belli bir grup nesnenin ortak özelliklerini barındırır(örn: organism sınıfı bütün organizmalarda bulunan işlem ve özellikleri barındırır.)

  • Nesne bu sınıf'ın bir nesneye uygulanmasıdır animal = organism() yada human = organism() dediğimiz zaman buradaki animal ve human birer nesnedir.

  • Sınıf özellikleri bu sınıfa ait özelliklerdir. Örneğin her organizmanın bir yaşı vardır. Bu yaş bigisini organism sınıfı üzerinde age olarak tanımlarsak [1] daha sonra bu sınıfa ait nesnelerin age özelliğini animal.age şeklinde çağırabiliriz.

  • Bir sınıf kendi özelliklerini kendi kendine de değiştirebilir. Bu durumda self.ozellik = hede şeklinde kullanılır. Buradaki aslında self sınıfın kendisini ifade eder. Eğer bir fonksiyon içerisinde self. kullanılacaksa o fonksiyonun argümanı içerisinde self bulumalıdır.[2]

  • Bir nesne oluşturuluyorken __init__ fonksiyonu otomatik olarak çağırılır.

  • Bir nesne siliniyorken __del__ fonksiyonu otomatik olarak çağırılır. Eğer del(nesne) kullanılarak nesne silinmez ise nesne program sonunda silinir.


  • __init__ ve __del__ fonksiyonları self argümanı ile belirtilmek zorundadır.

  • örnek olarak bir organizma sınıfı şu şekilde tanımlanabilir.
    class organism:
    def __init__(self):
    print "ben doğdum"
    self.age = 0 [1]
    def grow_up(self,years):
    self.age += years
    def __del__(self):
    print "ben öldüm"
    animal = organism()
    print "animal age is :",animal.age
    animal.grow_up(3) # grow up 3 years
    print "animal age is :", animal.age

5 yorum:

  1. girintiye dikkat!.. malum python kodluyorsunuz. :)

    YanıtlayınSil
  2. opppsss :) düzelttim uyarı çin teşekkürler.

    YanıtlayınSil
  3. self.age = 0 [1]

    Buradaki [1] fazladan sanırım :)

    Ayrıca, sınıf içerisinde tanımladığımı tüm fonksiyonlara "self" parametresi göndermek zorunda mıyız? Eğer öyleyse -ki öyle görünüyor- bu saçma değil mi?

    YanıtlayınSil
  4. Orada ki self şu işe yarıyor.
    self.age=0 diyorsan pythona diyorsun ki ben buna dışarıdan ulaşacam bana yer ayır.
    kopek=organizma()
    kopek.age derken kopek self ile ayırmış olduğun yere geçiyor.
    Yani self kullanmazsan dışarıdan erişemezsin.
    Umarım karıştırmamışımdır :S

    YanıtlayınSil
  5. http://www.freenetpages.co.uk/hp/alan.gauld/tutdata.htm#class şuradaki örnekleride incelersen diğer dillerde de benzer kullanımlar olduğunu göreceksin.

    YanıtlayınSil