अमूर्त वर्ग बनाम ठोस वर्ग

जावा और सी # जैसी लोकप्रिय आधुनिक वस्तु उन्मुख प्रोग्रामिंग भाषाओं में से अधिकांश वर्ग आधारित हैं। वे कक्षाओं के उपयोग के माध्यम से इनकैप्सुलेशन, इनहेरिटेंस और बहुरूपता जैसी वस्तु उन्मुख अवधारणाओं को प्राप्त करते हैं। कक्षाएं वास्तविक दुनिया की वस्तुओं का एक सार प्रतिनिधित्व हैं। कक्षाएं या तो ठोस हो सकती हैं या अमूर्त उनकी पद्धति के कार्यान्वयन के स्तर के आधार पर। एक ठोस वर्ग अपने सभी तरीकों को पूरी तरह से लागू करता है। एक अमूर्त वर्ग को एक नियमित (ठोस) वर्ग के सीमित संस्करण के रूप में माना जा सकता है, जहाँ इसमें आंशिक रूप से कार्यान्वित विधियाँ हो सकती हैं। आमतौर पर, ठोस वर्गों को (सिर्फ) वर्गों के रूप में संदर्भित किया जाता है।

कंक्रीट क्लास क्या है?

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

अमूर्त वर्ग क्या है?

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

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

अमूर्त वर्ग और कंक्रीट वर्ग के बीच अंतर क्या है?

अमूर्त वर्गों में आमतौर पर आंशिक या कोई कार्यान्वयन नहीं होता है। दूसरी ओर, ठोस वर्गों में हमेशा अपने व्यवहार का पूर्ण कार्यान्वयन होता है। ठोस वर्गों के विपरीत, अमूर्त वर्गों को तत्काल नहीं किया जा सकता है। इसलिए उन्हें उपयोगी बनाने के लिए अमूर्त वर्गों को बढ़ाया जाना चाहिए। अमूर्त वर्गों में अमूर्त विधियाँ हो सकती हैं, लेकिन ठोस कक्षाएं नहीं हो सकती हैं। जब एक अमूर्त वर्ग बढ़ाया जाता है, तो सभी विधियाँ (अमूर्त और ठोस दोनों) विरासत में मिलती हैं। विरासत में मिला वर्ग किसी भी या सभी तरीकों को लागू कर सकता है। यदि सभी सार विधियों को लागू नहीं किया जाता है, तो वह वर्ग भी एक सार वर्ग बन जाता है।