अनिवार्य और वस्तु-उन्मुख प्रोग्रामिंग
अनिवार्य प्रोग्रामिंग संगणना को स्थिति-परिवर्तनकारी आदेशों के अनुक्रम के रूप में व्यक्त करती है; वस्तु-उन्मुख प्रोग्रामिंग उस स्थिति और व्यवहार को समाहित, संदेश-पारित वस्तुओं में व्यवस्थित करती है।
Definition
अनिवार्य प्रोग्रामिंग संगणना को कथनों के एक अनुक्रम के रूप में वर्णित करती है जो असाइनमेंट और नियंत्रण प्रवाह के माध्यम से प्रोग्राम की स्थिति को बदलते हैं; वस्तु-उन्मुख प्रोग्रामिंग एक संरचनात्मक अनुशासन है जिसमें स्थिति और संचालन को वस्तुओं में बंडल किया जाता है जो विधियों को आह्वान करके परस्पर क्रिया करते हैं।
Scope
यह विषय परिवर्तनीय चरों, असाइनमेंट और स्पष्ट नियंत्रण प्रवाह पर निर्मित संगणना के अनिवार्य मॉडल और वस्तु-उन्मुख अनुशासन को शामिल करता है जो अनिवार्य कार्यक्रमों को वस्तुओं, कक्षाओं, इनहेरिटेंस, एनकैप्सुलेशन और डायनामिक डिस्पैच के इर्द-गिर्द संरचित करता है। इसमें सबटाइपिंग और व्यवहारिक प्रतिस्थापनशीलता, डिज़ाइन पैटर्न और वस्तुओं तथा अमूर्त डेटा प्रकारों के बीच संबंध शामिल हैं।
Core questions
- एनकैप्सुलेशन परिवर्तनीय स्थिति की जटिलता को कैसे नियंत्रित करता है?
- एक प्रकार का दूसरे का व्यवहारिक सबटाइप होना क्या दर्शाता है?
- इनहेरिटेंस कब मदद करता है और कब यह नाजुक युग्मन बनाता है?
- वस्तुएं अमूर्त डेटा प्रकारों और मॉड्यूलों से कैसे संबंधित हैं?
Key theories
- व्यवहारिक सबटाइपिंग (लिस्कोव प्रतिस्थापन सिद्धांत)
- लिस्कोव और विंग औपचारिक रूप से बताते हैं कि कब एक सबटाइप की वस्तुएं सुपरटाइप की वस्तुओं के लिए सुरक्षित रूप से प्रतिस्थापित की जा सकती हैं, जिसके लिए सबटाइप को सुपरटाइप से अपेक्षित अवलोकन योग्य व्यवहार और अपरिवर्तनीयताओं को बनाए रखने की आवश्यकता होती है।
- संरचित प्रोग्रामिंग
- डाहल, डिज्कस्ट्रा और होरे ने समझने योग्य अनिवार्य कार्यक्रमों के आधार के रूप में अनुशासित नियंत्रण प्रवाह और चरणबद्ध शोधन को स्थापित किया, जिससे अप्रतिबंधित गोटो-आधारित नियंत्रण विस्थापित हो गया।
- डिज़ाइन पैटर्न
- गामा और सहयोगियों ने वस्तु-उन्मुख डिज़ाइन समस्याओं के आवर्ती समाधानों को सूचीबद्ध किया, जिससे सहयोगी वस्तुओं को व्यवस्थित करने के लिए एक साझा शब्दावली मिली।
Clinical relevance
वस्तु-उन्मुख डिज़ाइन अधिकांश औद्योगिक सॉफ़्टवेयर का आधार है क्योंकि एनकैप्सुलेशन और पॉलीमॉर्फिज्म बड़े पैमाने पर मॉड्यूलर विकास और कोड पुन: उपयोग का समर्थन करते हैं। लिस्कोव प्रतिस्थापन सिद्धांत और डिज़ाइन पैटर्न रखरखाव योग्य वर्ग पदानुक्रम और इंटरफेस के निर्माण के लिए व्यावहारिक मार्गदर्शक बने हुए हैं।
History
अनिवार्य प्रोग्रामिंग की उत्पत्ति शुरुआती संग्रहीत-प्रोग्राम मशीनों और फोरट्रान और एल्गोल जैसी भाषाओं के साथ हुई। सिमुला 67 ने कक्षाओं और इनहेरिटेंस की शुरुआत की; स्मॉलटॉक ने 1970 और 1980 के दशक में शुद्ध वस्तु अभिविन्यास और संदेश पासिंग को लोकप्रिय बनाया। C++ और बाद में जावा ने वस्तु अभिविन्यास को मुख्यधारा के उद्योग में लाया, जबकि डेटा अमूर्तता पर लिस्कोव के काम और 1994 की डिज़ाइन पैटर्न पुस्तक ने वस्तु-उन्मुख कार्यप्रणाली को व्यवस्थित किया।
Debates
- इनहेरिटेंस बनाम कंपोजिशन
- डिजाइनर इस बात पर बहस करते हैं कि कार्यान्वयन इनहेरिटेंस या वस्तु कंपोजिशन पुन: उपयोग और लचीलेपन को बेहतर ढंग से बढ़ावा देता है, जिसमें बाद के अधिकांश अभ्यास कंपोजिशन और इंटरफ़ेस-आधारित डिज़ाइन का पक्ष लेते हैं।
Key figures
- Barbara Liskov
- Ole-Johan Dahl
- Kristen Nygaard
- Alan Kay
- Edsger Dijkstra
Related topics
Seminal works
- goldberg1983
- liskov1994
- dahl1972
- gamma1994
Frequently asked questions
- लिस्कोव प्रतिस्थापन सिद्धांत क्या है?
- यह बताता है कि एक सबटाइप की वस्तुओं का उपयोग कहीं भी किया जाना चाहिए जहां सुपरटाइप की वस्तुएं अपेक्षित हैं, बिना प्रोग्राम की शुद्धता को तोड़े, जो यह नियंत्रित करता है कि सबक्लास व्यवहार को कैसे ओवरराइड कर सकते हैं।
- क्या वस्तु-उन्मुख प्रोग्रामिंग स्वाभाविक रूप से अनिवार्य है?
- शास्त्रीय वस्तु-उन्मुख प्रोग्रामिंग परिवर्तनीय वस्तु स्थिति पर निर्भर करती है और इसलिए अनिवार्य प्रोग्रामिंग का एक रूप है, हालांकि वस्तु-उन्मुख विशेषताओं को कार्यात्मक और अपरिवर्तनीय शैलियों के साथ भी जोड़ा जा सकता है।