वंशानुक्रम और कंटेनरशिप के बीच का अंतर

Anonim

विरासत बनाम कंटेनरशिप

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

वंशानुक्रम क्या है?

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

कंटेनरशिप क्या है?

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

वंशानुक्रम और कंटेनरशिप के बीच का अंतर

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