मेथड ओवरलोडिंग क्या है?
मेथड ओवरलोडिंग या फंक्शन ओवरलोडिंग किसी प्रोग्रामिंग लैंग्वेज का एक ऐसा फीचर है जिसका उपयोग करके हम एक ही नाम की एक से अधिक मेथड बना सकते है।
एक ही नाम की 2 मेथड होने पर कम्पाइलर कैसे तय करेगा की किस मेथड को कॉल किया गया है ?
हम एक ही नाम की एक से अधिक मेथड बना तो सकते है पर उनमे या तो पैरामीटर की संख्या भिन्न होना चाहिए या फिर पैरामीटर का डेटा टाइप।
उदहारण -
मान लो आप SMS सेंड करने के लिए sendSMS नाम से एक मेथड बनाते है। आप चाहते है कि यदि इस मेथड में कोई मोबाइल नंबर और एक मैसेज पास किया जाये तो वो मैसेज उस मोबाइल नंबर पर पहुंच जाना चाहिए और यदि कोई मोबाइल नंबर पास नहीं किया जाये तो डिफ़ॉल्ट रूप से आपके खुद के नंबर पर ही मैसेज सेंड हो जाना चाहिए।
इसके लिए आपको sendSMS मेथड के 2 वर्शन बनाना होंगे =
sendSMS(int mobileNumber, string message)
{
// Coding to send message on mobileNumber
}
sendSMS(string message)
{
// Coding to send message on your own default mobile number
}
अब यदि आप sendSMS(8817116343, "Hello"); मेथड कॉल करेंगे तो 8817116343 मोबाइल नंबर पर hello मैसेज सेंड हो जायेगा।
और यदि आप sendSMS("bye"); मेथड कॉल करेंगे तो आपके खुद के डिफ़ॉल्ट नंबर पर bye मैसेज सेंड हो जायेगा।
यहाँ हमने एक ही नाम की 2 मेथड्स से अलग अलग ऑपरेशन परफॉर्म किये है, इसे ही मेथड ओवरलोडिंग कहते है।
यहाँ हम sendSMS1 और sendSMS2 नाम से 2 अलग अलग मेथड बना सकते थे फिर हमने एक ही नाम की मेथड के 2 वर्शन क्यों बनाये ?
एक ही नाम की मेथड के एक से अधिक वर्शन बनाने (मेथड ओवरलोडिंग) का सबसे बड़ा फायदा यह है की जब हम किसी कोड एडिटर का उपयोग करके प्रोग्राम लिखते है तब मेथड का नाम लिखने पर उस मेथड के सभी वर्शन की लिस्ट खुल जाती है और हम सेलेक्ट कर सकते है की हमे किस वर्शन का उपयोग करना है।
जबकि यदि हम sendSMS1 और sendSMS2 नाम से 2 अलग अलग मेथड बनाते तो मेथड कॉल करते समय हमे इन मेथड्स के प्रोटोटाइप (पैरामीटर की संख्या और डेटा टाइप) पता होना चाहिए।
ऊपर दिखाए गए स्क्रीन-शॉट में विसुअल स्टूडियो में sendSMS मेथड के वर्शन की लिस्ट प्रदर्शित की गयी है।
मेथड ओवरलोडिंग के अन्य फायदे :
मेथड ओवरलोडिंग से कुछ अन्य फायदे भी होते है जिसे माइक्रो लेवल पर एनालिसिस किया जा सकता है पर सामान्यतः एनालिसिस नहीं किया जा सकता। उदाहरण के लिए मेथड ओवर लोडिंग से मेमोरी स्पेस बचती है, और प्रोग्राम का एक्सेक्यूशन फ़ास्ट हो जाता है। पर यह बहुत ही माइक्रो लेवल पर होता है इसलिए इसका वर्णन करना उचित नहीं होगा।
मान लो यदि आप किसी प्रोजेक्ट पर काम कर रहे हो जिसमे एक तरह के ऑपरेशन परफॉर्म करने के लिए 15 अलग अलग फंक्शन बनाये गए है। और कुछ महीने या साल बाद यदि आप उस प्रोजेक्ट की कोडिंग देखेंगे तब आपके लिए रिकॉल करना बहुत मुश्किल होगा की आपने किस फंक्शन का केसा प्रोटोटाइप डिफाइन किया था या किस फंक्शन की बॉडी में क्या कोडिंग लिखी थी।
पर यदि आपने एक ही फंक्शन के 15 वर्शन बनाये होते तो आपके लिए रिकॉल करना बहुत आसान होगा और आप उस मेथड के वर्शन की लिस्ट कोड एडिटर में आसानी से देख भी पाएंगे।
c प्रोग्रामिंग नमूना कोड सीखने के लिए
ReplyDeleteसी कोड उदाहरण संरचनाओं की गतिशील सरणी