सूचना गोपनीय: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Principle of computer program design}} {{about|the computer programming concept|the practice of hiding data in a message or file|Steganography|data encrypt...")
 
No edit summary
Line 1: Line 1:
{{Short description|Principle of computer program design}}
{{Short description|Principle of computer program design}}
{{about|the computer programming concept|the practice of hiding data in a message or file|Steganography|data encryption|Cryptography}}
{{about|कंप्यूटर प्रोग्रामिंग अवधारणाओं|किसी संदेश या फ़ाइल में डेटा छिपाने का अभ्यास|स्टेग्नोग्राफ़ी|डेटा एन्क्रिप्शन|Cryptography}}
{{Refimprove|date=November 2008}}
{{Refimprove|date=November 2008}}
[[कंप्यूटर विज्ञान]] में, सूचना छिपाना एक [[कंप्यूटर प्रोग्राम]] में ''डिजाइन निर्णयों'' को अलग करने का सिद्धांत है जो बदलने की सबसे अधिक संभावना है, इस प्रकार प्रोग्राम के अन्य भागों को व्यापक संशोधन से बचाता है यदि डिजाइन निर्णय बदल जाता है। सुरक्षा में एक स्थिर [[इंटरफ़ेस (कंप्यूटर विज्ञान)]] प्रदान करना शामिल है जो कार्यक्रम के शेष भाग को कार्यान्वयन से बचाता है (जिनके विवरण बदलने की संभावना है)। दूसरे तरीके से लिखा गया है, सूचना छिपाना एक वर्ग (कंप्यूटर विज्ञान) या [[सॉफ्टवेयर घटक]] के कुछ पहलुओं को उसके ग्राहक (कंप्यूटिंग) के लिए प्रोग्रामिंग भाषा सुविधाओं (जैसे निजी चर) या एक स्पष्ट निर्यात नीति का उपयोग करने से रोकने की क्षमता है। .
[[कंप्यूटर विज्ञान]] में, सूचना छिपाना एक [[कंप्यूटर प्रोग्राम]] में ''डिजाइन निर्णयों'' को अलग करने का सिद्धांत है जो बदलने की सबसे अधिक संभावना है, इस प्रकार प्रोग्राम के अन्य भागों को व्यापक संशोधन से बचाता है यदि डिजाइन निर्णय बदल जाता है। सुरक्षा में एक स्थिर [[इंटरफ़ेस (कंप्यूटर विज्ञान)]] प्रदान करना शामिल है जो कार्यक्रम के शेष भाग को कार्यान्वयन से बचाता है (जिनके विवरण बदलने की संभावना है)। दूसरे तरीके से लिखा गया है, सूचना छिपाना एक वर्ग (कंप्यूटर विज्ञान) या [[सॉफ्टवेयर घटक]] के कुछ पहलुओं को उसके ग्राहक (कंप्यूटिंग) के लिए प्रोग्रामिंग भाषा सुविधाओं (जैसे निजी चर) या एक स्पष्ट निर्यात नीति का उपयोग करने से रोकने की क्षमता है। .

Revision as of 14:47, 12 March 2023

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

सिंहावलोकन

एनकैप्सुलेशन शब्द का प्रयोग अक्सर सूचनाओं को छिपाने के लिए किया जाता है। हालांकि सभी दोनों के बीच के अंतरों पर सहमत नहीं हैं; कोई सूचना को छुपाने के बारे में सोच सकता है कि यह सिद्धांत है और एनकैप्सुलेशन तकनीक है। एक सॉफ्टवेयर मॉड्यूल सूचना को एक मॉड्यूल या अन्य निर्माण में समाहित करके जानकारी को छुपाता है जो एक इंटरफ़ेस प्रस्तुत करता है।[1]

सूचना छिपाने का एक सामान्य उपयोग डेटा के लिए भौतिक भंडारण लेआउट को छिपाना है ताकि अगर इसे बदला जाए, तो परिवर्तन कुल कार्यक्रम के एक छोटे उपसमुच्चय तक सीमित हो। उदाहरण के लिए, यदि एक त्रि-आयामी बिंदु (x, y, z) को तीन तैरनेवाला स्थल अदिश (कम्प्यूटिंग) चर के साथ एक कार्यक्रम में दर्शाया गया है और बाद में, प्रतिनिधित्व को आकार तीन के एकल सरणी डेटा संरचना चर में बदल दिया गया है, जानकारी को ध्यान में रखकर बनाया गया एक मॉड्यूल शेष कार्यक्रम की रक्षा करेगा ऐसे परिवर्तन से।

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

एनकैप्सुलेशन

वस्तु उन्मुख डिजाइन पर अपनी पुस्तक में, ग्रेडी बूच ने एनकैप्सुलेशन को अमूर्त के तत्वों को विभाजित करने की प्रक्रिया के रूप में परिभाषित किया है जो इसकी संरचना और व्यवहार का गठन करता है; एनकैप्सुलेशन एक अमूर्त और उसके कार्यान्वयन के संविदात्मक इंटरफ़ेस को अलग करने का कार्य करता है।[2] उद्देश्य परिवर्तन की संभावना को प्राप्त करना है: घटक के आंतरिक तंत्र को अन्य घटकों पर प्रभाव के बिना सुधारा जा सकता है, या घटक को एक अलग से बदला जा सकता है जो समान सार्वजनिक इंटरफ़ेस का समर्थन करता है। Encapsulation घटक के आंतरिक डेटा को अमान्य या असंगत स्थिति में सेट करने से उपयोगकर्ताओं को रोककर घटक की अखंडता की रक्षा भी करता है। एनकैप्सुलेशन का एक अन्य लाभ यह है कि यह सिस्टम की जटिलता को कम करता है और इस प्रकार सॉफ्टवेयर घटकों के बीच परस्पर निर्भरता को सीमित करके मजबूती बढ़ाता है।[2]

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

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

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज की अधिक ठोस सेटिंग में, इस धारणा का उपयोग या तो एक सूचना छुपा तंत्र, एक बंडलिंग तंत्र, या दोनों के संयोजन के लिए किया जाता है। (विवरण के लिए एनकैप्सुलेशन (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) देखें।)

इतिहास

सूचना छिपाने की अवधारणा को पहली बार 1972 में डेविड पारनास द्वारा वर्णित किया गया था।[3][4] इससे पहले, प्रतिरूपकता पर रिचर्ड गौथियर और स्टीफन पोंट ने अपनी 1970 की पुस्तक डिजाइनिंग उप-प्रणाली प्रोग्राम्स में चर्चा की थी, हालांकि मॉड्यूलर प्रोग्रामिंग का उपयोग कई वाणिज्यिक साइटों पर पहले कई वर्षों से किया जा रहा था - विशेष रूप से I/O उप-प्रणालियों और सॉफ्टवेयर पुस्तकालय में - इसके अधिग्रहण के बिना 'जानकारी छिपाने' टैग - लेकिन इसी तरह के कारणों के साथ-साथ अधिक स्पष्ट कोड पुन: उपयोग कारण।[clarification needed]

उदाहरण

सूचना छिपाना कार्यक्षमता के मॉड्यूल में उपकरण, सॉफ्टवेयर या हार्डवेयर के किसी भी टुकड़े को विभाजित करने के लिए एक प्रभावी मानदंड के रूप में कार्य करता है। उदाहरण के लिए, एक कार उपकरण का एक जटिल टुकड़ा है। कार के डिजाइन, निर्माण और रखरखाव को उचित बनाने के लिए, उपकरणों के जटिल टुकड़े को मॉड्यूल (प्रोग्रामिंग) में विभाजित किया जाता है, जिसमें विशेष इंटरफेस डिजाइन निर्णयों को छिपाते हैं। इस तरह से एक कार को डिजाइन करके, एक कार निर्माता एक ऐसे वाहन के होते हुए भी विभिन्न विकल्पों की पेशकश कर सकता है जो निर्माण के लिए किफायती है।

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

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

इंजीनियरों ने कार को कार्य के टुकड़ों में विभाजित करके डिज़ाइन किया है जो टीमों को सौंपा गया है। प्रत्येक टीम तब अपने सॉफ़्टवेयर घटक को एक विशेष मानक या इंटरफ़ेस के लिए डिज़ाइन करती है जो टीम को घटक के डिज़ाइन में लचीलेपन की अनुमति देता है जबकि एक ही समय में यह सुनिश्चित करता है कि सभी घटक एक साथ फिट होंगे।

मोटर वाहन निर्माता अक्सर लागत-नियंत्रण उपाय के रूप में, कई अलग-अलग मॉडलों के लिए समान मूल संरचना का उपयोग करते हैं। इस तरह का एक ऑटोमोबाइल मंच सूचना छिपाने का एक उदाहरण भी प्रदान करता है, क्योंकि फ़्लोरप्लान को यह जाने बिना बनाया जा सकता है कि इसका उपयोग सेडान या हैचबैक में किया जाना है या नहीं।

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

कारें इसका एक और उदाहरण प्रदान करती हैं कि वे ड्राइवरों के साथ कैसे इंटरफेस करती हैं। वे एक मानक इंटरफ़ेस (पेडल, व्हील, शिफ्टर, सिग्नल, गेज आदि) प्रस्तुत करते हैं, जिस पर लोगों को प्रशिक्षित और लाइसेंस दिया जाता है। इस प्रकार, लोगों को केवल कार चलाना सीखना होता है; हर बार जब वे कोई नया मॉडल चलाते हैं तो उन्हें ड्राइविंग का पूरी तरह से अलग तरीका सीखने की आवश्यकता नहीं होती है। (मान लिया गया है कि मैनुअल और ऑटोमैटिक ट्रांसमिशन और ऐसे अन्य अंतर हैं, लेकिन कुल मिलाकर, कारें एक एकीकृत इंटरफ़ेस बनाए रखती हैं।)

यह भी देखें

टिप्पणियाँ

  1. Rogers, Wm. Paul (18 May 2001). "एनकैप्सुलेशन जानकारी छिपाना नहीं है". JavaWorld. Retrieved 2020-07-20.
  2. 2.0 2.1 Booch, Grady (2007). ऑब्जेक्ट-ओरिएंटेड विश्लेषण और अनुप्रयोगों के साथ डिजाइन. Addison-Wesley. pp. 51–52. ISBN 978-0-201-89551-3.
  3. Parnas, David L. (1972). "मॉड्यूल में डीकंपोज़िंग सिस्टम में उपयोग किए जाने वाले मानदंड पर". Communications of the ACM. 15 (12): 1053–58. doi:10.1145/361598.361623. S2CID 53856438.
  4. Scott, Michael L. (2009) [2000]. Broy, Manfred; Denert, Ernst (eds.). प्रोग्रामिंग लैंग्वेज व्यावहारिकता (Third ed.). Morgan Kaufmann Publishers. p. 173. doi:10.1007/978-3-642-59412-0. ISBN 978-3-540-43081-0. S2CID 2698265.


संदर्भ