इस पर किताब लिखकर कोई भी इसका जवाब दे सकता है। हालांकि, यहां एक बुनियादी तुलना है
1. विषय उन्मुख प्रोग्रामिंग
विषय उन्मुख उन्मुखीकरण इस प्रकार के रूप में उन्मुख वस्तु से कट्टरपंथी प्रस्थान है। OO में, वस्तुओं को आंतरिक के रूप में परिभाषित किया जाता है (अर्थात एक मॉडल पर आधारित है जो स्वतंत्र रूप से इसका वर्णन करता है)। और इसके आधार पर इसके गुण (गुण) और तरीके (व्यवहार) प्राप्त होते हैं। आवेदन केवल उपयोग करता हैइन गुणों और व्यवहार के। इसके विपरीत, विषय उन्मुख प्रोग्रामिंग में, इस तरह के अलगाव में कोई वस्तु मौजूद नहीं है (और मॉडलिंग की गई है)। इस प्रक्रिया में, लेकिन वस्तुओं के व्यवहार को ऑब्जेक्ट के विभिन्न अन्य "विषयों" द्वारा प्रदान किया जाता है जो मूल वस्तु के लेखक के दायरे और नियंत्रण से परे हैं। इसे विभिन्न "स्वतंत्र रूप से निश्चित व्यवहार" को बढ़ाने के तरीके के रूप में सोचें। "वस्तु पर। मुझे लगता है कि यहां जिस तरह की चर्चा की जा रही है, उसकी तुलना में यह विरासत के टेम्पलेट्स को परिभाषित करने से परे होगा।
शब्दों की निर्विवाद उत्पत्ति (और अवधारणा) " सब्जेक्ट ओरिएंटेड प्रोग्रामिंग: ए क्रिटिक ऑफ़ प्योर ऑब्जेक्ट्स , विलियम हैरिसन और हेरोल्ड ऑशर" से आया है। यहाँ एक और अच्छा पेपर है । हालांकि व्यक्तिगत रूप से मेरा मानना है कि यह एक सैद्धांतिक ढांचा है। मुझे नहीं पता कि कोई भाषा / कार्यान्वयन है या नहीं
देखें इस , यह और इस बारे में अधिक जानकारी के लिए।
2. पहलू उन्मुख प्रोग्रामिंग
पहलू उन्मुख प्रोग्रामिंग की शुरुआत " पृथक्करण की पृथक्करण " की अवधारणा से हुई है । मूल रूप से यह या तो प्रक्रियात्मक या वस्तु उन्मुख प्रोग्रामिंग को उन चिंताओं के लिए विस्तारित करता है जो क्रॉस-कटिंग हैं। सरलता से कह सकते हैं कि सॉफ्टवेयर की कार्यात्मक आवश्यकताएं और गैर-कार्यात्मक हैं। इन क्रॉस कटिंग आवश्यकताओं में लॉगिंग, अपवाद हैंडलिंग, थ्रेड सिंक्रोनाइज़ेशन, मेमोरी मैनेजमेंट, ऑप्टिमाइज़ेशन इत्यादि जैसे उदाहरण शामिल हैं। इन क्रॉस कटिंग ASPECTS को व्यक्त किया जाना चाहिए और अलग-अलग और स्वतंत्र रूप से किसी भी अन्य कार्यात्मक भागों में लागू किया जाना चाहिए।
इस क्षेत्र में एक व्यापक कार्य आईबीएम से है ; मूल रूप से इस तरह के प्रत्येक चिंताओं यापहलू बहुआयामी "चिंता स्थान" बनाने वाले एक दूसरे से स्वतंत्र हो सकते हैं। , (पढ़ने के इस )।
पहलू ओरिएंटेड के कुछ अच्छे व्यावहारिक कार्यान्वयन AspectJ और AspectC ++ और कई और अधिक हैं । देखें इस ।
3. रोल ओरिएंटेड प्रोग्रामिंग
जैसा कि हम एजेंटों की ओर विकसित होते हैं, कई बार "भूमिकाओं" और उद्देश्यों को परिभाषित करना आवश्यक होता है, जहां सटीक गतिविधियां होती हैं, जो एजेंट एंड-अप प्रदर्शन करते हैं, यह उस वातावरण पर निर्भर करता है। यह मानव वैचारिक समझ के अनुरूप है।
प्राथमिक उद्देश्य सहयोग प्रक्रियाओं को स्पष्ट निर्माणों को परिभाषित करके सहयोग की क्षमता से कार्य का उद्देश्य कम करना है । एक भूमिका क्षमताओं और एक अपेक्षित व्यवहार के सेट के रूप में तैयार की जाती है। हालाँकि, ये दृष्टिकोण निष्पादन पर्यावरण के मॉडलिंग की अनुमति देते हैं और एजेंट / ऑब्जेक्ट पर्यावरण को भी देख सकते हैं। देखें इस ।
भूमिका आधारित मॉडलिंग और कार्यान्वयन के लिए अनुसंधान में विभिन्न रूपरेखाएं प्रस्तावित हैं। उनमें से कुछ ROPE , BRAIN , ALAADIN और बहुत कुछ हैं ।