रैपर फ़ंक्शन: Difference between revisions

From Vigyanwiki
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> या [[सिस्टम कॉल|प्रणाली कॉल]] को कम या कोई अतिरिक्त संगणना के साथ कॉल करना है। आवरण फ़ंक्शंस का उपयोग सबरूटीन के अंतर्निहित कार्यान्वयन के विवरण को अमूर्त करके कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए किया जाता है।
आवरण फ़ंक्शन सॉफ़्टवेयर [[पुस्तकालय (कम्प्यूटिंग)|लाइब्रेरी (कम्प्यूटिंग)]] या [[कंप्यूटर प्रोग्राम]] में एक फ़ंक्शन (कंप्यूटर प्रोग्रामिंग) ('सबरूटीन' के लिए दूसरा शब्द) है जिसका मुख्य उद्देश्य दूसरे सबरूटीन<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> या [[सिस्टम कॉल|प्रणाली कॉल]] को कम या कोई अतिरिक्त संगणना के साथ कॉल करना है। आवरण फ़ंक्शंस का उपयोग सबरूटीन के अंतर्निहित कार्यान्वयन के विवरण को अमूर्त करके कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए किया जाता है।


== उद्देश्य ==
== उद्देश्य ==
आवरण कार्य प्रत्यायोजन (प्रोग्रामिंग) का एक साधन है और इसका उपयोग कई उद्देश्यों के लिए किया जा सकता है।
आवरण कार्य प्रत्यायोजन (प्रोग्रामिंग) का साधन है और इसका उपयोग कई उद्देश्यों के लिए किया जा सकता है।


