सार प्रकार

From Vigyanwiki
Revision as of 23:03, 14 June 2023 by alpha>Indicwiki (Created page with "{{Short description|Feature of a programming language}} {{more citations needed|date=January 2022}} {{distinguish|Abstract data type}} {{Type systems}} प्रोग्र...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

प्रोग्रामिंग भाषाओं में, एक सार प्रकार नाममात्र प्रकार की प्रणाली में एक प्रकार है जो सीधे उदाहरण (कंप्यूटर विज्ञान) नहीं हो सकता है; एक प्रकार जो सार नहीं है - जो 'कर सकता है को तत्काल किया जा सकता है - एक ठोस प्रकार कहा जाता है। अमूर्त प्रकार का प्रत्येक उदाहरण कुछ ठोस उपप्रकार का उदाहरण है। सार प्रकारों को 'अस्तित्ववादी प्रकार' के रूप में भी जाना जाता है।[1] एक सार प्रकार कोई कार्यान्वयन या अधूरा कार्यान्वयन प्रदान नहीं कर सकता है। कुछ भाषाओं में, कार्यान्वयन के बिना अमूर्त प्रकार (अधूरे कार्यान्वयन के बजाय) को [[प्रोटोकॉल (ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग )]], इंटरफेस, हस्ताक्षर या वर्ग प्रकार के रूप में जाना जाता है। कक्षा आधारित प्रोग्रामिंग | क्लास-बेस्ड ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, एब्सट्रैक्ट टाइप्स को एब्सट्रैक्ट क्लासेस (सार आधार वर्ग के रूप में भी जाना जाता है) के रूप में लागू किया जाता है, और कंक्रीट टाइप्स को ठोस वर्ग ेस के रूप में लागू किया जाता है। सामान्य प्रोग्रामिंग में, समान धारणा एक अवधारणा (जेनेरिक प्रोग्रामिंग) है, जो समान रूप से सिंटैक्स और शब्दार्थ को निर्दिष्ट करती है, लेकिन एक उपप्रकार संबंध की आवश्यकता नहीं होती है: दो असंबंधित प्रकार एक ही अवधारणा को संतुष्ट कर सकते हैं।

अक्सर, सार प्रकारों में एक या अधिक कार्यान्वयन अलग से प्रदान किए जाते हैं, उदाहरण के लिए, ठोस उपप्रकारों के रूप में जिन्हें तत्काल किया जा सकता है। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, एक अमूर्त वर्ग में अमूर्त तरीके या सार गुण शामिल हो सकते हैं[2] जो इसके उपवर्गों द्वारा साझा किए जाते हैं। अमूर्त प्रकारों को लागू करने के लिए उपयोग की जाने वाली भाषा सुविधाओं के अन्य नामों में विशेषता (कंप्यूटर विज्ञान), मिश्रण, स्वाद, भूमिकाएं या प्रकार वर्ग शामिल हैं।[citation needed]

अमूर्त प्रकार का संकेत

सार वर्ग कई तरीकों से बनाए जा सकते हैं, संकेतित या सिम्युलेटेड हो सकते हैं:

  • स्पष्ट कीवर्ड (कंप्यूटर प्रोग्रामिंग) के उपयोग से abstract जावा (प्रोग्रामिंग भाषा) , डी (प्रोग्रामिंग भाषा) या सी शार्प (प्रोग्रामिंग लैंग्वेज) के रूप में क्लास परिभाषा में | सी #।
  • वर्ग परिभाषा में, एक या एक से अधिक अमूर्त विधियों (जिन्हें C++ में शुद्ध आभासी कार्य कहा जाता है) को शामिल करके, जिसे वर्ग को इसके प्रोटोकॉल के हिस्से के रूप में स्वीकार करने के लिए घोषित किया जाता है, लेकिन जिसके लिए कोई कार्यान्वयन प्रदान नहीं किया जाता है।
  • एक सार प्रकार से वंशानुक्रम (कंप्यूटर विज्ञान) द्वारा, और कक्षा की परिभाषा को पूरा करने के लिए आवश्यक सभी लापता सुविधाओं को ओवरराइड नहीं करना। दूसरे शब्दों में, एक बच्चा प्रकार जो अपने माता-पिता से सभी अमूर्त विधियों को लागू नहीं करता है, वह सार ही बन जाता है।[2][3]
  • स्मॉलटाक जैसी कई गतिशील रूप से टाइप की गई भाषाओं में, कोई भी वर्ग जो इस (कंप्यूटर विज्ञान) को एक विशेष विधि भेजता है, लेकिन उस विधि को लागू नहीं करता है, उसे सार माना जा सकता है। (हालांकि, ऐसी कई भाषाओं में, जैसे Objective-C, त्रुटि का पता तब तक नहीं चलता जब तक कि वर्ग का उपयोग नहीं किया जाता है, और संदेश का परिणाम एक अपवाद त्रुटि संदेश होता है जैसे कि चयनकर्ता को नहीं पहचानता: xxx as - [NSObject doesNotRecognizeSelector:(SEL)selector] एक गैर-कार्यान्वित विधि का पता लगाने पर लागू किया जाता है)।

उदाहरण (जावा)

//By default, all methods in all classes are concrete, unless the abstract keyword is used.
abstract class Demo {
    // An abstract class may include abstract methods, which have no implementation.
    abstract public int sum(int x, int y);

    // An abstract class may also include concrete methods.
    public int product(int x, int y) { return x*y; }
}

//By default, all methods in all interfaces are abstract, unless the default keyword is used.
interface DemoInterface {
    [abstract] int getLength(); //Abstract can be used here, though is completely useless
    
    //The default keyword can be used in this context to specify a concrete method in an interface
    default int product(int x, int y) {
        return x * y;
    }
}

UML class pet.svg

अमूर्त प्रकारों का प्रयोग

स्थिर टाइपिंग OOP भाषाओं में सार प्रकार एक महत्वपूर्ण विशेषता है। कई गतिशील टाइपिंग भाषाओं में कोई समतुल्य सुविधा नहीं होती है (हालांकि बतख टाइपिंग का उपयोग अमूर्त प्रकारों को अनावश्यक बनाता है); हालाँकि विशेषता (कंप्यूटर प्रोग्रामिंग) कुछ आधुनिक गतिशील रूप से टाइप की गई भाषाओं में पाई जाती है।[citation needed]

कुछ लेखकों का तर्क है कि कक्षाएं पत्ता वर्ग (प्रोग्रामिंग भाषा) होनी चाहिए (कोई उपप्रकार नहीं है), या फिर सार होना चाहिए।[4][5] सार प्रकार इस मायने में उपयोगी हैं कि उनका उपयोग प्रोटोकॉल (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) को परिभाषित करने और लागू करने के लिए किया जा सकता है; संचालन का एक सेट जो प्रोटोकॉल को लागू करने वाली सभी वस्तुओं का समर्थन करना चाहिए।[citation needed]

सार प्रकार भी Template_method_pattern का एक अनिवार्य हिस्सा हैं।

यह भी देखें

संदर्भ

  1. Mitchell, John C.; Plotkin, Gordon D.; Abstract Types Have Existential Type, ACM Transactions on Programming Languages and Systems, Vol. 10, No. 3, July 1988, pp. 470–502
  2. 2.0 2.1 "Abstract Methods and Classes (The Java™ Tutorials > Learning the Java Language > Interfaces and Inheritance)". Oracle.com. Retrieved 2019-08-14.
  3. "C++ में प्योर वर्चुअल फंक्शंस और एब्स्ट्रैक्ट क्लासेस". GeeksforGeeks.org. 15 July 2014.
  4. Riel, Arthur (1996). ऑब्जेक्ट-ओरिएंटेड डिज़ाइन ह्यूरिस्टिक्स. Addison-Wesley Professional. p. 89. ISBN 0-201-63385-X.
  5. Meyers, Scott (1996). अधिक प्रभावी सी ++. Addison-Wesley Professional. p. 258. ISBN 0-201-63371-X. गैर-पत्ती वर्गों को सार बनाएँ


अग्रिम पठन


बाहरी संबंध