रैपर फ़ंक्शन: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{About|प्रोग्रामिंग संरचना|ग्राफिक्स में आवरण|आवरण (ग्राफिक्स)}} | {{About|प्रोग्रामिंग संरचना|ग्राफिक्स में आवरण|आवरण (ग्राफिक्स)}} | ||
{{redirect|आवरण विधि|सुविधा चयन में आवरण विधियाँ|विशिष्ट चयन#आवरण विधि}} | {{redirect|आवरण विधि|सुविधा चयन में आवरण विधियाँ|विशिष्ट चयन#आवरण विधि}} | ||
एक | एक रैपरआवरण फ़ंक्शन एक [[पुस्तकालय (कम्प्यूटिंग)]] या एक [[कंप्यूटर प्रोग्राम]] में एक फ़ंक्शन (कंप्यूटर प्रोग्रामिंग) ('सबरूटीन' के लिए दूसरा शब्द) है जिसका मुख्य उद्देश्य दूसरे सबरूटीन को कॉल करना है<ref>{{cite book |title=Using Visual Basic 6 |last=Reselman |first=Bob |author2=Peasley, Richard |author3=Pruchniak, Wayne |year=1998 |publisher=Que |isbn=9780789716330 |page=446 |url=https://books.google.com/books?id=X5ZQAAAAMAAJ }}</ref> या एक [[सिस्टम कॉल]] जिसमें बहुत कम या कोई अतिरिक्त संगणना नहीं है। रैपरआवरण फ़ंक्शंस का उपयोग सबरूटीन के अंतर्निहित कार्यान्वयन के विवरण को अमूर्त करके कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए किया जाता है। | ||
== उद्देश्य == | == उद्देश्य == | ||
Line 7: | Line 7: | ||
=== प्रोग्रामिंग सुविधा === | === प्रोग्रामिंग सुविधा === | ||
कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए | कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए रैपरआवरण फ़ंक्शंस का उपयोग किया जा सकता है। इसका एक उदाहरण है <code>MouseAdapter</code> और [[जावा एडब्ल्यूटी]] लाइब्रेरी में समान कक्षाएं।<ref>[http://java.sun.com/docs/books/tutorial/uiswing/events/mouselistener.html The Java Tutorials]</ref> | ||
रैपरआवरण फ़ंक्शंस उन अनुप्रयोगों के विकास में उपयोगी होते हैं जो तृतीय-पक्ष लाइब्रेरी फ़ंक्शंस का उपयोग करते हैं। प्रत्येक तीसरे पक्ष के कार्यों के लिए एक रैपरआवरण लिखा जा सकता है और मूल एप्लिकेशन में उपयोग किया जाता है। यदि तीसरे पक्ष के कार्यों में परिवर्तन होता है या अद्यतन किया जाता है, तो मूल अनुप्रयोग में केवल तृतीय पक्ष कार्यों के सभी उदाहरणों को बदलने के विरोध में मूल अनुप्रयोग में रैपरआवरण को संशोधित करने की आवश्यकता होती है। | |||
=== क्लास/ऑब्जेक्ट इंटरफेस को बदलना === | === क्लास/ऑब्जेक्ट इंटरफेस को बदलना === | ||
{{Main|अनुकूलित्र प्रारूप}} | {{Main|अनुकूलित्र प्रारूप}} | ||
रैपरआवरण फ़ंक्शंस का उपयोग किसी मौजूदा वर्ग या ऑब्जेक्ट को एक अलग इंटरफ़ेस रखने के लिए [[एडेप्टर पैटर्न]] के लिए किया जा सकता है। मौजूदा लाइब्रेरी कोड का उपयोग करते समय यह विशेष रूप से उपयोगी होता है। | |||
=== कोड परीक्षण === | === कोड परीक्षण === | ||
रैपरआवरण फ़ंक्शंस का उपयोग फ़ंक्शन के लिए प्रत्येक कॉल के लिए एक ही त्रुटि जांच को दोहराकर बड़ी मात्रा में कोड की लंबाई बढ़ाए बिना पूर्व-मौजूदा सिस्टम फ़ंक्शंस के लिए [[डीबगर]] रूटीन लिखने के लिए किया जा सकता है।<ref>{{cite book |title=UNIX Network Programming |last=Stevens |first=Richard |author2=Fenner, Bill |author3=Rudoff |author4= Andrew M. |year=2003 |publisher=Addison-Wesley |isbn=9780131411555 |pages=5–6, 29 |url=https://books.google.com/books?id=ptSC4LpwGA0C }}</ref> मूल फ़ंक्शन के सभी कॉल को रैपरआवरण पर कॉल के साथ प्रतिस्थापित किया जा सकता है, जिससे प्रोग्रामर को रैपरआवरण लिखे जाने के बाद त्रुटि जाँच के बारे में भूलने की अनुमति मिलती है। | |||
एक परीक्षण चालक एक प्रकार का | एक परीक्षण चालक एक प्रकार का रैपरआवरण फ़ंक्शन है जो एक कोड मॉड्यूल का प्रयोग करता है, आमतौर पर इसे विभिन्न सेटिंग्स या पैरामीटर के साथ बार-बार कॉल करता है, ताकि प्रत्येक संभावित पथ को सख्ती से आगे बढ़ाया जा सके। यह डिलिवरेबल कोड नहीं है, लेकिन फेंका हुआ कोड भी नहीं है, जिसे आमतौर पर [[प्रतिगमन परीक्षण]] में उपयोग के लिए रखा जाता है। | ||
एक इंटरफ़ेस एडेप्टर एक प्रकार का | एक इंटरफ़ेस एडेप्टर एक प्रकार का रैपरआवरण फ़ंक्शन है जो उपयोगकर्ता के लिए इसे अधिक समझदार या प्रासंगिक बनाने के इरादे से एक कोड मॉड्यूल में इंटरफ़ेस को सरल, दर्जी या प्रवर्धित करता है। यह मापदंडों का नाम बदल सकता है, मापदंडों को जोड़ सकता है, मापदंडों के लिए डिफ़ॉल्ट सेट कर सकता है, और पसंद कर सकता है। | ||
=== [[एकाधिक वंशानुक्रम]] === | === [[एकाधिक वंशानुक्रम]] === | ||
एक [[प्रोग्रामिंग भाषा]] में जो बेस क्लास के मल्टीपल इनहेरिटेंस को सपोर्ट नहीं करती है, | एक [[प्रोग्रामिंग भाषा]] में जो बेस क्लास के मल्टीपल इनहेरिटेंस को सपोर्ट नहीं करती है, रैपरआवरण फ़ंक्शंस का इस्तेमाल इसे अनुकरण करने के लिए किया जा सकता है। नीचे [[जावा (प्रोग्रामिंग भाषा)]] क्लास के एक हिस्से का उदाहरण दिया गया है जो लिंक्डलिस्ट और हैशसेट से विरासत में मिला है। अधिक कार्यान्वयन विवरण के लिए [[विधि (कंप्यूटर प्रोग्रामिंग)]] देखें। | ||
<वाक्यविन्यास प्रकाश लैंग = जावा> | <वाक्यविन्यास प्रकाश लैंग = जावा> | ||
पब्लिक क्लास टेस्ट लिंक्डलिस्ट, हैशसेट को लागू करता है { | पब्लिक क्लास टेस्ट लिंक्डलिस्ट, हैशसेट को लागू करता है { | ||
Line 39: | Line 39: | ||
== हेल्पर फंक्शन == | == हेल्पर फंक्शन == | ||
एक सहायक कार्य एक ऐसा कार्य है जो वर्णनात्मक नाम निर्दिष्ट करके और [[गणना]]ओं के पुन: उपयोग की अनुमति देकर संगणना के कुछ हिस्सों को समूहित करता है।<ref>{{cite web|url=https://web.cs.wpi.edu/~cs1101/a05/Docs/creating-helpers.html|archive-url=https://web.archive.org/web/20210507033146/https://web.cs.wpi.edu/~cs1101/a05/Docs/creating-helpers.html|archive-date=7 May 2021|title=CS 1101: Helper functions|first=Kathi|last=Fisler|publisher=[[Worcester Polytechnic Institute]]|year=2005|access-date=17 November 2021|url-status=live}}</ref> हालांकि सभी | एक सहायक कार्य एक ऐसा कार्य है जो वर्णनात्मक नाम निर्दिष्ट करके और [[गणना]]ओं के पुन: उपयोग की अनुमति देकर संगणना के कुछ हिस्सों को समूहित करता है।<ref>{{cite web|url=https://web.cs.wpi.edu/~cs1101/a05/Docs/creating-helpers.html|archive-url=https://web.archive.org/web/20210507033146/https://web.cs.wpi.edu/~cs1101/a05/Docs/creating-helpers.html|archive-date=7 May 2021|title=CS 1101: Helper functions|first=Kathi|last=Fisler|publisher=[[Worcester Polytechnic Institute]]|year=2005|access-date=17 November 2021|url-status=live}}</ref> हालांकि सभी रैपरआवरण सहायक कार्य नहीं होते हैं, सभी सहायक कार्य रैपरआवरण होते हैं, और सहायक कार्यों का एक उल्लेखनीय उपयोग - समूहीकरण अक्सर उपयोग किए जाने वाले संचालन - Binary_translation#Dynamic_binary_translation में होता है, जिसमें [[मशीन कोड]] के अनुवाद में एक विशेष [[कंप्यूटर आर्किटेक्चर]] के सहायक कार्यों का उपयोग किया जाता है एक निर्देश दूसरे में आर्किटेक्चर सेट करता है।<ref>{{cite conference|title=Helper function inlining in dynamic binary translation|conference= CC: Compiler Construction|publisher=[[Association for Computing Machinery]]|first=Wenwen|last=Wang|doi=10.1145/3446804.3446851|page=107|url=https://dl.acm.org/doi/10.1145/3446804.3446851|location=New York, United States|isbn=978-1-4503-8325-7|date=3 March 2021}}</ref> | ||
== यह भी देखें == | == यह भी देखें == | ||
* [[रैपर लाइब्रेरी]] | * [[रैपर लाइब्रेरी|रैपरआवरण लाइब्रेरी]] | ||
* [[चालक आवरण]] | * [[चालक आवरण]] | ||
* एडेप्टर पैटर्न | * एडेप्टर पैटर्न |
Revision as of 08:52, 3 March 2023
एक रैपरआवरण फ़ंक्शन एक पुस्तकालय (कम्प्यूटिंग) या एक कंप्यूटर प्रोग्राम में एक फ़ंक्शन (कंप्यूटर प्रोग्रामिंग) ('सबरूटीन' के लिए दूसरा शब्द) है जिसका मुख्य उद्देश्य दूसरे सबरूटीन को कॉल करना है[1] या एक सिस्टम कॉल जिसमें बहुत कम या कोई अतिरिक्त संगणना नहीं है। रैपरआवरण फ़ंक्शंस का उपयोग सबरूटीन के अंतर्निहित कार्यान्वयन के विवरण को अमूर्त करके कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए किया जाता है।
उद्देश्य
आवरण कार्य प्रत्यायोजन (प्रोग्रामिंग) का एक साधन है और इसका उपयोग कई उद्देश्यों के लिए किया जा सकता है।
प्रोग्रामिंग सुविधा
कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए रैपरआवरण फ़ंक्शंस का उपयोग किया जा सकता है। इसका एक उदाहरण है MouseAdapter
और जावा एडब्ल्यूटी लाइब्रेरी में समान कक्षाएं।[2]
रैपरआवरण फ़ंक्शंस उन अनुप्रयोगों के विकास में उपयोगी होते हैं जो तृतीय-पक्ष लाइब्रेरी फ़ंक्शंस का उपयोग करते हैं। प्रत्येक तीसरे पक्ष के कार्यों के लिए एक रैपरआवरण लिखा जा सकता है और मूल एप्लिकेशन में उपयोग किया जाता है। यदि तीसरे पक्ष के कार्यों में परिवर्तन होता है या अद्यतन किया जाता है, तो मूल अनुप्रयोग में केवल तृतीय पक्ष कार्यों के सभी उदाहरणों को बदलने के विरोध में मूल अनुप्रयोग में रैपरआवरण को संशोधित करने की आवश्यकता होती है।
क्लास/ऑब्जेक्ट इंटरफेस को बदलना
रैपरआवरण फ़ंक्शंस का उपयोग किसी मौजूदा वर्ग या ऑब्जेक्ट को एक अलग इंटरफ़ेस रखने के लिए एडेप्टर पैटर्न के लिए किया जा सकता है। मौजूदा लाइब्रेरी कोड का उपयोग करते समय यह विशेष रूप से उपयोगी होता है।
कोड परीक्षण
रैपरआवरण फ़ंक्शंस का उपयोग फ़ंक्शन के लिए प्रत्येक कॉल के लिए एक ही त्रुटि जांच को दोहराकर बड़ी मात्रा में कोड की लंबाई बढ़ाए बिना पूर्व-मौजूदा सिस्टम फ़ंक्शंस के लिए डीबगर रूटीन लिखने के लिए किया जा सकता है।[3] मूल फ़ंक्शन के सभी कॉल को रैपरआवरण पर कॉल के साथ प्रतिस्थापित किया जा सकता है, जिससे प्रोग्रामर को रैपरआवरण लिखे जाने के बाद त्रुटि जाँच के बारे में भूलने की अनुमति मिलती है।
एक परीक्षण चालक एक प्रकार का रैपरआवरण फ़ंक्शन है जो एक कोड मॉड्यूल का प्रयोग करता है, आमतौर पर इसे विभिन्न सेटिंग्स या पैरामीटर के साथ बार-बार कॉल करता है, ताकि प्रत्येक संभावित पथ को सख्ती से आगे बढ़ाया जा सके। यह डिलिवरेबल कोड नहीं है, लेकिन फेंका हुआ कोड भी नहीं है, जिसे आमतौर पर प्रतिगमन परीक्षण में उपयोग के लिए रखा जाता है। एक इंटरफ़ेस एडेप्टर एक प्रकार का रैपरआवरण फ़ंक्शन है जो उपयोगकर्ता के लिए इसे अधिक समझदार या प्रासंगिक बनाने के इरादे से एक कोड मॉड्यूल में इंटरफ़ेस को सरल, दर्जी या प्रवर्धित करता है। यह मापदंडों का नाम बदल सकता है, मापदंडों को जोड़ सकता है, मापदंडों के लिए डिफ़ॉल्ट सेट कर सकता है, और पसंद कर सकता है।
एकाधिक वंशानुक्रम
एक प्रोग्रामिंग भाषा में जो बेस क्लास के मल्टीपल इनहेरिटेंस को सपोर्ट नहीं करती है, रैपरआवरण फ़ंक्शंस का इस्तेमाल इसे अनुकरण करने के लिए किया जा सकता है। नीचे जावा (प्रोग्रामिंग भाषा) क्लास के एक हिस्से का उदाहरण दिया गया है जो लिंक्डलिस्ट और हैशसेट से विरासत में मिला है। अधिक कार्यान्वयन विवरण के लिए विधि (कंप्यूटर प्रोग्रामिंग) देखें। <वाक्यविन्यास प्रकाश लैंग = जावा> पब्लिक क्लास टेस्ट लिंक्डलिस्ट, हैशसेट को लागू करता है {
@Override // इसमें डेटा सदस्य और डेटा विधियाँ शामिल हैं // सहसंयोजक वापसी
} </वाक्यविन्यास हाइलाइट>
लाइब्रेरी फ़ंक्शंस और सिस्टम कॉल्स
कई मानक पुस्तकालय कार्य, जैसे कि सी मानक पुस्तकालय में, सिस्टम कॉल के अमूर्त (कंप्यूटर विज्ञान) आयन के लिए इंटरफ़ेस (कंप्यूटिंग) के रूप में कार्य करते हैं। glibc में fork और execve प्रकार्य इसके उदाहरण हैं। वे कम स्तर|लोअर-लेवल कांटा (ऑपरेटिंग सिस्टम) को कॉल करते हैं और सिस्टम कॉल को क्रमशः निष्पादित करते हैं।
यह समान रूप से नामित सिस्टम कॉल के बजाय उच्च-स्तरीय लाइब्रेरी कॉल को संदर्भित करने के लिए गलत तरीके से शब्द सिस्टम कॉल और सिस्कल का उपयोग कर सकता है, जिसे वे लपेटते हैं।[4][5]
हेल्पर फंक्शन
एक सहायक कार्य एक ऐसा कार्य है जो वर्णनात्मक नाम निर्दिष्ट करके और गणनाओं के पुन: उपयोग की अनुमति देकर संगणना के कुछ हिस्सों को समूहित करता है।[6] हालांकि सभी रैपरआवरण सहायक कार्य नहीं होते हैं, सभी सहायक कार्य रैपरआवरण होते हैं, और सहायक कार्यों का एक उल्लेखनीय उपयोग - समूहीकरण अक्सर उपयोग किए जाने वाले संचालन - Binary_translation#Dynamic_binary_translation में होता है, जिसमें मशीन कोड के अनुवाद में एक विशेष कंप्यूटर आर्किटेक्चर के सहायक कार्यों का उपयोग किया जाता है एक निर्देश दूसरे में आर्किटेक्चर सेट करता है।[7]
यह भी देखें
- रैपरआवरण लाइब्रेरी
- चालक आवरण
- एडेप्टर पैटर्न
- डेकोरेटर पैटर्न
- प्रतिनिधिमंडल (प्रोग्रामिंग)
- अग्रेषण (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)
- भाषा बंधन आवरण दूसरी भाषा के लिए
- घूंट स्वचालित आवरण जनरेटर
- नेस्टेड समारोह
- आंशिक आवेदन
संदर्भ
- ↑ Reselman, Bob; Peasley, Richard; Pruchniak, Wayne (1998). Using Visual Basic 6. Que. p. 446. ISBN 9780789716330.
- ↑ The Java Tutorials
- ↑ Stevens, Richard; Fenner, Bill; Rudoff; Andrew M. (2003). UNIX Network Programming. Addison-Wesley. pp. 5–6, 29. ISBN 9780131411555.
- ↑ "syscalls(2) - Linux manual page". man7.org. Retrieved 2020-04-25.
- ↑ "System Calls (The GNU C Library)". www.gnu.org. Retrieved 2020-04-25.
- ↑ Fisler, Kathi (2005). "CS 1101: Helper functions". Worcester Polytechnic Institute. Archived from the original on 7 May 2021. Retrieved 17 November 2021.
- ↑ Wang, Wenwen (3 March 2021). Helper function inlining in dynamic binary translation. CC: Compiler Construction. New York, United States: Association for Computing Machinery. p. 107. doi:10.1145/3446804.3446851. ISBN 978-1-4503-8325-7.