इंटरफ़ेस (कंप्यूटिंग)

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

हार्डवेयर इंटरफेस


हार्डवेयर इंटरफेस कई घटकों में उपस्थित होते हैं, जैसे कि विभिन्न बसें (कंप्यूटिंग), कंप्यूटर डेटा भंडारण, अन्य I/O उपकरणों आदि। एक हार्डवेयर इंटरफेस को इंटरफेस पर मैकेनिकल, इलेक्ट्रिकल और लॉजिकल सिग्नल और अनुक्रमण के लिए प्रोटोकॉल (कभी-कभी सिग्नलिंग कहा जाता है) द्वारा वर्णित किया जाता है।। एक मानक इंटरफ़ेस, जैसे SCSI, कंप्यूटिंग हार्डवेयर के डिज़ाइन और परिचय को अलग करता है, जैसे कि I/O उपकरणों, कंप्यूटिंग प्रणाली के अन्य घटकों के डिज़ाइन और परिचय से, जिससे उपयोगकर्ताओं और निर्माताओं को कंप्यूटिंग प्रणाली के कार्यान्वयन में बहुत लचीलापन मिलता है। हार्डवेयर इंटरफेस डेटा के कुछ हिस्सों को एक साथ ले जाने वाले कई विद्युत कनेक्शनों के साथ समानांतर संचार हो सकता है या क्रमिक संचार जहां डेटा एक समय में एक अंश भेजा जाता है।

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

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

सॉफ्टवेयर घटकों के बीच इंटरफेस स्थिरांक (कंप्यूटर विज्ञान), डेटा प्रकार, प्रक्रियाओं के प्रकार, अपवाद विनिर्देशों और विधि हस्ताक्षर प्रदान कर सकते हैं। कभी-कभी, सार्वजनिक चरों (प्रोग्रामिंग) को एक इंटरफ़ेस के भाग के रूप में भी परिभाषित किया जाता है।

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

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

एक इंटरफ़ेस इस प्रकार एक प्रकार की परिभाषा है; कहीं भी किसी वस्तु का आदान-प्रदान किया जा सकता है (उदाहरण के लिए, किसी फ़ंक्शन या विधि कॉल में) बदले जाने वाले ऑब्जेक्ट के प्रकार को विशिष्ट वर्ग को निर्दिष्ट करने के अतिरिक्त इसके कार्यान्वित इंटरफेस या बेस-क्लास में से किसी एक के संदर्भ में परिभाषित किया जा सकता है। इस दृष्टिकोण का अर्थ है कि इंटरफ़ेस लागू करने वाले किसी भी वर्ग का उपयोग किया जा सकता है। उदाहरण के लिए, अंतिम कार्यान्वयन उपलब्ध होने से पहले विकास को प्रगति की अनुमति देने के लिए एक डमी (कंप्यूटर प्रोग्रामिंग) का उपयोग किया जा सकता है। दूसरे स्थिति में, परीक्षण के दौरान नकली या नकली कार्यान्वयन को प्रतिस्थापित किया जा सकता है। इस तरह के स्टब कार्यान्वयन को बाद में विकास प्रक्रिया में वास्तविक कोड से बदल दिया जाता है।

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

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

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

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

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

यह भी देखें

 * अमूर्त उलटा
 * अनुप्रयोग बाइनरी इंटरफ़ेस
 * अप्लिकेशन प्रोग्रामिंग अंतरफलक
 * बिजनेस इंटरोऑपरेबिलिटी इंटरफेस
 * कंप्यूटर बस
 * हार्ड डिस्क ड्राइव इंटरफ़ेस
 * कार्यान्वयन (कंप्यूटर विज्ञान)
 * कार्यान्वयन विरासत
 * इंटरऑपरेबिलिटी
 * वंशानुक्रम शब्दार्थ
 * मॉड्यूलर प्रोग्रामिंग
 * सॉफ्टवेयर घटक
 * आभासी विरासत