पूर्वप्रतिबंध

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

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

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

उदाहरण के लिए: कारख़ाने का  केवल शून्य से अधिक या उसके बराबर पूर्णांकों के लिए परिभाषित किया गया है। तो एक प्रोग्राम जो एक इनपुट नंबर के फैक्टोरियल की गणना करता है, उसकी पूर्व शर्त होगी कि संख्या एक पूर्णांक हो और यह शून्य से अधिक या उसके बराबर हो।

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

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

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

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

यह भी देखें

 * अनुबंध द्वारा डिजाइन
 * गार्ड (कंप्यूटर विज्ञान)
 * पोस्टकंडिशन
 * होरे तर्क
 * इनवेरिएंट (कंप्यूटर विज्ञान) शर्तों द्वारा बनाए रखा जाता है
 * डेटाबेस ट्रिगर