पूर्वप्रतिबंध: Difference between revisions
m (Abhishek moved page शर्त लगाना to पूर्व प्रतिबंध without leaving a redirect) |
(TEXT) |
||
Line 1: | Line 1: | ||
{{Short description|Computer programming concept}} | {{Short description|Computer programming concept}} | ||
{{about| | {{about|अभिकलित्र क्रमादेशन अवधारणा|वैधानिक शब्द|sine qua non|अन्य उपयोग|पूर्व अनुबंधन (बहुविकल्पी)}} | ||
{{one source|date=September 2010}} | {{one source|date=September 2010}} | ||
[[कंप्यूटर प्रोग्रामिंग]] में, एक पूर्व | [[कंप्यूटर प्रोग्रामिंग|अभिकलित्र क्रमादेशन]] में, एक पूर्व प्रतिबंध एक प्रतिबंध या [[विधेय (गणित)|विधेय]] है जो [[कोड|कूट]] के कुछ खंड के निष्पादन से पहले या [[औपचारिक विनिर्देश]] में किसी संचालन से पहले हमेशा सही होना चाहिए। | ||
यदि किसी पूर्व | यदि किसी पूर्व प्रतिबंध का उल्लंघन किया जाता है, तो कूट के खंड का प्रभाव अपरिभाषित हो जाता है और इस प्रकार यह अपने इच्छित कार्य को पूरा कर भी सकता है और नहीं भी। अशुद्ध पूर्व प्रतिबंधों के कारण सुरक्षा समस्याएं उत्पन्न हो सकती हैं। | ||
प्रायः, कूट के प्रभावित खंड के प्रलेखन में पूर्व प्रतिबंध को सम्मिलित किया जाता है। कभी-कभी कूट के भीतर गार्ड या [[अभिकथन (कंप्यूटिंग)|अभिकथन]] का उपयोग करके पूर्व प्रतिबंध का परीक्षण किया जाता है, और कुछ भाषाओं में ऐसा करने के लिए विशिष्ट वाक्य रचना होती है। | |||
उदाहरण के लिए: [[ कारख़ाने का ]] केवल शून्य से अधिक या उसके | उदाहरण के लिए: [[ कारख़ाने का |क्रमगुणित]] केवल शून्य से अधिक या उसके समान पूर्णांकों के लिए परिभाषित किया गया है। तो एक क्रमादेश जो एक निवेश संख्या के [[ कारख़ाने का |क्रमगुणित]] की गणना करता है, उसकी पूर्व प्रतिबंध कि संख्या एक पूर्णांक हो और यह शून्य से अधिक या उसके समान हो। | ||
== वस्तु-अभिमुखित क्रमादेशन में == | |||
वस्तु-अभिमुखित सॉफ़्टवेयर विकास में पूर्व प्रतिबंध [[अनुबंध द्वारा डिजाइन|अनुबंध द्वारा अभिकल्पना]] का एक अनिवार्य भाग है। अनुबंध द्वारा अभिकल्पना में [[पोस्टकंडिशन|पश्चातप्रतिबंध]] और[[ वर्ग अपरिवर्तनीय ]]के विचार भी सम्मिलित हैं। | |||
किसी भी सामान्य के लिए पूर्व प्रतिबंध वस्तु स्थिति पर किसी भी बाधा को परिभाषित करती है जो सफल निष्पादन के लिए आवश्यक है। क्रमादेश विकासक के दृष्टिकोण से, यह अनुबंध के नियमित कॉल करने वाले के हिस्से का गठन करता है। कॉल करने वाला तब यह सुनिश्चित करने के लिए बाध्य होता है कि सामान्य को कॉल करने से पहले पूर्व प्रतिबंध है। कॉल करने वाले के प्रयास के लिए पुरस्कार को सामान्य का [[पोस्टकंडिशन|पश्चातप्रतिबंध]] कहा जाता है।<ref>[[Bertrand Meyer|Meyer, Bertrand]], ''[[Object-Oriented Software Construction]], second edition,'' [[Prentice Hall]], 1997, p. 342.</ref> | |||
=== एफिल उदाहरण === | === एफिल उदाहरण === | ||
[[एफिल (प्रोग्रामिंग भाषा)]] में लिखे गए निम्नलिखित उदाहरण में | [[एफिल (प्रोग्रामिंग भाषा)|एफिल]] में लिखे गए निम्नलिखित उदाहरण में सामान्य एक तर्क के रूप में एक पूर्णांक लेती है जो दिन के एक घंटे के लिए मान्य मान होना चाहिए, अर्थात्, 0 से 23, समावेशी है। पूर्व प्रतिबंध संकेतशब्द आवश्यकता का अनुसरण करती है। यह निर्दिष्ट करता है कि तर्क शून्य से अधिक या उसके समान होना चाहिए और 23 से कम या उसके समान होना चाहिए। टैग <nowiki>''</nowiki>मान्य तर्क:" इस पूर्व प्रतिबंध खंड का वर्णन करता है और कार्यावधि पूर्व प्रतिबंध उल्लंघनों के प्रकरण में इसे पहचानने के लिए कार्य करता है। | ||
<syntaxhighlight lang="eiffel"> | <syntaxhighlight lang="eiffel"> | ||
Line 30: | Line 28: | ||
end | end | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== पूर्व प्रतिबंध और उत्तराधिकारी === | |||
उत्तराधिकारी की उपस्थिति में, उत्तराधिकारी वर्गों (उपवर्गों) द्वारा वंशागत में मिली सामान्य अपनी पूर्व प्रतिबंधों के बल पर ऐसा करती है। इसका मतलब यह है कि वंशागत सामान्य के किसी भी कार्यान्वयन या पुनर्परिभाषा को भी उनके वंशागत अनुबंध का पालन करने के लिए लिखा जाना चाहिए। पूर्व प्रतिबंध को पुनर्निर्धारित सामान्य में संशोधित किया जा सकता है, लेकिन वे केवल कमजोर हो सकते हैं।<ref>Meyer, 1997, pp. 570–573.</ref> अर्थात्, पुनर्परिभाषित सामान्य ग्राहक के दायित्व को कम कर सकती है, लेकिन इसे बढ़ा नहीं सकती है। | |||
=== पूर्व | |||
== यह भी देखें == | == यह भी देखें == | ||
* अनुबंध द्वारा | * [[अनुबंध द्वारा अभिकल्पना]] | ||
*गार्ड ( | *[[गार्ड (अभिकलित्र विज्ञान)]] | ||
* पोस्टकंडिशन | * [[पोस्टकंडिशन|पश्चातप्रतिबंध]] | ||
* [[होरे तर्क]] | * [[होरे तर्क]] | ||
* | *[[प्रतिबंधों द्वारा बनाए गए अपरिवर्तनीय]] | ||
* [[डेटाबेस ट्रिगर]] | * [[डेटाबेस ट्रिगर|डेटाबेस प्रवर्तक]] | ||
==संदर्भ== | ==संदर्भ== |
Revision as of 20:32, 7 March 2023
This article relies largely or entirely on a single source. (September 2010) |
अभिकलित्र क्रमादेशन में, एक पूर्व प्रतिबंध एक प्रतिबंध या विधेय है जो कूट के कुछ खंड के निष्पादन से पहले या औपचारिक विनिर्देश में किसी संचालन से पहले हमेशा सही होना चाहिए।
यदि किसी पूर्व प्रतिबंध का उल्लंघन किया जाता है, तो कूट के खंड का प्रभाव अपरिभाषित हो जाता है और इस प्रकार यह अपने इच्छित कार्य को पूरा कर भी सकता है और नहीं भी। अशुद्ध पूर्व प्रतिबंधों के कारण सुरक्षा समस्याएं उत्पन्न हो सकती हैं।
प्रायः, कूट के प्रभावित खंड के प्रलेखन में पूर्व प्रतिबंध को सम्मिलित किया जाता है। कभी-कभी कूट के भीतर गार्ड या अभिकथन का उपयोग करके पूर्व प्रतिबंध का परीक्षण किया जाता है, और कुछ भाषाओं में ऐसा करने के लिए विशिष्ट वाक्य रचना होती है।
उदाहरण के लिए: क्रमगुणित केवल शून्य से अधिक या उसके समान पूर्णांकों के लिए परिभाषित किया गया है। तो एक क्रमादेश जो एक निवेश संख्या के क्रमगुणित की गणना करता है, उसकी पूर्व प्रतिबंध कि संख्या एक पूर्णांक हो और यह शून्य से अधिक या उसके समान हो।
वस्तु-अभिमुखित क्रमादेशन में
वस्तु-अभिमुखित सॉफ़्टवेयर विकास में पूर्व प्रतिबंध अनुबंध द्वारा अभिकल्पना का एक अनिवार्य भाग है। अनुबंध द्वारा अभिकल्पना में पश्चातप्रतिबंध औरवर्ग अपरिवर्तनीय के विचार भी सम्मिलित हैं।
किसी भी सामान्य के लिए पूर्व प्रतिबंध वस्तु स्थिति पर किसी भी बाधा को परिभाषित करती है जो सफल निष्पादन के लिए आवश्यक है। क्रमादेश विकासक के दृष्टिकोण से, यह अनुबंध के नियमित कॉल करने वाले के हिस्से का गठन करता है। कॉल करने वाला तब यह सुनिश्चित करने के लिए बाध्य होता है कि सामान्य को कॉल करने से पहले पूर्व प्रतिबंध है। कॉल करने वाले के प्रयास के लिए पुरस्कार को सामान्य का पश्चातप्रतिबंध कहा जाता है।[1]
एफिल उदाहरण
एफिल में लिखे गए निम्नलिखित उदाहरण में सामान्य एक तर्क के रूप में एक पूर्णांक लेती है जो दिन के एक घंटे के लिए मान्य मान होना चाहिए, अर्थात्, 0 से 23, समावेशी है। पूर्व प्रतिबंध संकेतशब्द आवश्यकता का अनुसरण करती है। यह निर्दिष्ट करता है कि तर्क शून्य से अधिक या उसके समान होना चाहिए और 23 से कम या उसके समान होना चाहिए। टैग ''मान्य तर्क:" इस पूर्व प्रतिबंध खंड का वर्णन करता है और कार्यावधि पूर्व प्रतिबंध उल्लंघनों के प्रकरण में इसे पहचानने के लिए कार्य करता है।
set_hour (a_hour: INTEGER)
-- Set `hour' to `a_hour'
require
valid_argument: 0 <= a_hour and a_hour <= 23
do
hour := a_hour
ensure
hour_set: hour = a_hour
end
पूर्व प्रतिबंध और उत्तराधिकारी
उत्तराधिकारी की उपस्थिति में, उत्तराधिकारी वर्गों (उपवर्गों) द्वारा वंशागत में मिली सामान्य अपनी पूर्व प्रतिबंधों के बल पर ऐसा करती है। इसका मतलब यह है कि वंशागत सामान्य के किसी भी कार्यान्वयन या पुनर्परिभाषा को भी उनके वंशागत अनुबंध का पालन करने के लिए लिखा जाना चाहिए। पूर्व प्रतिबंध को पुनर्निर्धारित सामान्य में संशोधित किया जा सकता है, लेकिन वे केवल कमजोर हो सकते हैं।[2] अर्थात्, पुनर्परिभाषित सामान्य ग्राहक के दायित्व को कम कर सकती है, लेकिन इसे बढ़ा नहीं सकती है।
यह भी देखें
- अनुबंध द्वारा अभिकल्पना
- गार्ड (अभिकलित्र विज्ञान)
- पश्चातप्रतिबंध
- होरे तर्क
- प्रतिबंधों द्वारा बनाए गए अपरिवर्तनीय
- डेटाबेस प्रवर्तक
संदर्भ
- ↑ Meyer, Bertrand, Object-Oriented Software Construction, second edition, Prentice Hall, 1997, p. 342.
- ↑ Meyer, 1997, pp. 570–573.