En boy yönelimli, konu yönelimli ve rol yönelimli programlama arasındaki farklar nelerdir?


14

Bu üç paradigmayı anlatan birçok makale olduğunu biliyorum ama şematik bir açıklama arıyorum.

Burada en boy yönelimli programlamanın birkaç çok iyi açıklaması var, bu yüzden Stack Overflow'daki insanların sunmaya alışkın olduğu yüksek kaliteli cevapları alma umuduyla bu soruyu soruyorum.


Bu muhtemelen daha çok bir programcıdır. Bir soru, ama aynı zamanda gerçekten açık uçlu. Bkz. Stackoverflow.com/faq#dontask - "Sorularınız makul bir şekilde kapsamlandırılmalıdır. Sorunuzu cevaplayan bir kitabın tamamını hayal edebiliyorsanız çok fazla soru soruyorsunuz."
Merlyn Morgan-Graham

Orijinal Thomas

Soruma kısa bir cevap da hayal edebiliyorum. Örneğin, Aspect-based-programming'i şöyle tarif ederim: Bu, diğer işlem birimlerinden önce ve sonra nokta kesimleri aracılığıyla modüler bir şekilde "işleme-birimleri" eklemenin bir yoludur. Bana göre kural tabanlı programlamaya çok benziyor, örneğin Inform7 programlama dili. inform7.com/learn/man/doc188.html

Yanıtlar:


9

Bu konuda bir kitap yazarak buna cevap verilebilir. Ancak, burada temel bir karşılaştırma

1. Konuya Yönelik Programlama

Konu Odaklı Programlama, aşağıdaki gibi nesneye yönelik radikal bir harekettir. OO'da, nesneler içsel olarak tanımlanır (yani, bağımsız olarak tanımlayan bir modele dayanarak). ve buna dayanarak özellikleri (özellikleri) ve yöntemleri (davranışı) türetilir. Uygulama sadece kullanımı yaparözellikleri ve davranışları. Bunun aksine, konuya yönelik programlamada, böyle bir izolasyonda hiçbir nesne yoktur (ve modellenmiştir). Bu süreçte, ancak nesnelerin davranışları, orijinal nesnenin yazarının kapsamı ve kontrolünün ötesinde nesnelerin diğer çeşitli "özneleri" tarafından sağlanır. "Bence bu, burada tartışılanlara kıyasla kalıtım şablonlarını tanımlamanın ötesinde bir yol olurdu.

Tartışmasız terimlerin (ve kavramın) kökeni " Konu Odaklı Programlama: Saf Nesnelerin Eleştirisi , William Harrison ve Harold Ossher" makalesinden gelir. İşte başka bir iyi makale . Kişisel olarak bunun teorik bir çerçeve olduğuna inanıyorum. Herhangi bir dil / uygulama olup olmadığını bilmiyorum

Bkz bu , bu ve bu daha fazla bilgi için.

2. Unsur Odaklı Programlama

Unsur yönelimli programlama, " Soğanların ayrılması " kavramından kaynaklanmaktadır . Temel olarak, kesişen endişeler için prosedürel veya nesne yönelimli programlamayı genişletir. Aşırı basitleştirme, yazılımın işlevsel gereksinimleri ve işlevsel olmayanları olduğunu söyleyebilir . Bu çapraz kesim gereksinimleri günlük kaydı, özel durum işleme, iş parçacığı senkronizasyonu, bellek yönetimi, optimizasyon vb. Bu kesişen ASPECTS , ayrı ayrı ve diğer fonksiyonel parçalara bağımsız olarak ifade edilmeli ve uygulanmalıdır.
Bu alanda kapsamlı bir çalışma IBM'den ; temelde bu endişelerin her biri veyayönler birbirinden bağımsız olabilir ve çok boyutlu "endişe alanı" oluşturur. (Okumak bu ).

Aspect Oriented'in iyi pratik uygulamalarından bazıları AspectJ ve AspectC ++ ve daha fazlasıdır . Bkz bu .

3. Rol Odaklı Programlama
Temsilcilere doğru geliştikçe, çoğu zaman, ajanın nihai performansının faaliyet gösterdiği çevreye bağlı olduğu “roller” ve hedefler tanımlamak gerekir. Bu, insan kavramsal anlayışına benzer.

Birincil hedef, işbirliği süreçleri adı verilen açık bir yapıyı tanımlayarak görevin amacını işbirliği kapasitesinden ayırmaktır . Bir rol, bir dizi yetenek ve beklenen bir davranış olarak modellenir. ancak, bu yaklaşımlar yürütme ortamının modellenmesine ve aracı / nesnenin çevreyi nasıl algılayabileceğine de izin verir. Bkz bu .

Araştırmada rol tabanlı modelleme ve uygulamalar için önerilen çeşitli çerçeveler vardır. Bunlardan birkaçı HALAT , BEYİN , ALAADIN ve daha fazlası .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.