Saturday, October 23, 2021

C# Interface in Hindi



इंटरफेस क्या है?
 
इंटरफ़ेस का शाब्दिक अर्थ है किसी दो चीज के बीच में कार्य करने का साधन जैसे यूज़र इंटरफ़ेस। जब हम यूज़र इंटरफ़ेस कहते हैं तो यह यूजर और सिस्टम के बीच में इंटरफ़ेस होता है।

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज के अंतर्गत हमने इन्हेरिटेंस के बारे में अध्ययन किया है जिसके अंतर्गत हमने देखा कि कैसे एक क्लास दूसरे क्लास को इन्हेरीट कर उसके मेंबर्स को कन्ज्यूम करता है। सी शार्प प्रोग्रामिंग लैंग्वेज के अंतर्गत हमने सीखा कि यद्यपि एक क्लास दूसरे क्लास को इन्हेरीट कर सकता है तथापि एक क्लास एक से ज्यादा क्लास को इन्हेरीट नहीं कर सकता है। दूसरे शब्दों में सी शार्प प्रोग्रामिंग लैंग्वेज मल्टीप्ल इन्हेरिटेंस को सपोर्ट नहीं करता है।

सी शार्प प्रोग्रामिंग लैंग्वेज मल्टीप्ल इन्हेरिटेंस की जगह मल्टीपल इंटरफेस को एक क्लास द्वारा इन्हेरीट करना संभव बनाता है। यद्यपि एक क्लास एक ही दूसरे क्लास को इन्हेरीट कर सकता है परंतु क्लास एक या एक से अधिक इंटरफेस को इन्हेरीट कर सकता है। एक क्लास एक साथ दूसरे क्लास और कई सारे इंटरफ़ेस को इन्हेरीट कर सकता है।

आखिर क्लास और इंटरफ़ेस में क्या अंतर होता है? जैसा कि हमने देखा कि एक क्लास के भीतर मेंबर फ़ील्ड्स और मेंबर मेथड्स होते हैं परंतु इंटरफ़ेस के भीतर मेंबर फ़ील्ड्स नहीं होते हैं, उसमें एब्सट्रेक्ट पब्लिक मेथड्स होते हैं। 

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

जैसा कि एक क्लास जब दूसरे क्लास को इन्हेरीट करता है तो वह अपने पेरेंट क्लास के मेथड्स को सीधे कंज्यूम कर सकता है अथवा मेथड्स को ओवरराइड कर, दूसरे शब्दों में, उसे रीइंप्लीमेंट कर कंज्यूम कर सकता है परंतु इंटरफ़ेस की स्थिति में जब भी कोई क्लास इंटरफ़ेस को इन्हेरीट करता है तो वह हर हाल में अनिवार्यतः इंटरफ़ेस के मेथड्स को इंप्लीमेंट करता है क्योंकि इंटरफेस के भीतर मेथड्स एब्सट्रेक्ट होते हैं। उनका कोई इंप्लीमेंटेशन इंटरफेस के भीतर नहीं होता है अतः क्लास जब भी इंटरफेस को इन्हेरीट करेगा तो उस इंटरफेस के मेथड्स को इंप्लीमेंट अवश्य करेगा। उदाहरण के लिए, InterfaceEx इंटरफ़ेस को कंज्यूम करने के लिए AddClass  क्लास InterfaceEx इंटरफ़ेस के सारे मेथड्स को इम्प्लीमेंट करता है।
namespace InterfaceEx
{
    interface MyInterface
    {
        int Calculate(int num1, int num2);
        void DisplayResult(int result);
    }
}

using System;

namespace InterfaceEx
{
    class AddClass : MyInterface
    {
        public int Calculate(int num1, int num2)
        {
            return num1 + num2;
        }

        public void DisplayResult(int result)
        {
            Console.WriteLine("Sum of two integers: {0}", result.ToString());
        }
    }
}
Program क्लास एक क्लाइंट क्लास है जो अंततः AddClass क्लास को कंज्यूम करता है।
using System;

namespace InterfaceEx
{
    class Program
    {
        static void Main(string[] args)
        {
            AddClass c1 = new AddClass();
            c1.DisplayResult(c1.Calculate(20, 40));
            Console.ReadLine();
        }
    }
}
२) क्लास जब किसी इंटरफ़ेस को इन्हेरीट करता है तो इंटरफेस के सारे मेथड्स को अनिवार्यतः इंप्लीमेंट करता है, ऐसा नहीं हो सकता है कि वह किसी मेथड को बिना इंप्लीमेंट किए इंटरफेस को कंज्यूम कर ले।

३) इंटरफ़ेस के सारे मेथड्स पब्लिक और एब्सट्रेक्ट होते हैं परंतु उन मेथड्स के साथ public और abstract कीवर्ड्स का प्रयोग वर्जित है।

४) इंटरफ़ेस के भीतर मेंबर फ़ील्ड्स नहीं होते हैं।

५) क्लास के साथ केवल public या internal एक्सेस modifier यूज हो सकता है। इसी तरह, इंटरफेस के साथ public या internal एक्सेस modifier यूज हो सकता है।

६) क्लास का इंस्टेन्स बनाया जा सकता है लेकिन इंटरफ़ेस का इंस्टेन्स कदापि नहीं बनाया जा सकता है।

७) एक इंटरफ़ेस दूसरे इंटरफ़ेस को इन्हेरिट कर सकता है।

८) दो इंटरफ़ेस के भीतर एक ही मेथड सिग्नेचर के समान नाम के मेथड्स हो सकते हैं। जब कोई क्लास इन दोनों ही इंटरफ़ेस को इम्प्लीमेंट करता है तो उसे निम्नलिखित तरीके को अपनाना पड़ता है।

© अजीत कुमार, सर्वाधिकार सुरक्षित।

इस आलेख को उद्धृत करते हुए इस लेख के लिंक का भी विवरण दें। इस आलेख को कॉपीराइट सूचना के साथ यथावत साझा करने की अनुमति है। कृपया इसे ऐसे स्थान पर साझा न करें जहाँ इसे देखने के लिए शुल्क देना पडे।

No comments:

Post a Comment

Hot Topics