Bir kişi sıklıkla OOP'un doğal olarak insanların dünya hakkında düşündüklerine karşılık geldiğini duyabilir. Ancak bu ifadeye kesinlikle katılmıyorum: Biz (ya da en azından ben) dünyayı karşılaştığımız şeyler arasındaki ilişkiler açısından kavramlaştırıyoruz , ancak OOP'un odağı bireysel sınıfları ve hiyerarşilerini tasarlıyor.
Günlük yaşamda, ilişkilerin ve eylemlerin çoğunlukla OOP'da ilgisiz sınıfların örnekleri olabilecek nesneler arasında bulunduğunu unutmayın. Bu tür ilişkilerin örnekleri: "ekranım tablonun tepesinde"; “Ben (bir insan) bir sandalyede oturuyorum”; "bir araba yolda"; "Klavyede yazıyorum"; "kahve makinesi suyu kaynatıyor", "metin, terminal penceresinde gösterilir."
İki değerli (örneğin, "Size çiçek verdim" de olduğu gibi üç değerlikli) fiillerin fiilde bir fiil sonuç / eylem üretmek için iki nesne üzerinde işlem yapan eylem (ilişki) olduğu fiilleri olduğunu düşünüyoruz. Odak eylem ve iki (ya da üç) [gramer] nesneleri eşit öneme sahiptir.
OOP ile bir nesneyi (isim) ilk bulmanız ve başka bir nesne üzerinde bir işlem gerçekleştirmesini istemeniz ile zıtlaştırın. Düşünme biçimi, isimler üzerinde çalışan eylemlerden / fiillerden isimler üzerinde çalışan isimlere kaydırılır - sanki her şey pasif ya da yansımalı bir sesle söyleniyormuşçasına, örneğin, "metin terminal penceresi tarafından gösteriliyor". Veya belki de "metin kendini terminal penceresine çekiyor".
Odak sadece isimlere kaydırılmamış, aynı zamanda isimlerden birine (gramer konusu diyelim) diğerinden (gramer nesnesi) daha yüksek "önem" verilmiştir. Bu nedenle birinin terminalWindow.show (someText) veya someText.show (terminalWindow) diyip söylemeyeceğine karar vermesi gerekir. Fakat neden insanlar gerçekten gösterdiği zaman (terminalWindow, someText) işlemsel sonuçlara neden bu kadar önemsiz kararlar yüklüyor? [Sonuçlar operasyonel açıdan önemsiz - her iki durumda da metin terminal penceresinde gösteriliyor - ancak sınıf hiyerarşilerinin tasarımında çok ciddi olabilir ve "yanlış" bir seçim kodlamada zor ve zor olabilir.]
Bu nedenle, OOP'yi (sınıf tabanlı, tek sevkıyatlı) yapmanın ana yolunun zor olduğunu, çünkü UNNATURALAL olduğunu ve insanların dünya hakkında ne düşündüğüne uymadığını iddia ediyorum. CLOS'tan gelen genel yöntemler benim düşünme biçimime daha yakın, fakat ne yazık ki, bu yaygın bir yaklaşım değil.
Bu problemler göz önüne alındığında, şu anda OOP yapmanın ana yolunun bu kadar popüler olması nasıl / neden oldu? Ve ne, eğer bir şey olursa, onu tahttan çıkarmak için yapılabilir mi?