Beyin Fırtınası - Nesne Tabanlı Programlama Bize Neler Katar?

Merhaba,

Fikir alışverişi yapalım istiyorum. Nesne tabanlı programlama yapmanın önemi nedir? Değeri nedir? Neden tercih ediliyor olması bu kadar ciddi ve önemli bir seviyede? İş ilanlarında özellikle aranan bu niteliğin kendisini bu kadar değerli kılan özelliği nedir?

Bu forum’a katılmadan önce nesne tabanlı programlama yapmamıştım hiç. Hem zaten kafa yormamış, anlamak için uğraşmamıştım hem de uzak durmuştum. Fakat bu forumda vakit geçirdikçe öğrenmeye teşvik ettim kendimi ve hala da öğreniyorum. Aynı şekilde hiç başlamamış ya da başlayıp yarıda bırakmış okuyucular için fikir olması açısında konuşalım dedim.

Fikirlerinizi bekliyorum. Konuşalım. Tartışalım. Pekişelim.

6 Beğeni

Nesne Tabanli Programlama, (OOP) bir programlama yaklasimi. Is ilanlarinda aranabilecek bir nitelik degil. (Oyle de, programlama yeteneklerinden biri oldugu icin, ozel olarak sayilmiyor)

Kisaca, her islevin nesneler olarak soyutlandigi programlama yaklasimi. Python’da oldukca sik kullaniliyor, bircok modern programlama dillerinde de.

Surada ise cok guzel bilgiler var. (Turkcesi yok gordugum kadariyla. Klavyem Turkce olsa da cevirsem :confused:)

1 Beğeni

bunu iş verenlere sormak lazım. Yurt dışını bilmem ama Türkiye’de bu şekilde görüyorum.

Çevireyim ben sana. Wikipedia da paylaşılır mı TR yamalı hali?

Kendiniz yapabiliyorsunuz diye biliyorum.

Çok genel bir anlatımı var ama, bende şunu buldum:

Birkaç dertten kurtardığı için kullanmayı tercih ediyorum. Biri bunlardan hangisini önce yazmalıyım sorusundan kurtulmak. Diğeri bu değişkeni bu fonksiyonda kullanıyorum ama global ile ilgili bir sıkıntı yaşar mıyım sorusundan kurtulmak. Benim çok nadiren kullandığım fakat ihtiyaç olduğu zaman muhteşem bir çözüm olan ana ortaya atılma amacı ise şu: Nesne üretmek. Mesela Django channels’da sınıf tabanlı Consumer çağrılabiliyor. Bir bağlantı durumunda hemen bir nesne oluşturuluyor.

5 Beğeni

Genel olarak edindiğim bilgiye göre (aşşağıda yazdıklarım kendi görüşüm). İki konu altında incelemek gerek sanırım.

1 - PROSEDUREL YAKLAŞIM

her fonksiyon bir işi yapıcak şekilde karar ve döngü blokları altında inşa edilmiş bir yaklaşım izler.

2 - OOP

Polymorphism yaklaşımı ile kodun okunurluğunu ön planda tutmayı amaçlar. Zaten OOP teknolojisinde gelişmiş ve neyi nerede kullanıcağını bilen bir programcı coğu karar bloklarından ve kod salatasından kurtulur. Herhangi bir nesne üretirken onu implemente edip yeni özelliklere acık ve esnek bir kod olması açısından güzel özellikleri vardır. Örneğin miras almak, veriyi güvende tutmak… vs

3 Beğeni

güzel bilgiler. teşekkür edeirm.

bende bu ikisinin faydasını gördüğüm de mevzu muhteşem dedim.

Bu, oop teknolojisini özgürleştirir anlamını mı taşıyor?

Özür dilerim yanlış ifade ettim sanırım. Demek istediğim programcı eğer müşteri yeni bir özellik veya ekleme yaptırmak istediğinde bunu koda eklemeyi kolaylaştıran bir yapı sağlaması. Zaten bir program kodlarını debug ederken veya özellik eklerken çok zaman harcanıyor.

Not: prosedurel yaklaşımdada takılabir-cıkarılabilir olması acısından bir fonksiyon bir işi yapmalı. Ama polymorphism daha cok insan okuyucularına hitab ediyo sanırım

1 Beğeni

belki proje hali hazırda başlatılmıştır ve kullandıkları paradigmayı kullanabilen kişileri arıyorlardır :confused: başka şey gelmedi aklıma

2 Beğeni

10 kişinin ortalama 4.98 puan verdiği (5 üzerinden) freelancer temel seviye Python biliyorum diyor. Başlangıç fiyatı 50TL. Üstelik Pygame, PySide2, PyQt5, Flask vs. biliyormuş. Ama OOP hakkında bir şey göremiyorum.

1 Beğeni

Yanlış anlamayın lütfen ama polymorphism ile neyi kastettiğinizi pek anlayamadım.

Şununla alakası olabilir : https://stackify.com/oop-concept-polymorphism/

Gencay polymorphism’in ne olduğunu bildiğimi düşünüyorum. Sadece bildiğimi düşündüğüm şey ile polymorphism hakkında söylenen şey biraz uyumsuz gibi geldi bana veya ben anlayamadım tam.

2 Beğeni

Anlatmak istedigin seyi tam anlamadim. Ama genelde insanlar portfolyolarinda OOP hakkindaki bilgileri yazmazlar.

Ben de :confused:

Ben butun programlama paradigmalarinin oldugu konudan bahsediyorum.

Ilginc.

O kadar cok var ki saymaya usendim. Ama 2 tane degil.

1 Beğeni

Benim polymorphism teriminden anladığım şey, bir fonksiyon isminin farklı iç yapıları olan veri tipleri için ortak bir dış arayüz sunmasıdır. Yani ilgili fonksiyonun birden çok veri tipi için çalışabilmesini sağlayan özelliği, o fonksiyonun “polymorphic” olma özelliğidir.

3 Beğeni

Bir nesnenin başka bir nesne gibi davranabilmesi, kullanılabilmesi. Biraz daha açık bir ifade ile, alt sınıfların, üst sınıflara ait olan davranışlarını başka bir biçimde gerçekleştiriyor olması olayıdır.

image

Yukarıda ILoggerService adında bir Interface ve içerisinde de log() adında metotu bulunmaktadır. Bu interface’den türetilen DatabaseLoggerService ve FileLoggerService sınıfları, metotu implemente etmek(uygulamak) zorundadır ve kendince uygulayacaktır ki bundan dolayı da bu metota ait farklı davranışlar söz konusu olacaktır.

kaynak: https://github.com/yusufyilmazfr/tasarim-desenleri-turkce-kaynak#polymorphism-çok-biçimlilik

4 Beğeni

Ben java’dan bir nesnenin baska bir nesne gibi davranabilmesi olarak ogrenmistim. Sanirsam, OOP’de farkli, FP’de farkli bir kavram.

1 Beğeni

Yanılmıyorsam nesnenin başka bir nesne gibi davranması değil, fonksiyonun bir çok veri tipi için çalışabilmesi özelliği.

Mesela aşağıdaki fonksiyon da polimorfiktir.

def topla(x, y):
    if type(x) == type(y) and all(hasattr(i, "__add__") for i in (x, y)):
        return x + y
    if all(isinstance(i, dict) for i in (x, y)):
        x.update(y)
        return x
    
    
print(topla("Hello", "World"))
print(topla(1, 2))
print(topla([1], [2]))
print(topla((1, ), (2, )))
print(topla({"a": 1, "b": 2}, {"c": 3, "d": 4}))
2 Beğeni