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

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


=== क्लास/ऑब्जेक्ट इंटरफेस को बदलना ===
=== वर्ग/ऑब्जेक्ट इंटरफेस को बदलना ===
{{Main|एडेप्टर प्रारूप}}
{{Main|एडेप्टर प्रारूप}}


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> मूल फ़ंक्शन के सभी कॉल को आवरण पर कॉल के साथ प्रतिस्थापित किया जा सकता है, जिससे प्रोग्रामर को आवरण लिखे जाने के बाद त्रुटि जाँच के बारे में भूलने की अनुमति मिलती है।


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


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


@Override
@Override

Revision as of 09:31, 3 March 2023

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

उद्देश्य

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

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

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

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

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

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

कोड परीक्षण

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


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

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

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

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

@Override // इसमें डेटा सदस्य और डेटा विधियाँ शामिल हैं // सहसंयोजक वापसी

} </वाक्यविन्यास हाइलाइट>

लाइब्रेरी फ़ंक्शंस और सिस्टम कॉल्स

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

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


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

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