Blogunuzdan, hem zorunlu hem de işlevsel programlamaya aşina olduğunuz ve nesne yönelimli programlamaya dahil olan temel kavramlara aşina olduğunuz anlaşılıyor, ancak ne ile ilgili olarak "tıklatan" hiç anlamadınız kullanışlı kılar. Bu bilgi açısından açıklamaya çalışacağım ve umarım sizin için yararlı olacağını umuyorum.
Özünde OOP, zorunlu etki alanını modelleyen "akıllı" veri yapıları oluşturarak yüksek karmaşıklık derecelerini daha iyi yönetmek için zorunlu paradigmayı kullanmanın bir yoludur. (Nesne yönelimli bir prosedür dışı standart) programında, iki temel şey vardır: değişkenler ve onlarla ne yapılacağını bilen kod. Kod, kullanıcıdan ve diğer çeşitli kaynaklardan girdi alır, değişkenlerde saklar, üzerinde çalışır ve kullanıcıya ya da çeşitli başka yerlere giden çıktı verilerini üretir.
Nesneye yönelik programlama, bu temel kalıbı alarak ve daha küçük ölçekte tekrarlayarak programınızı basitleştirmenin bir yoludur. Tıpkı bir program gibi, onunla ne yapılacağını bilen kod içeren büyük bir veri topluluğudur, her nesne, onunla ne yapılacağını bilen küçük bir veri parçasıdır.
Sorunlu alanı daha küçük parçalara bölerek ve olabildiğince fazla verinin doğrudan onunla ne yapılacağını bilen koda bağlı olduğundan emin olarak, işlemin bir bütün olarak ve alt konularla ilgili olarak düşünmesini çok daha kolaylaştırırsınız. süreci oluşturan konular.
Verileri nesne sınıflarına göre gruplayarak, bu verilerle ilgili kodu merkezileştirerek ilgili kodu hem bulmayı hem de hata ayıklamayı kolaylaştırabilirsiniz. Verileri erişim belirleyicilerinin arkasına sararak ve yalnızca yöntemlerle (veya diliniz destekliyorsa özellikler) kullanarak erişerek, veri bozulma olasılığını veya değişmeyenlerin ihlal edilme ihtimalini büyük ölçüde azaltırsınız.
Ve kalıtım ve polimorfizm kullanarak, önceden var olan sınıfları yeniden kullanabilir, orijinalleri değiştirmek zorunda kalmadan veya her şeyi sıfırdan yeniden yazmak zorunda kalmadan kendi özel gereksinimlerinize göre özelleştirebilirsiniz. ( Asla yapmanız gereken bir şey değil , eğer kaçınabiliyorsanız.) Sadece temel nesnenizi anladığınızdan veya katil kangurularla sonuçlandığınızdan emin olun .
Bana göre, bunlar nesne yönelimli programlamanın temel ilkeleridir: karmaşıklık yönetimi, kod merkezileştirme ve nesne sınıfları, kalıtım ve polimorfizm yaratma yoluyla gelişmiş sorun-alan modellemesi ve kapsülleme ve güç kullanımı ve kontrolden ödün vermeden arttırılmış güvenlik. özellikleri. Umarım bu, bu kadar çok programcının neden faydalı bulduğunu anlamanıza yardımcı olur.
EDIT: Joel'in yorumdaki sorusuna cevap olarak,
Esas olarak zorunlu bir programdan farklı olan bir "nesne yönelimli program" ın (ana hatlarıyla belirttiğiniz bu fantezi tanımların dışında) neler içerdiğini açıklayabilir misiniz? "Topun yuvarlanmasına nasıl karar veriyorsunuz?"
Burada küçük bir sorumluluk reddi. “Nesne yönelimli bir program” modelim temelde eski Delphi ekibi üyeleri tarafından oluşturulduğundan beri C # /. NET modeline çok benzeyen Delphi modelidir. Burada söylediklerim diğer OO dillerinde geçerli olmayabilir veya geçerli olmayabilir.
Nesneye yönelik bir program, tüm mantığın nesnelerin etrafında yapılandırıldığı programdır. Tabii ki bu bir yerde önyüklenmeli. Tipik Delphi programınız, adlandırılmış bir singleton nesnesi oluşturan başlatma kodunu içerir Application. Programın başlangıcında, çağırır Application.Initialize, daha sonra Application.CreateFormbaştan belleğe yüklemek istediğiniz her form için bir çağrı yapar ve ardından Application.Run,ana formu ekranda görüntüler ve herhangi bir çekirdeği oluşturan giriş / olay döngüsünü başlatır. etkileşimli bilgisayar programları.
Uygulama ve formlarınız işletim sisteminden gelen olayları araştırır ve nesnenizdeki yöntem çağrılarına dönüştürür. Çok yaygın olan bir şey, olay işleyicilerin veya .NET-speak'te "delegelerin" kullanılmasıdır. Bir nesnede, "X ve Y yapın, ancak bu belirli olay işleyicisinin atanıp atanmadığını kontrol edin ve varsa arayın." Diyen bir yöntemi vardır. Bir olay işleyicisi, bir nesnenin davranışını genişletmek için kullanılan, yönteme referans ve nesne örneğine referans içeren çok basit bir kapatma olan bir yöntem işaretçisidir. Örneğin, formumda bir düğme nesnesi varsa, davranışını, düğmesi tıklandığında başka bir nesnenin bir yöntemi yürütmesine neden olan bir OnClick olay işleyicisi ekleyerek özelleştiririm.
Böylece, nesne yönelimli bir programda, işlerin çoğu, belirli sorumluluklara sahip nesneleri tanımlamak ve bunları yöntem işaretçileri aracılığıyla veya bir nesnenin doğrudan başka bir nesnenin ortak arabiriminde tanımlanmış bir yöntemi çağırarak birbirine bağlamak suretiyle gerçekleştirilir. (Ve şimdi kapsüllemeye geri döndük.) Bu, üniversitede OOP derslerine başlamadan önce hiçbir geri dönüş kavramı olmadığı fikrimi.