क्या इकाई घटक प्रणाली वास्तुकला वस्तु परिभाषा द्वारा उन्मुख है?


20

क्या इकाई घटक प्रणाली आर्किटेक्चर ऑब्जेक्ट परिभाषा द्वारा उन्मुख है? यह मुझे अधिक प्रक्रियात्मक या क्रियात्मक लगता है। मेरी राय यह है कि यह आपको एक OO भाषा में इसे लागू करने से नहीं रोकता है, लेकिन यह एक कट्टरपंथी OO तरीके से ऐसा करना मुहावरा नहीं होगा।

ऐसा लगता है कि ECS व्यवहार (S) से डेटा (E & C) को अलग करता है। सबूत के तौर पर :

विचार यह है कि इकाई में कोई खेल विधियां न हों।

तथा :

घटक में किसी विशिष्ट उद्देश्य के लिए आवश्यक न्यूनतम डेटा सेट होता है

सिस्टम एकल उद्देश्य फ़ंक्शन हैं जो उन संस्थाओं का एक सेट लेते हैं जिनमें एक विशिष्ट घटक होता है


मुझे लगता है कि यह ऑब्जेक्ट ओरिएंटेड नहीं है क्योंकि ऑब्जेक्ट ओरिएंटेड होने का एक बड़ा हिस्सा आपके डेटा और व्यवहार को एक साथ जोड़ रहा है। साक्ष्य के रूप में :

इसके विपरीत, वस्तु-उन्मुख दृष्टिकोण प्रोग्रामर को डेटा रखने के लिए प्रोत्साहित करता है जहां यह कार्यक्रम के बाकी हिस्सों द्वारा सीधे पहुंच योग्य नहीं है। इसके बजाय, डेटा को विशेष रूप से लिखित कार्यों को कॉल करके एक्सेस किया जाता है, जिसे आमतौर पर विधियों कहा जाता है, जो डेटा के साथ बंडल होते हैं।

दूसरी ओर, ईसीएस आपके व्यवहार से आपके डेटा को अलग करने के बारे में सब कुछ प्रतीत होता है।

जवाबों:


21

परिचय


इकाई घटक प्रणाली एक वस्तु-उन्मुख वास्तुकला तकनीक है।

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के समान शब्द का कोई सार्वभौमिक सर्वसम्मति नहीं है। हालांकि, यह स्पष्ट है कि इकाई-घटक प्रणाली विशेष रूप से विरासत के एक वास्तुशिल्प विकल्प के रूप में अभिप्रेत है । एक वस्तु क्या है , यह व्यक्त करने के लिए वंशानुगत पदानुक्रम स्वाभाविक हैं , लेकिन कुछ प्रकार के सॉफ़्टवेयर (जैसे गेम) में, आप यह व्यक्त करेंगे कि कोई वस्तु क्या करती है

यह "वर्गों और वंशानुक्रम" की तुलना में एक अलग ऑब्जेक्ट मॉडल है जिसमें से आप C ++ या जावा में काम करने के सबसे अधिक आदी हैं। इकाइयाँ वर्ग की तरह ही अभिव्यंजक हैं, जैसे जावास्क्रिप्ट या स्व-रूप में प्रोटोटाइप। इन सभी प्रणालियों को एक दूसरे के संदर्भ में लागू किया जा सकता है।

 

उदाहरण


आइए कहते हैं कि Playerके साथ एक इकाई है Position, Velocityऔर KeyboardControlledघटक है, जो स्पष्ट बातें करते हैं।

entity Player:
  Position
  Velocity
  KeyboardControlled

हम जानते हैं Positionसे प्रभावित किया जाना चाहिए Velocity, और Velocityसे KeyboardControlled। सवाल यह है कि हम उन प्रभावों को कैसे मॉडल करना चाहते हैं।

 

एंटिटीज, कंपोनेंट्स और सिस्टम्स


मान लीजिए कि घटकों का एक दूसरे से कोई संदर्भ नहीं है; एक बाहरी Physicsप्रणाली सभी Velocityघटकों का पता लगाती है और Positionसंबंधित इकाई को अपडेट करती है; एक Inputसिस्टम सभी KeyboardControlledघटकों का पता लगाता है और अद्यतन करता है Velocity

          Player
         +--------------------+
         | Position           | \
         |                    |  Physics
       / | Velocity           | /
  Input  |                    |
       \ | KeyboardControlled |
         +--------------------+

यह मापदंड को संतुष्ट करता है:

  • इकाई द्वारा कोई खेल / व्यावसायिक तर्क व्यक्त नहीं किया जाता है।

  • घटक डेटा का वर्णन करने वाले डेटा को संग्रहीत करते हैं।

सिस्टम अब घटनाओं को संभालने और घटकों द्वारा वर्णित व्यवहार को लागू करने के लिए जिम्मेदार हैं । वे संस्थाओं के बीच बातचीत को संभालने के लिए भी जिम्मेदार हैं, जैसे टकराव।

 

संस्थाओं और घटकों


हालांकि, लगता है कि घटकों कर एक-दूसरे के लिए संदर्भ की है। अब इकाई बस एक निर्माता है जो कुछ घटक बनाता है, उन्हें एक साथ बांधता है, और उनके जीवनकाल का प्रबंधन करता है:

class Player:
  construct():
    this.p = Position()
    this.v = Velocity(this.p)
    this.c = KeyboardControlled(this.v)

इकाई अब इनपुट और अद्यतन घटनाओं को सीधे उसके घटकों में भेज सकती है। Velocityअद्यतनों पर प्रतिक्रिया देगा, और KeyboardControlledइनपुट पर प्रतिक्रिया देगा। यह अभी भी हमारे मानदंडों को संतुष्ट करता है:

  • इकाई एक "गूंगा" कंटेनर है जो केवल घटकों के लिए घटनाओं को आगे बढ़ाता है।

  • प्रत्येक घटक अपने स्वयं के व्यवहार को अधिनियमित करता है।

यहां घटक इंटरैक्शन स्पष्ट हैं, सिस्टम द्वारा बाहर से नहीं लगाए गए हैं। एक व्यवहार का वर्णन करने वाले डेटा (वेग की मात्रा क्या है?) और इसे लागू करने वाले कोड (वेग क्या है?) युग्मित हैं, लेकिन एक प्राकृतिक तरीके से। डेटा को व्यवहार के मापदंडों के रूप में देखा जा सकता है। और कुछ घटक बिल्कुल भी कार्य नहीं करते हैं - एक जगह में होनेPosition का व्यवहार है

सहभागिता को इकाई के स्तर पर ("जब एक Playerटकराता है Enemy...") या व्यक्तिगत घटकों के स्तर पर नियंत्रित किया जा सकता है ("जब एक इकाई एक इकाई के साथ Lifeटकराती है Strength...")।

 

अवयव


इकाई के मौजूद होने का क्या कारण है? यदि यह केवल एक निर्माता है, तो हम इसे घटकों के एक सेट को वापस करने वाले फ़ंक्शन के साथ बदल सकते हैं। यदि हम बाद में संस्थाओं को उनके प्रकार से क्वेरी करना चाहते हैं, तो Tagहमारे पास बस एक घटक हो सकता है जो हमें ऐसा करने देता है:

function Player():
  t = Tag("Player")
  p = Position()
  v = Velocity(p)
  c = KeyboardControlled(v)
  return {t, p, v, c}
  • एंटिटीज उतने ही गूंगे हैं - वे बस घटकों के सेट हैं।

  • घटक पहले की तरह सीधे घटनाओं पर प्रतिक्रिया देते हैं।

बातचीत को अब अमूर्त प्रश्नों द्वारा नियंत्रित किया जाना चाहिए , पूरी तरह से इकाई प्रकारों से घटनाओं को हटाने के लिए। क्वेरी करने के लिए कोई और अधिक इकाई प्रकार नहीं हैं - Tagगेम लॉजिक की तुलना में डिबगिंग के लिए संभवतः मनमाने ढंग से डेटा का उपयोग किया जाता है।

 

निष्कर्ष


संस्थाएँ फ़ंक्शंस, नियम, अभिनेता या डेटाफ़्लो कॉम्बिनेटर नहीं हैं। वे संज्ञाएं हैं जो ठोस घटना को मॉडल करते हैं - दूसरे शब्दों में, वे वस्तुएं हैं। जैसा कि विकिपीडिया कहता है- इकाई-घटक प्रणाली सामान्य वस्तुओं के मॉडलिंग के लिए एक सॉफ्टवेयर आर्किटेक्चर पैटर्न है।


2
क्लास-आधारित OO, प्रोटोटाइप-आधारित OO का मुख्य विकल्प, युगल डेटा और व्यवहार भी लगता है। दरअसल, यह ECS से उतना ही अलग लगता है जितना कि क्लास-आधारित OO करता है। तो क्या आप विस्तार से बता सकते हैं कि ओओ का मतलब क्या है?

@ डेलान के प्रश्न को जोड़ने के लिए, क्या आप ओओ विकिपीडिया लेख के उद्धरण से असहमत हैं?
डैनियल कपलान

@tieTYT: विकिपीडिया उद्धरण एन्कैप्सुलेशन और सूचना छिपाने के बारे में बात कर रहा है। मुझे नहीं लगता कि यह सबूत है कि डेटा-व्यवहार युग्मन की आवश्यकता है, केवल यह सामान्य है।
जॉन पूर्डी

@delnan: मुझे OO से कोई मतलब नहीं है। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग, मेरे लिए, ठीक यही है जो टिन पर कहता है: "ऑब्जेक्ट्स" के साथ प्रोग्रामिंग (जैसा कि फ़ंक्शन, नियम, अभिनेता, डेटाफ़्लो कॉम्बीनेटर, आदि के विपरीत) जहां ऑब्जेक्ट की विशेष परिभाषा कार्यान्वयन-परिभाषित है।
जॉन प्यूडी १13

1
@tieTYT: मैं सिर्फ जंगली में देखे गए कार्यान्वयन का वर्णन कर रहा था, यह बताने के लिए कि यह एक व्यापक शब्द है - विरोधाभासी नहीं, लेकिन निश्चित रूप से विकिपीडिया विवरण से अधिक व्यापक।
जॉन प्यूडी

20

नहीं। और मुझे आश्चर्य है कि कितने लोगों ने अन्यथा मतदान किया!

मिसाल

यह डेटा-ओरिएंटेड उर्फ डेटा-चालित है क्योंकि हम वास्तुकला के बारे में बात कर रहे हैं, न कि उस भाषा में जिसके बारे में लिखा गया है। आर्किटेक्चर प्रोग्रामिंग शैलियों या प्रतिमानों की प्राप्ति है , जो आमतौर पर किसी दिए गए भाषा में अनजाने में काम किया जा सकता है।


कार्यात्मक?

कार्यात्मक / प्रक्रियात्मक प्रोग्रामिंग के लिए आपकी तुलना एक प्रासंगिक और सार्थक तुलना है। ध्यान दें, हालांकि, एक "कार्यात्मक" भाषा "प्रक्रियात्मक" प्रतिमान से अलग है । और आप एक एचसीएस को एक कार्यात्मक भाषा में लागू कर सकते हैं जैसे हास्केल , जो लोगों ने किया है।


जहां सामंजस्य होता है

आपका अवलोकन प्रासंगिक और हाजिर है :

"... [ECS] आपको इसे OO भाषा में लागू करने से नहीं रोकता है, लेकिन यह एक कट्टर तरीके से ऐसा करने के लिए मुहावरेदार नहीं होगा"


ईसीएस / ईएस ईसी / सीई नहीं है

घटक-आधारित आर्किटेक्चर, "इकाई-घटक" और "इकाई-घटक-प्रणाली" के बीच अंतर है। चूँकि यह एक विकसित डिजाइन पैटर्न है, मैंने इन परिभाषाओं का परस्पर उपयोग करते हुए देखा है। "ईसी" या "सीई" या "एंटिटी-कंपोनेंट" आर्किटेक्चर घटकों में व्यवहार डालते हैं , जबकि "ईएस" या "ईसीएस" आर्किटेक्चर सिस्टम में व्यवहार डालते हैं । यहां कुछ ईसीएस लेख हैं, जिनमें से दोनों भ्रामक नामकरण का उपयोग करते हैं, लेकिन सामान्य विचार प्राप्त करें:

यदि आप 2015 में इन शर्तों को समझने की कोशिश कर रहे हैं, तो सुनिश्चित करें कि किसी व्यक्ति का "एंटिटी कंपोनेंट सिस्टम" का संदर्भ "एंटिटी-कंपोनेंट आर्किटेक्चर" नहीं है।


1
यह सही जवाब है। ईसीएस OOP प्रतिमानों के साथ बहुत अच्छी तरह से फिट नहीं है, क्योंकि ECS डेटा और व्यवहार को अलग करने के बारे में है, जबकि OOP इसके विपरीत है।
नैक्स 'vi-vim-nvim'

"जबकि OOP इसके विपरीत है" OOP के बारे में क्या है, इसकी कोई स्वीकृत परिभाषा नहीं है, जब तक कि छोटे शैक्षणिक जैसे बेकार शैक्षणिक परिभाषाएँ जो कभी व्यवहार में उपयोग नहीं की जाती हैं।
जीन-माइकेल सेलेरिएर

10

इकाई घटक प्रणाली (ईसीएस) को एक ओओपी या कार्यात्मक तरीके से प्रोग्राम किया जा सकता है जो इस प्रणाली को परिभाषित करने के आधार पर करता है।

OOP तरीका:

मैंने उन खेलों पर काम किया है जहाँ एक इकाई विभिन्न घटकों से बनी एक वस्तु थी। इकाई में एक अपडेट फ़ंक्शन होता है जो बदले में अपने सभी घटकों पर अपडेट कॉल करके ऑब्जेक्ट को संशोधित करता है। यह स्पष्ट रूप से शैली में OOP है - व्यवहार डेटा से जुड़ा हुआ है, और डेटा उत्परिवर्तनीय है। इकाइयाँ निर्माता / विध्वंसक / अद्यतन वाली वस्तुएँ हैं।

अधिक कार्यात्मक तरीका:

एक विकल्प इकाई के लिए किसी भी तरीके के बिना डेटा होना है। यह इकाई अपने आप में मौजूद हो सकती है या बस एक आईडी हो सकती है जो विभिन्न घटकों से जुड़ी होती है। इस तरह यह संभव है (लेकिन आमतौर पर नहीं किया गया) पूरी तरह कार्यात्मक होने के लिए और अपरिवर्तनीय निकाय और शुद्ध सिस्टम हैं जो नए घटक राज्यों को उत्पन्न करते हैं।

ऐसा लगता है (व्यक्तिगत अनुभव से) कि बाद का तरीका अधिक कर्षण और अच्छे कारण के लिए प्राप्त कर रहा है। व्यवहार से इकाई डेटा को और अधिक लचीला और पुन: प्रयोज्य कोड (imo) में परिणाम करता है। विशेष रूप से, बैचों में घटकों / संस्थाओं को अद्यतन करने के लिए सिस्टम का उपयोग करना अधिक प्रदर्शनकारी हो सकता है, और पूरी तरह से अंतर-इकाई मैसेजिंग की जटिलताओं से बचा जाता है जो कई OOP ECS को प्लेग करता है।

TLDR: आप इसे किसी भी तरह से कर सकते हैं, लेकिन मेरा तर्क है कि अच्छी इकाई घटक प्रणालियों के लाभ उनके अधिक कार्यात्मक प्रकृति से प्राप्त होते हैं।


विशेष रूप से घटकों के पूरे बिंदु से अधिक कर्षण को अव्यवहारिक OOP पदानुक्रम से दूर करना था, लाभ का अच्छा विवरण।
पैट्रिक ह्यूजेस

2

डेटा-ओरिएंटेड एंटिटी कंपोनेंट सिस्टम्स ऑब्जेक्ट-ओरिएंटेड पैराडाइज के साथ सह-अस्तित्व रख सकते हैं: - कंपोनेंट सिस्टम खुद को बहुरूपता के लिए उधार देते हैं। - अवयव POD (सादा पुराना डेटा) और ALSO ऑब्जेक्ट (क्लास और मेथड के साथ) दोनों हो सकते हैं, और पूरी बात अभी भी 'डेटा ओरिएंटेड' है, बशर्ते कि कंपोनेंट क्लास मेथड्स केवल स्थानीय ऑब्जेक्ट के स्वामित्व वाले डेटा में हेरफेर करें।

यदि आप इस पथ को चुनते हैं, तो मैं सलाह देता हूं कि आप वर्चुअल मेथड्स का उपयोग करने से बचें, क्योंकि यदि आपके पास वे हैं, तो आपका घटक अब विशुद्ध रूप से घटक डेटा नहीं है, साथ ही उन विधियों को कॉल करने में अधिक लागत आती है - यह COM नहीं है। एक नियम के रूप में, बाहरी घटक को किसी भी संदर्भ में अपने घटक वर्गों को साफ रखें।

उदाहरण vec2 या vec3 होगा, उस डेटा को छूने के लिए कुछ तरीकों के साथ एक डेटा कंटेनर, और कुछ भी नहीं।


2
यह पोस्ट पढ़ना मुश्किल है (पाठ की दीवार)। क्या आप इसे बेहतर आकार में संपादित करना चाहेंगे ? साथ ही, यदि आप पाठकों को यह समझाते हैं कि वे लिंक किए गए ब्लॉग लेख को उपयोगी और प्रासंगिक क्यों कह सकते हैं, तो यह जानने में मदद करेगा ...
gnat

... अगर आप किसी तरह उस ब्लॉग से संबंधित हैं (आप हैं?), तो संबद्धता
gat

हां, यह मेरा ब्लॉग है, मैं अपने सार्वजनिक ब्लॉग के साथ निकटता से जुड़ा हुआ हूं, जो डेटा उन्मुख डिजाइन सिद्धांतों के आधार पर एक वस्तु-उन्मुख इकाई घटक प्रणाली के विवरण का खुलासा करता है, जो मुझे लगता है कि प्रासंगिक और संभवतः उपयोगी है, फिर भी मैंने लिंक को हटा दिया है किसी भी पूर्वाग्रह को हटा दें।
होमर

2

मुझे लगता है कि ईसीएस ओओपी से मौलिक रूप से अलग है और इसे आप उसी तरह से देखते हैं, जैसा कि कार्यक्षमता से डेटा के बहुत अलग पृथक्करण के साथ प्रकृति में कार्यात्मक या विशेष रूप से प्रक्रियात्मक के करीब है। केंद्रीय डेटाबेस के साथ एक तरह का प्रोग्रामिंग करने के लिए कुछ समानता है। बेशक जब मैं औपचारिक परिभाषाओं की बात करता हूं तो मैं सबसे खराब व्यक्ति हूं। मैं केवल इस बारे में चिंतित हूं कि चीजें कैसे होती हैं, न कि वे जो वे वैचारिक रूप से परिभाषित हैं।

मैं एक तरह का ECS मान रहा हूं, जहां घटक डेटा फ़ील्ड्स को एकत्रित करते हैं और उन्हें सार्वजनिक रूप से / विश्व स्तर पर सुलभ बनाते हैं, इकाइयों को एकत्रित करते हैं, और सिस्टम उस डेटा पर कार्यक्षमता / व्यवहार प्रदान करते हैं। यह आम तौर पर मुश्किल वास्तुशिल्प विशेषताओं की ओर जाता है, जिसे हम आमतौर पर एक वस्तु-उन्मुख कोडबेस कहते हैं।

और निश्चित रूप से लोगों के ECS को डिजाइन / कार्यान्वित करने के तरीके में सीमाओं का कुछ धुंधलापन है, और इस बारे में बहस है कि वास्तव में पहली बार में ECS का गठन क्या होता है। फिर भी ऐसी सीमाओं को कोड में धुंधला कर दिया जाता है जिसे हम कार्यात्मक या प्रक्रियात्मक भाषा कहते हैं। इस सारे फजीहत के बीच, कार्यक्षमता से डेटा को अलग करने के साथ एक ईसीएस का मौलिक निरंतरता ओओपी की तुलना में मेरे लिए कार्यात्मक या प्रक्रियात्मक प्रोग्रामिंग के करीब है।

मुख्य कारणों में से एक, जो मुझे नहीं लगता है कि ईसीएस को ओओपी के एक वर्ग में शामिल करने पर विचार करना मददगार है, ओओपी से जुड़ी अधिकांश एसई प्रथाओं सार्वजनिक इंटरफ़ेस स्थिरता के साथ घूमती हैं, सार्वजनिक इंटरफेस मॉडलिंग कार्यों के साथ , डेटा नहीं। मौलिक विचार यह है कि सार्वजनिक निर्भरता के थोक सार कार्यों की ओर बहते हैं, न कि ठोस आंकड़ों के लिए। और उस वजह से, OOP को मौलिक डिजाइन व्यवहारों को बदलना बहुत महंगा पड़ता है, जबकि इसे ठोस विवरण (जैसे कि कार्यक्षमता को लागू करने के लिए आवश्यक डेटा और कोड) बदलना बहुत सस्ता पड़ता है।

ईसीएस इस संबंध में मौलिक रूप से भिन्न है कि यह विचार कैसे किया जाता है कि सार्वजनिक निर्भरता के थोक के रूप में चीजों को ठोस डेटा की ओर प्रवाहित किया जाता है: सिस्टम से घटकों तक। नतीजतन, ईसीएस से जुड़ी कोई भी एसई प्रैक्टिस डेटा स्थिरता के चारों ओर घूमती है , क्योंकि सबसे अधिक सार्वजनिक और व्यापक रूप से उपयोग किए जाने वाले इंटरफेस (घटक) वास्तव में केवल डेटा हैं।

परिणामस्वरूप ECS को एक DirectX एक के लिए OpenGL रेंडरिंग इंजन के विकल्प की तरह काम करना बहुत आसान हो जाता है, भले ही दोनों को मौलिक रूप से अलग-अलग कार्यक्षमता के साथ लागू किया गया हो और समान डिजाइनों को साझा नहीं किया जाता है, बशर्ते कि दोनों DX और GL इंजन प्रदान करें उसी स्थिर डेटा तक पहुंच है। इस बीच यह बहुत महंगा होगा और इसे बदलने के लिए सिस्टम के एक समूह को फिर से लिखने की आवश्यकता होगी, कहते हैं, डेटा प्रतिनिधित्व MotionComponent

यह बहुत ही विपरीत है कि हम पारंपरिक रूप से ओओपी के साथ जुड़े हैं, कम से कम युग्मन विशेषताओं के संदर्भ में और "सार्वजनिक इंटरफ़ेस" बनाम "निजी कार्यान्वयन विवरण"। बेशक दोनों मामलों में "कार्यान्वयन विवरण" को बदलना आसान है, लेकिन ईसीएस में यह डेटा का डिज़ाइन है जिसे बदलना महंगा है (डेटा ईसीएस में कार्यान्वयन विवरण नहीं है), और ओओपी में यह कार्यक्षमता का डिज़ाइन है जिसे बदलना महंगा है (कार्यों का डिजाइन OOP में कार्यान्वयन विवरण नहीं है)। तो यह "कार्यान्वयन विवरण" का एक बहुत अलग विचार है, और एक रखरखाव परिप्रेक्ष्य से एक ईसीएस के लिए मुख्य अपील में से एक यह था कि मेरे डोमेन में चीजों को करने के लिए आवश्यक डेटा को एक बार सही ढंग से स्थिर और डिजाइन करना आसान था और सभी विभिन्न चीजों की तुलना में हम उस डेटा के साथ कर सकते थे (जो कि हर समय बदल जाएगा क्योंकि ग्राहकों ने अपने मन बदल दिया और नए उपयोगकर्ता सुझाव बाढ़ आ गए)। नतीजतन, मैंने पाया कि जब हम कच्चे, केंद्रीय डेटा (लेकिन फिर भी इस बात की परवाह करते हैं कि कौन से सिस्टम एक्सेस करते हैं, कौन-कौन से कंपोनेंट को सभी डेटा के बावजूद एक प्रमुख रूप से इंवेनेटर्स को बनाए रखने की अनुमति देते हैं) के लिए मैं रखरखाव की लागत को कम कर देता हूं। विश्व स्तर पर सुलभ)।

और मेरे मामले में कम से कम, एपीआई और सभी घटकों के साथ ईसीएस एसडीके वास्तव में सी में लागू होते हैं और ओओपी के समान नहीं होते हैं। मैंने ECS आर्किटेक्चर में OO की अंतर्निहित कमी को देखते हुए और एक प्लगइन आर्किटेक्चर रखने की इच्छा को देखते हुए C को पर्याप्त से अधिक पाया है, जिसका उपयोग विभिन्न भाषाओं और कंपाइलरों द्वारा किया जा सकता है। सिस्टम C ++ में अभी भी लागू होते हैं क्योंकि C ++ वहां चीजों को बहुत सुविधाजनक बनाता है और सिस्टम जटिलता के थोक को मॉडल करता है और वहां मुझे बहुत सारी चीजों के लिए उपयोग होता है जिन्हें ओओपी के करीब माना जा सकता है, लेकिन यह कार्यान्वयन विवरण के लिए है। वास्तुशिल्प डिजाइन ही अभी भी बहुत प्रक्रियात्मक सी जैसा दिखता है।

इसलिए मुझे लगता है कि यह कुछ हद तक भ्रमित करने वाला है, कहने की कोशिश करने के लिए ECS परिभाषा के अनुसार OO है। बहुत कम से कम फंडामेंटल ऐसी चीजें करते हैं जो आमतौर पर ओओपी से जुड़े कई मूलभूत सिद्धांतों से पूर्ण 180 डिग्री मोड़ लेते हैं, जो कि एनकैप्सुलेशन के साथ शुरू होता है और शायद वांछित युग्मन विशेषताओं के साथ समाप्त होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.