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