=== प्रोग्रामिंग सुविधा ===
=== प्रोग्रामिंग सुविधा ===
कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए आवरण फ़ंक्शंस का उपयोग किया जा सकता है। इसका एक उदाहरण [[जावा एडब्ल्यूटी]] लाइब्रेरी में <code>MouseAdapter</code> इसी तरह की कक्षाएं हैं।<ref>[http://java.sun.com/docs/books/tutorial/uiswing/events/mouselistener.html The Java Tutorials]</ref>
कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए आवरण फ़ंक्शंस का उपयोग किया जा सकता है। इसका उदाहरण [[जावा एडब्ल्यूटी]] लाइब्रेरी में <code>MouseAdapter</code> इसी प्रकार की कक्षाएं हैं।<ref>[http://java.sun.com/docs/books/tutorial/uiswing/events/mouselistener.html The Java Tutorials]</ref>


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


=== वर्ग/ऑब्जेक्ट इंटरफेस को बदलना ===
=== वर्ग/ऑब्जेक्ट इंटरफेस को बदलना ===
Line 19: Line 19:
आवरण फ़ंक्शंस का उपयोग फ़ंक्शन के लिए प्रत्येक कॉल के लिए एक ही त्रुटि जांच को दोहराकर बड़ी मात्रा में कोड की लंबाई बढ़ाए बिना पूर्व-आधुनिक प्रणाली फ़ंक्शंस के लिए [[डीबगर]] रूटीन लिखने के लिए किया जा सकता है।<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> मूल फ़ंक्शन के सभी कॉल को आवरण पर कॉल के साथ प्रतिस्थापित किया जा सकता है, जिससे प्रोग्रामर को आवरण लिखे जाने के बाद त्रुटि जाँच के बारे में भूलने की अनुमति मिलती है।
आवरण फ़ंक्शंस का उपयोग फ़ंक्शन के लिए प्रत्येक कॉल के लिए एक ही त्रुटि जांच को दोहराकर बड़ी मात्रा में कोड की लंबाई बढ़ाए बिना पूर्व-आधुनिक प्रणाली फ़ंक्शंस के लिए [[डीबगर]] रूटीन लिखने के लिए किया जा सकता है।<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> मूल फ़ंक्शन के सभी कॉल को आवरण पर कॉल के साथ प्रतिस्थापित किया जा सकता है, जिससे प्रोग्रामर को आवरण लिखे जाने के बाद त्रुटि जाँच के बारे में भूलने की अनुमति मिलती है।


परीक्षण चालक एक प्रकार का आवरण फ़ंक्शन है जो कोड मॉड्यूल का प्रयोग करता है, सामान्यतः इसे विभिन्न सेटिंग्स या पैरामीटर के साथ बार-बार कॉल करता है, जिससे प्रत्येक संभावित पथ को सख्ती से आगे बढ़ाया जा सके। यह बांटने योग्य कोड नहीं है, किन्तु यह अस्थायी योग्य कोड नहीं है, जिसे सामान्यतः [[प्रतिगमन परीक्षण]] में उपयोग के लिए रखा जाता है।


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


=== [[एकाधिक वंशानुक्रम]] ===
=== [[एकाधिक वंशानुक्रम]] ===
एक [[प्रोग्रामिंग भाषा]] में जो आधार वर्ग के विविध वंशानुक्रम की सहायता नहीं करती है, आवरण फ़ंक्शंस का उपयोग इसे अनुकरण करने के लिए किया जा सकता है। नीचे [[जावा (प्रोग्रामिंग भाषा)]] वर्ग के एक भाग का उदाहरण दिया गया है जो लिंक्डलिस्ट और हैशसेट से विरासत में मिला है। अधिक कार्यान्वयन विवरण के लिए [[विधि (कंप्यूटर प्रोग्रामिंग)]] देखें।<syntaxhighlight lang="d">
[[प्रोग्रामिंग भाषा]] में जो आधार वर्ग के विविध वंशानुक्रम की सहायता नहीं करती है, आवरण फ़ंक्शंस का उपयोग इसे अनुकरण करने के लिए किया जा सकता है। नीचे [[जावा (प्रोग्रामिंग भाषा)]] वर्ग के एक भाग का उदाहरण दिया गया है जो लिंक्डलिस्ट और हैशसेट से विरासत में मिला है। अधिक कार्यान्वयन विवरण के लिए [[विधि (कंप्यूटर प्रोग्रामिंग)]] देखें।<syntaxhighlight lang="d">
public class Test implements LinkedList, HashSet{
public class Test implements LinkedList, HashSet{


Line 42: Line 41:


== हेल्पर फंक्शन ==
== हेल्पर फंक्शन ==
एक सहायक कार्य एक ऐसा कार्य है जो वर्णनात्मक नाम निर्दिष्ट करके और [[गणना]]ओं के पुन: उपयोग की अनुमति देकर संगणना के कुछ भागों को समूहित करता है।<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 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>
सहायक कार्य एक ऐसा कार्य है जो वर्णनात्मक नाम निर्दिष्ट करके और [[गणना]]ओं के पुन: उपयोग की अनुमति देकर संगणना के कुछ भागों को समूहित करता है।<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 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 10:11, 3 March 2023

आवरण फ़ंक्शन सॉफ़्टवेयर लाइब्रेरी (कम्प्यूटिंग) या कंप्यूटर प्रोग्राम में एक फ़ंक्शन (कंप्यूटर प्रोग्रामिंग) ('सबरूटीन' के लिए दूसरा शब्द) है जिसका मुख्य उद्देश्य दूसरे सबरूटीन[1] या प्रणाली कॉल को कम या कोई अतिरिक्त संगणना के साथ कॉल करना है। आवरण फ़ंक्शंस का उपयोग सबरूटीन के अंतर्निहित कार्यान्वयन के विवरण को अमूर्त करके कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए किया जाता है।

उद्देश्य

आवरण कार्य प्रत्यायोजन (प्रोग्रामिंग) का साधन है और इसका उपयोग कई उद्देश्यों के लिए किया जा सकता है।

प्रोग्रामिंग सुविधा

कंप्यूटर प्रोग्राम लिखने को आसान बनाने के लिए आवरण फ़ंक्शंस का उपयोग किया जा सकता है। इसका उदाहरण जावा एडब्ल्यूटी लाइब्रेरी में MouseAdapter इसी प्रकार की कक्षाएं हैं।[2]

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

वर्ग/ऑब्जेक्ट इंटरफेस को बदलना

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

कोड परीक्षण

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

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

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

एकाधिक वंशानुक्रम

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

public class Test implements LinkedList, HashSet{

@Override
//contains data members and data methods
//covariant return

}

लाइब्रेरी फ़ंक्शंस और प्रणाली कॉल्स

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

यह समान रूप से नामित प्रणाली कॉल के अतिरिक्त उच्च-स्तरीय लाइब्रेरी कॉल को संदर्भित करने के लिए गलत विधि से शब्द प्रणाली कॉल और सिस्कल का उपयोग कर सकता है, जिसे वे लपेटते हैं।[4][5]


हेल्पर फंक्शन

सहायक कार्य एक ऐसा कार्य है जो वर्णनात्मक नाम निर्दिष्ट करके और गणनाओं के पुन: उपयोग की अनुमति देकर संगणना के कुछ भागों को समूहित करता है।[6] चूंकि सभी आवरण सहायक कार्य नहीं होते हैं, सभी सहायक कार्य आवरण होते हैं, और सहायक कार्यों का उल्लेखनीय उपयोग - अक्सर उपयोग किए जाने वाले संचालन को गतिशील बाइनरी अनुवाद में होता है, जिसमें मशीन कोड के अनुवाद में एक विशेष कंप्यूटर आर्किटेक्चर के सहायक कार्यों का उपयोग किया जाता है, एक निर्देश दूसरे में आर्किटेक्चर सेट करता है।[7]


यह भी देखें

संदर्भ

  1. Reselman, Bob; Peasley, Richard; Pruchniak, Wayne (1998). Using Visual Basic 6. Que. p. 446. ISBN 9780789716330.
  2. The Java Tutorials
  3. Stevens, Richard; Fenner, Bill; Rudoff; Andrew M. (2003). UNIX Network Programming. Addison-Wesley. pp. 5–6, 29. ISBN 9780131411555.
  4. "syscalls(2) - Linux manual page". man7.org. Retrieved 2020-04-25.
  5. "System Calls (The GNU C Library)". www.gnu.org. Retrieved 2020-04-25.
  6. Fisler, Kathi (2005). "CS 1101: Helper functions". Worcester Polytechnic Institute. Archived from the original on 7 May 2021. Retrieved 17 November 2021.
  7. 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.