OOP ne zaman kullanılır?

Merhaba. Öncelikle soru başlığı yanlış olduysa kusuruma bakmayın. Ancak sanıyorum ki en güzel bu şekilde ifade edebilirdim.

Son birkaç gündür Python’da nesne tabanlı programlama dersleri üzerinde çalışıyorum. Ancak bazı arkadaşlar, ufak çaplı programlar için illa ki nesne tabanlı programlama mantığı üzerinde çalışmanın mantıklı olmadıklarını söylüyorlar. Tabi ki kafamda oturmayan bazı konular da bu konudaki fikirlerini destekliyor.

Mesela, kullanıcıdan input alarak bir nesne oluşturmak istediğim zaman, şu şekilde bir kod çalıştım:

class Workers:

    def __init__(self, name, age, job):
        self.name = name
        self.age = age
        self.job = job

        if os.path.exists(path):
            with open("Personel.bin", "ab") as file:
                pickle.dump(f"{self.name, self.age, self.job}", file)
        else:
            with open("Personel.bin", "wb") as file:
                pickle.dump(f"{self.name},{self.age},{self.job}", file)

    @staticmethod
    def show_info():
        if os.path.exists(path):
            with open("Personel.bin", "rb") as file:
                loader = pickle.load(file)
                print(loader)
        else:
            print("Böyle bir dosya henüz yok!")

Bu sayede girilen verileri direk olarak bir dosyaya kaydediyorum. Ama bir arkadaşın söylediği gibi, ortada bir nesne yok!

Hülasa, şu anda kafamda yalnızca bir şirket programı tasarımı var. Girdiler, çıktılar, personel kayıtları, maaş kayıtları, üretilen malların kayıtları gibi özellikleri olacak. Bu gibi ufak çaplı bir projeyi nesne tabanlı programlama mantığı üzerinden mi kodlamam gerekiyor?

Yoksa bildiğimiz fonksiyonlar, ifler-elseler mantığında mı?

Programlama biçimlerini de tam olarak kavramış değilim. Bu konuda cevap verip, bilgisizliğimi mazur görecek arkadaşlara şimdiden çok teşekkür ediyorum.

Tam tersi: Ortada sadece bir nesne var.

Yani calisan bir kod yok. Bu kodu “calistirirsan” hic bir sey yapmaz.

Nesne tabanli programlama mantigi uzerinden kodlamadan once:

  1. Kodlaman veya kodlayabilmen gerekiyor.
  2. Fonksiyon kullanan mantik uzerinden kodlaman gerekiyor.

Yani 1: En az bir sekilde kodlayabileceginden emin olmadigin seyi hangi sekilde kodlamaya kafa yormana gerek yok.

2: OOP soyutlamasina gelmeden once dongu kullanma, degisken kullanma ve fonksiyon kullanma gibi soyutlamalar var.

Ve bu soyutlamalar asagi-yukari bu sirada. Yani degisken kullanmadan fonksiyon kullanmanin, fonksiyon kullanmadan class kullanmanin cok manasi yok.

Programlama paradigmalari tam olarak kavranacak seyler degiller. Muzik turleri gibi dusunebilirsin: Keskin cizgiler yok, tartisma mumkun ve grup (dil) hatta sarki (kod) bazli konusmak gerekebiliyor.


Edit: Bir de soruyu cevaplayayim. Bulunan cozum yani yazilacak kod OOP’ye uygun oldugunda kullanilir. Neler uygun? Kod yazan kisiler arasindaki iletisim yuksek degilse ve bir kisim sorumluluk ayriliklari kod uzerinden yapilacaksa. Yazilan kod islenen dataya ozelse. Ayni birkac degiskeni kullanan birkac fonksiyon gibi karmasik bir yapi varsa. Kolayca modellenemeyecek durum yapilari/makinalari varsa. Dil baska paradigmalara izin vermiyorsa.

1 Beğeni

Hocam o halde, başlangıç aşamasındayken, bahsetmiş olduğum programı çeşitli modüller ve fonksiyonlar kullanarak yazmaya çalışmam doğru olur mu?

Yani genel anlamda nesne tabanlı programlamaya uygun bir şekilde yazmaya çalışmaktansa bu şekilde ufak çaplı denemeler ile temeli sağlamlaştırmak daha mı doğru olur sizce?

Teşekkürler cevabınız için.

Baslangic asamasindaysan programi yazabildigin her sekilde yaz, farklarini kendin gor.

Nesne tabanlamaya (veya baska herhangi bir paradigmaya) uygunluk cogu zaman sekilden ziyade dusunce yapisiyla, cozum mimarisiyle oluyor. C’de OOP, Java’da FP gordum mesela.

Standart bir OOP ornegini alip OOP desteklemeyen bir dilde, veya sinif kullanmadan yazmaya calisabilirsin bi de.

1 Beğeni

Çok teşekkür ediyorum hocam. Söylediğin gibi yapacağım :slight_smile: