आधुनिक प्रोग्रामिंग भाषाओं में 'वर्ग' के लिए, उदा। जावा/सी#/सी++/पायथन..., इसमें डेटा और लॉजिक दोनों एक ही स्थान पर होते हैं। हालांकि, 'अलगाव की चिंता', ऐसा लगता है कि हमें डेटा को तर्क के साथ नहीं मिलाना चाहिए। मुझे पता है कि दोनों सही हैं, लेकिन दो परस्पर विरोधी विचारों की व्याख्या कैसे करें?
3 जवाब
... 'पृथक्करण की चिंता' के अनुसार, ऐसा लगता है कि हमें डेटा को तर्क के साथ नहीं मिलाना चाहिए ...
यह सिर्फ झूठ है। हम "डेटा" और "तर्क" को पहली जगह में चिंता का विषय नहीं मानते हैं। लिंक किए गए लेख में कुछ भी नहीं बताता है कि किसी ने ऐसा किया है या कभी भी इस पर विचार किया है।
अपने स्वयं के लिंक में दिए गए पहले उदाहरण पर विचार करें: इंटरनेट प्रोटोकॉल स्टैक।
टीसीपी परत टीसीपी स्ट्रीम राज्य डेटा और टीसीपी विंडो प्रबंधन, रिट्रांस लॉजिक आदि दोनों के लिए जिम्मेदार है।
चिंता विश्वसनीय स्ट्रीम-उन्मुख संचार है, और इसके लिए डेटा और तर्क दोनों की आवश्यकता होती है।
माना जाता है कि लेख उदाहरणों की सूची को छोड़कर "चिंता" से करता है का वर्णन करने का एक बहुत ही खराब काम करता है - शायद इसलिए कि एक परिभाषा देना मुश्किल है। मूल डिजस्ट्रा उद्धरण विशेष रूप से क्रॉस-कटिंग चिंताओं के संदर्भ में है, जैसे कार्यक्रम-व्यापी शुद्धता या दक्षता। OO गैर-क्रॉस-कटिंग चिंताओं का प्रतिनिधित्व करने में बेहतर है, जैसे कि एक विश्वसनीय स्ट्रीम या किसी प्रकार का लकड़हारा या एक सहयोगी कंटेनर।
नायब। एक संदर्भ है जिसमें हम "डेटा" और "तर्क" को चिंता का विषय मान सकते हैं - जब हम एक ऐसा प्रोग्राम लिखते हैं जो पर डेटा और तर्क को संचालित करता है, जैसे कि एक कंपाइलर। हालाँकि हमें प्रोग्राम के अपने कार्यान्वयन में उपयोग किए गए तर्क और डेटा को तर्क और डेटा ऑब्जेक्ट्स से अलग करना चाहिए जो इसे रनटाइम पर हेरफेर करता है। जब तक, शायद, यह LISP में नहीं लिखा है।
एक वर्ग में, बहुत ही बुनियादी शब्दों में, डेटा और तर्क शामिल होना चाहिए जो उस डेटा में हेरफेर करता है।
चिंताओं को अलग करने का विचार यह है कि कार्यक्षमता के असंबंधित क्षेत्रों को अलग रखा जाना चाहिए, उदा। किसी व्यक्ति के नाम के पते और फोन नंबर के बारे में डेटा कंपनी के भीतर उनकी व्यावसायिक भूमिका के डेटा से अलग होना चाहिए।
लेकिन पते आदि के लिए डेटा और तर्क को एक वर्ग में एक साथ रखा जाना चाहिए, और व्यावसायिक भूमिका के लिए डेटा और तर्क को दूसरी कक्षा में एक साथ रखा जाना चाहिए।
इसे अक्सर एकल उत्तरदायित्व सिद्धांत (एसआरपी) के रूप में वर्णित किया जाता है। यहां देखें: https://youtu.be/IrcMr0Xqz8Q
अलग-अलग वर्गों में डेटा और तर्क को अलग करने का मूल्यांकन केस-दर-मामला आधार पर किया जाना चाहिए। उदाहरण के लिए, डेटा ट्रांसफर ऑब्जेक्ट आमतौर पर केवल डेटा ले जाता है, जबकि एप्लिकेशन सेवाएं कार्य करने के लिए डेटा ट्रांसफर ऑब्जेक्ट का उपयोग करती हैं। यह सब उस स्थिति के लिए आपके द्वारा उपयोग किए जा रहे पैटर्न और वास्तुकला पर निर्भर करता है।
संबंधित सवाल
नए सवाल
c#
C # (उच्चारण "तेज देखें") Microsoft द्वारा विकसित एक उच्च स्तरीय, सांख्यिकीय रूप से टाइप किया हुआ, बहु-प्रतिमान प्रोग्रामिंग भाषा है। C # कोड आमतौर पर Microsoft के .NET परिवार के टूल और रन-टाइम को लक्षित करता है, जिसमें .NET फ्रेमवर्क, .NET कोर और Xamarin अन्य शामिल हैं। C # या C # के औपचारिक विनिर्देश में लिखे गए कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें।