सार विधि

प्रॉक्सी चुनें और खरीदें

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं में एब्सट्रैक्ट मेथड एक अनूठी विशेषता है, जैसे कि जावा, पायथन और C#। इन विधियों को एक एब्सट्रैक्ट क्लास में घोषित किया जाता है, लेकिन इनमें कोई कार्यान्वयन विवरण नहीं होता है। इसका उद्देश्य अन्य क्लासों को विधियों के व्यवहार को परिभाषित करने के लिए एक खाका प्रदान करना है।

ऐतिहासिक उत्पत्ति और प्रथम उल्लेख

अमूर्त विधियाँ, और सामान्यतः अमूर्त वर्ग, की जड़ें अमूर्त डेटा प्रकारों की अवधारणा में होती हैं, जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का एक मुख्य तत्व है। यह विचार पहली बार 1960 के दशक के दौरान सिमुला प्रोग्रामिंग भाषा में पेश किया गया था। हालाँकि, अमूर्त विधियों का पूर्ण अनुप्रयोग बाद की उच्च-स्तरीय भाषाओं जैसे C++, Java, C# और Python में स्पष्ट हो गया, जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग सिद्धांतों का पूरी तरह से समर्थन करते हैं।

सार विधियों पर गहराई से नज़र डालें

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

अमूर्त विधि को किसी भी ठोस (यानी, गैर-अमूर्त) उपवर्ग के लिए एक संविदात्मक दायित्व के रूप में देखा जा सकता है। यह अनिवार्य करता है कि किसी भी ठोस उपवर्ग को इन विधियों के लिए कार्यान्वयन विवरण प्रदान करना चाहिए।

आंतरिक संरचना और कार्य तंत्र

एक अमूर्त विधि की आंतरिक संरचना में बिना किसी कार्यान्वयन कोड के एक अमूर्त वर्ग के भीतर इसकी घोषणा शामिल होती है। एक अमूर्त विधि को परिभाषित करने का सिंटैक्स विभिन्न प्रोग्रामिंग भाषाओं में भिन्न होता है। उदाहरण के लिए, जावा में, आप इसका उपयोग करेंगे abstract कीवर्ड:

जावा
abstract void myAbstractMethod();

जब एक ठोस वर्ग अमूर्त वर्ग का विस्तार करता है, तो उसे सभी अमूर्त तरीकों के लिए कार्यान्वयन प्रदान करना होगा। ऐसा करने में विफलता के परिणामस्वरूप संकलन-समय त्रुटि होगी।

जावा
class ConcreteClass extends AbstractClass { void myAbstractMethod() { // Implementation code goes here } }

सार विधियों की मुख्य विशेषताएं

  1. सार वर्गों में परिभाषा: अमूर्त विधियों को केवल अमूर्त वर्गों में ही परिभाषित किया जा सकता है।
  2. कोई कार्यान्वयन नहीं: इनमें कोई मुख्य भाग नहीं है, अर्थात कोई कार्यान्वयन कोड नहीं है।
  3. कार्यान्वयन को लागू करता है: अमूर्त वर्ग का विस्तार करने वाले किसी भी ठोस वर्ग को अमूर्त विधि के लिए कार्यान्वयन प्रदान करना होगा।
  4. बहुरूपता का समर्थन करता है: ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में बहुरूपता को लागू करने में सार विधियाँ एक महत्वपूर्ण घटक हैं।

सार विधियों के प्रकार

आम तौर पर, अमूर्त तरीकों के कोई विशिष्ट "प्रकार" नहीं होते हैं क्योंकि उनकी प्राथमिक विशेषता कार्यान्वयन की कमी है। हालाँकि, अमूर्त तरीकों को उनके मापदंडों, रिटर्न प्रकार और उनके द्वारा फेंके जा सकने वाले अपवादों के आधार पर विभेदित किया जा सकता है, बहुत कुछ नियमित तरीकों की तरह।

अमूर्त विधियों का उपयोग और संबंधित मुद्दे

सार विधियों का उपयोग तब किया जाता है जब कोई प्रोग्रामर उपवर्गों में कुछ व्यवहार लागू करना चाहता है। उदाहरण के लिए, एक चिड़ियाघर, एक अमूर्त वर्ग का अनुकरण करने वाले सॉफ़्टवेयर में Animal एक अमूर्त विधि हो सकती है makeSound(). प्रत्येक ठोस पशु वर्ग (जैसे Lion, Elephant, आदि) को इस विधि को लागू करना चाहिए, यह सुनिश्चित करते हुए कि प्रत्येक जानवर ध्वनि निकाल सकता है, हालांकि वास्तविक ध्वनि प्रत्येक जानवर के लिए भिन्न होती है।

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

समान अवधारणाओं के साथ तुलना

विशेषता सार विधियाँ इंटरफ़ेस विधियाँ (जावा) शुद्ध आभासी कार्य (C++)
परिभाषा एक अमूर्त वर्ग में परिभाषित एक इंटरफ़ेस में परिभाषित एक वर्ग में परिभाषित किया गया है और के रूप में चिह्नित किया गया है = 0
कार्यान्वयन जिस वर्ग में वे परिभाषित हैं, उसमें कोई कार्यान्वयन नहीं जिस इंटरफ़ेस में वे परिभाषित हैं, उसमें कोई कार्यान्वयन नहीं है जिस वर्ग में वे परिभाषित हैं, उसमें कोई कार्यान्वयन नहीं
उपवर्ग/कार्यान्वयन कक्षाएं अमूर्त विधि को लागू करना होगा इंटरफ़ेस पद्धति को लागू करना होगा शुद्ध आभासी फ़ंक्शन को लागू करना होगा
एकाधिक वंशानुक्रम जावा कक्षाओं के लिए एकाधिक वंशानुक्रम का समर्थन नहीं करता है मल्टीपल इनहेरिटेंस को अनुकरण करने के लिए इंटरफेस का उपयोग किया जा सकता है C++ एकाधिक वंशानुक्रम का समर्थन करता है

भविष्य के परिप्रेक्ष्य और प्रौद्योगिकियाँ

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

प्रॉक्सी सर्वर और सार विधियाँ

प्रॉक्सी सर्वर के संदर्भ में, डेटा भेजने या प्राप्त करने जैसे सामान्य संचालन को परिभाषित करने के लिए अमूर्त विधियों का उपयोग किया जा सकता है। उदाहरण के लिए, ProxyServer अमूर्त वर्ग में एक अमूर्त विधि हो सकती है handleRequest(). ठोस वर्ग जैसे HTTPProxyServer और SocksProxyServer इस पद्धति का विशिष्ट कार्यान्वयन प्रदान करेगा, जिससे अनुरोधों के प्रोटोकॉल-विशिष्ट प्रबंधन की अनुमति मिलेगी।

सम्बंधित लिंक्स

  1. जावा में सार विधियाँ - GeeksForGeeks
  2. पायथन में अमूर्त वर्ग – रियल पायथन
  3. C# में सार वर्ग और विधियाँ - Microsoft दस्तावेज़ीकरण
  4. प्रॉक्सी सर्वर और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग - InfoQ

के बारे में अक्सर पूछे जाने वाले प्रश्न ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में सार विधियाँ

जावा, पायथन और C# जैसी ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं में एक अमूर्त विधि एक अनूठी विशेषता है। इन विधियों को एक अमूर्त वर्ग में घोषित किया गया है लेकिन इनमें कोई कार्यान्वयन विवरण नहीं है। वे विधियों के व्यवहार को परिभाषित करने के लिए अन्य वर्गों के लिए एक खाका प्रदान करते हैं।

अमूर्त विधियाँ, और सामान्य रूप से अमूर्त वर्ग, अमूर्त डेटा प्रकारों की अवधारणा में निहित हैं, जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का एक मुख्य तत्व है। इस विचार को पहली बार 1960 के दशक के दौरान सिमुला प्रोग्रामिंग भाषा में पेश किया गया था। अमूर्त विधियों का पूर्ण अनुप्रयोग बाद की उच्च-स्तरीय भाषाओं जैसे C++, Java, C#, और Python में स्पष्ट हो गया।

सार विधियों को एक अमूर्त वर्ग के भीतर परिभाषित किया गया है और इसमें कोई निकाय नहीं है, अर्थात, उनके पास कोई कार्यान्वयन कोड नहीं है। उनका उपयोग उन विधियों के लिए प्लेसहोल्डर के रूप में किया जाता है जिन्हें किसी भी गैर-अमूर्त बाल वर्ग के भीतर बनाया जाना चाहिए। जब एक ठोस वर्ग अमूर्त वर्ग का विस्तार करता है, तो उसे सभी अमूर्त तरीकों के लिए कार्यान्वयन प्रदान करना होगा।

अमूर्त विधियों को अमूर्त वर्गों में परिभाषित किया गया है, उनका कोई कार्यान्वयन नहीं है, उपवर्गों में कुछ व्यवहार लागू होते हैं, और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में बहुरूपता का समर्थन करते हैं।

आम तौर पर, अमूर्त तरीकों के कोई विशिष्ट "प्रकार" नहीं होते हैं क्योंकि उनकी प्राथमिक विशेषता कार्यान्वयन की कमी है। हालाँकि, उन्हें उनके मापदंडों, रिटर्न प्रकार और उनके द्वारा फेंके जा सकने वाले अपवादों के आधार पर विभेदित किया जा सकता है।

अमूर्त विधियों के उपयोग से संबंधित मुद्दे अक्सर उनके उद्देश्य को गलत समझने के कारण उत्पन्न होते हैं। उदाहरण के लिए, किसी अमूर्त वर्ग को तुरंत चालू करने का प्रयास करना या किसी ठोस उपवर्ग में किसी अमूर्त विधि को लागू करना भूल जाना समस्याएँ पैदा कर सकता है।

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

डेटा भेजने या प्राप्त करने जैसे सामान्य संचालन को परिभाषित करने के लिए सार विधियों का उपयोग किया जा सकता है। उदाहरण के लिए, ए में ProxyServer अमूर्त वर्ग, एक अमूर्त विधि handleRequest() परिभाषित किया जा सकता है. ठोस वर्ग जैसे HTTPProxyServer और SocksProxyServer इस पद्धति का विशिष्ट कार्यान्वयन प्रदान करेगा।

अमूर्त विधियाँ ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का एक अनिवार्य हिस्सा बनी रहेंगी, जो भविष्य की तकनीकों जैसे कि AI प्रोग्रामिंग और प्रॉक्सी सर्वर में प्रोटोकॉल-विशिष्ट हैंडलिंग का अभिन्न अंग होंगी। वे अमूर्त व्यवहारों को परिभाषित करने की अनुमति देते हैं जिन्हें बाद में विशिष्ट कार्यान्वयन के साथ भरा जा सकता है।

डेटासेंटर प्रॉक्सी
साझा प्रॉक्सी

बड़ी संख्या में विश्वसनीय और तेज़ प्रॉक्सी सर्वर।

पे शुरुवात$0.06 प्रति आईपी
घूर्णनशील प्रॉक्सी
घूर्णनशील प्रॉक्सी

भुगतान-प्रति-अनुरोध मॉडल के साथ असीमित घूर्णन प्रॉक्सी।

पे शुरुवातप्रति अनुरोध $0.0001
निजी प्रॉक्सी
यूडीपी प्रॉक्सी

यूडीपी समर्थन के साथ प्रॉक्सी।

पे शुरुवात$0.4 प्रति आईपी
निजी प्रॉक्सी
निजी प्रॉक्सी

व्यक्तिगत उपयोग के लिए समर्पित प्रॉक्सी।

पे शुरुवात$5 प्रति आईपी
असीमित प्रॉक्सी
असीमित प्रॉक्सी

असीमित ट्रैफ़िक वाले प्रॉक्सी सर्वर।

पे शुरुवात$0.06 प्रति आईपी
क्या आप अभी हमारे प्रॉक्सी सर्वर का उपयोग करने के लिए तैयार हैं?
$0.06 प्रति आईपी से