Nesne yönelimini uygun bağlamında düşünmek için, bir soyutlama seviyesini yükselterek genel olarak programlama hakkında konuşalım, tamam mı?
OO veya fonksiyonel yaklaşımlar alsanız da, programınız bir şeyler yapmak zorundadır , değil mi? Programın amacı, belli bir uyaran dizisi verilen belli davranışları sergilemektir . Dolayısıyla programların var olmasının sebepleri, bir şeyler yapmalarıdır . Buradaki anahtar kelime davranış .
Bir programın hangi davranışları uygulaması gerektiğine ek olarak, programınızın genellikle belirli nitelikleri sergilemesi gerekir. Örneğin, bir kalp monitörü programının gerekli davranışları yapması yeterli değildir - genellikle gerçek zamanlıya yakın bir zamanda çalışması için yeterince hızlı bir şekilde performans göstermesi gerekir. Bir programın sergilemesi gereken diğer "nitelikler": güvenlik, esneklik, modülerlik, genişletilebilirlik, okunabilirlik vb. Bunlara Mimari Kalite Nitelikleri diyoruz . Bu nedenle programımızın belirli davranışsal (işlevsel) hedeflere ulaşmasının yanı sıra belirli nitelikleri (işlevsel olmayan) sergilemesi gerektiğini söyleyebiliriz.
Şimdiye kadar, bunların hiçbiri OO hakkında konuşmadı, değil mi? Şimdi bunu yapalım.
Bir mühendis gereklilikleri (davranışsal, AQA'lar, kısıtlamalar, vb.) Anladıktan sonra, soru ortaya çıkar: Kodumu nasıl kullanmalıyım ki, faydalı bir program olmak için gereken nitelikleri sergilemesinde yapması gereken her şeyi yapmalı mı? Nesneye yönelik programlama, programınızın işlevselliğini birlikte çalışan nesnelerin birleştirici modüllerinde düzenlemek için bir stratejidir. İşlevsel programlama, programınızın işlevselliğini organize etmek için başka bir stratejidir ve bunu farklı bir şekilde yapar. Her iki stratejinin de güçlü ve zayıf yönleri vardır.
İşlevsel kavramlarda son zamanlarda bir yeniden dirilişe tanıklık ediyoruz, çünkü diğer sebeplerin yanı sıra, büyük ölçüde dağılmış işlem için çok çekici olan güçlü yanları var.
Fakat OO'ya geri dönersek, artık “gerçek dünyayı” modellemesinin zorunlu olmadığını görebilirsiniz; Programın davranışını, programınızın herhangi bir sayıda iş hedefine ulaşmak için gereken nitelikleri sergileyebilmesi için organize etmektir. TDD, DDD ve BDD gibi teknikler, nesnelerimizi en iyi şekilde nasıl organize edeceğimizi keşfetme yöntemlerimizdir. İlkeler, Desenler ve Uygulamalar , Testlerle Yönlendirilen Nesneye Yönelik Yazılımların Artırılması , Örneklere Göre Belirleme ve Etki Alanına Dayalı Tasarım gibi kitaplar , nesne yönelimi teorisini ve pratiğini davranış odaklı tasarıma odaklanarak düzenler.
"Gözlemciler, yöneticiler, fabrikalar, vb." Gibi şeyleri okuduğunuzda, programınızın yararlı olması için gerekli olabilecek belirli nitelikleri sergilemesine yardımcı olan OO modellerini uygularsınız. İhtiyaçlarınızın, kalıbın çözdüğü sorunla eşleşmesi koşuluyla, “çalışma eğiliminde” olan “kanıtlanmış tarifler” dir.
Umarım, OO ile işlevsel paradigmalar arasında çok taraflı görünmeden OO'nun ne anlama geldiğini anlamanıza yardımcı olur.