Class'ları kullanacak alan bulamamak

Konu biraz saçma oldu gibi fakat gerçekten benim için bir sorun.

Çoğu şeyi birden fazla kez kullanmıyorum. Kullandıklarımı da fonksiyonlarla yapabiliyorum. OOP’ye yeni geçtiğim için birkaç deneme yaptım ve amacıma ulaştım da fakat çok anlamsız / gereksiz geliyor. Class’lar ne gibi durumlarda kullanılabilir?

Sınıflar aslında gerçek veya soyut nesneleri modellemek için ortaya atılmış. Gerçek nesneye arabayı verebiliriz. Arabanın özellikleri:

  • Hız
  • Beygir gücü
  • Motor hacmi

Arabanın işlevleri(Metodları):

  • İleri git
  • Geri git
  • Vites değiştir
  • Bagajı aç

Biz arabayla ilgili bir uygulama geliştiriyorsak arabaya ait kullanacağımız metodları ve özellikleri barındıran bir sınıf tanımlamayı tercih ederiz. Elbette bu işlerin hepsini sınıflar olmadan da yapabiliriz. Ancak 200 tane arabaya ihtiyacımız olduğunda sınıf kullanmak daha okunaklı ve verimli oluyor.

Bir başka örnek daha önce yazdığım satranç uygulamasından geliyor. Tahtada 64 tane kare var. Her kare için belirli özellikleri tek tek tanımlamak yerine bir sınıf tanımlamak daha kolay oldu.

4 Beğeni

Bunu fonksiyonla da yapamaz mıyız? Ayrıca fonksiyon da birden fazla kez kullanılabiliyor.

class Araba:
     def __init__(self, hız, beygir_gucu, motor_hacmi):
          self.hız = hız
          self.beygir_gucu = beygir_gucu
          self.motor_hacmi = motor_hacmi

     def ileri_git(self):
          pass
     def geri_git(self):
          pass
     def vites_degistir(self):
          pass

araba_1 = Araba(5, 10, 15)
araba_2 = Araba(8, 16 24)
araba_3 = Araba(2, 4, 6)

if __name__ == '__main__' :   
    # oluşturulan arabaları amaca göre kullanmak... 
    # fonksiyonların içeriğini genişletip düzenleyerek yarış oyunu bile yapılır mesela buradan :) 

Bunu bir fonksiyon ile yapar mısınız mesela?

hepsinin bir özellikleri olduğunu varsay. değişkenleri…
hasser arkadaşımız dediği gibi

fazla işlem yapamazsın ve eğer örneğin misal vermek gerekirse pyQt5 bilyo msn
orda her buton, etiket her şey bir class. nitekim oyunlarda da

3 Beğeni

Evet PyQt5 çok iyi bir örnek. Kütüphane baştan aşağı OOP ile işliyor.

1 Beğeni

Anlamlı gelebilmesi için nesneye yönelik programlamanın mantığı üzerine kafa yorulması gerekiyor diye düşünüyorum. Bunun için de temel prensipleri anlatan ingilizce şu yazıyı okumanızı ve daha detaylı kavramlar içinde bu oynatma listesinden yararlanmanızı tavsiye ederim.

1 Beğeni

Az kod, cok is.

1 Beğeni

İlk başlarda çok normal bir bakış açısı. Eğer hobi olarak yapıyorsanız boşverin öğrenmeyin. İşiniz düştüğünde yani “İşte burada bir sınıfa ihtiyacım var.” dediğinizde gelir öğrenirsiniz. Nasıl olsa belgeler burada veya başka bir yerde duracak.

1 Beğeni

Siz, daha yeni öğrendiğiniz için biraz “gereksiz” bulabilirsiniz, ben de başlarda nerede kullanacağımı bulamamıştım ama Nesne Tabanlı Programlama Anlayışı ile yazılmış binlerce program olduğunu da unutmamak lazım.

Mesela herhangi bir işletim sisteminin en temel özelliği olan “bir programı birden fazla kez çalıştırabilme”, Nesne Tabanlı Programlamayı gayet güzel özetliyor aslında. (İsterseniz detaylandırabilirim)

Hatta bir zaman sonra, öyle hoşuma gitmeye başladı ki, kullanılmasına gerek olmayan yerlerde bile kullanır olmuştum. Çünkü fonksiyonları sıralamak, isim alanlanlarını eşitlemek için global ve nonlocal deyimlerini kullanmak ve programı okunaklı hale getirmeye çalışmak gibi pek çok dertten ya kurtarıyor, ya da kolaylaştırıyor. Yine de işin dozunu kaçırmamak lazım. :slight_smile:

Özetle Nesne Tabanlı Programlama, uzun vade de büyük faydalarını göreceğiniz bir yöntem. Tavsiye ederim.

5 Beğeni

Django’da severek kullanıyoruz. Fonksiyonlar ile 50 satırda yapılacak işi 5 satır sınıf koduyla yapabiliyorsunuz. Bunun için size Django Rest Framework (DRF) öğrenmeye başlamanızı tavsiye ederim.

1 Beğeni

Cevaplarınız için teşekkürler.