- वंशानुक्रम की विशेषताएँ
- अनुक्रम
- बहुरूपता
- वंशानुक्रम के प्रकार
- अनोखी विरासत
- बहु-स्तरीय विरासत
- पदानुक्रमित विरासत
- हाइब्रिड वंशानुक्रम
- एकाधिक वंशानुक्रम
- बेस क्लास से विरासत के प्रकार
- सार्वजनिक विरासत
- संरक्षित विरासत
- निजी विरासत
- उदाहरण
- पायथन उदाहरण
- C ++ में उदाहरण
- संदर्भ
वस्तु में विरासत - उन्मुख प्रोग्रामिंग विशिष्ट करने के लिए सामान्य से एक पदानुक्रम में वस्तुओं को व्यवस्थित करने के लिए एक रास्ता है। यह एक वर्ग को दूसरे वर्ग में विस्तारित करने के लिए उपयोग किया जाने वाला गैजेट है, जो एक अनुरूप निष्पादन को संरक्षित करता है।
अधिकांश वर्ग-आधारित ऑब्जेक्ट-ओरिएंटेड भाषाओं में, एक ऑब्जेक्ट जिसे वंशानुक्रम के माध्यम से बनाया जाता है, जिसे चाइल्ड ऑब्जेक्ट कहा जाता है, को पैरेंट ऑब्जेक्ट के सभी गुण और व्यवहार मिलते हैं।
वस्तु अभिविन्यास में विरासत का सरल प्रमाण। स्रोत: Pluke / CC0 क्रिएटिव कॉमन्स CC0 1.0 यूनिवर्सल पब्लिक डोमेन
इसलिए, यह एक गुणवत्ता है जो विभिन्न वर्गों के बीच संबंधों का प्रतिनिधित्व करता है। वंशानुक्रम एक वर्ग को दूसरे वर्ग के समान व्यवहार करने की अनुमति देता है और विशिष्ट आवश्यकताओं के लिए एक विशेष कार्रवाई प्रदान करने के लिए उस व्यवहार का विस्तार या अनुकूलन करता है।
वंशानुक्रम उन वस्तुओं का प्रतिनिधित्व करने में मदद कर सकता है जिनके काम करने के तरीके में कुछ अंतर और कुछ समानताएं हैं। आप उन सभी कार्यक्षमता को रख सकते हैं जो ऑब्जेक्ट बेस क्लास में आम हैं, और फिर अपनी स्वयं की कस्टम कार्यक्षमता के साथ एक या अधिक उपवर्गों को परिभाषित करते हैं।
वंशानुक्रम की विशेषताएँ
वंशानुक्रम ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की प्रमुख विशेषताओं में से एक है, जिसका उपयोग मौजूदा कक्षाओं से एक नए वर्ग को परिभाषित करने के लिए किया जाता है।
यही है, नई सुविधाओं को मौजूदा आधार वर्गों से प्राप्त किया जा सकता है, नई सुविधाओं को जोड़ा जा सकता है। आपको स्क्रैच से लिखना नहीं है। इसलिए, वंशानुक्रम आसानी से मौजूदा कोड का पुन: उपयोग करने का एक तरीका प्रदान करता है।
यदि आपके पास पहले से ही एक वर्ग है जो लगभग सब कुछ आप चाहते हैं, तो आप एक उपवर्ग बना सकते हैं जिसमें इसका कुछ व्यवहार आंशिक रूप से ओवरराइड किया जाता है, या शायद कुछ नई कार्यक्षमता जोड़ी जाती है।
निम्न वर्ग को छोड़कर एक व्युत्पन्न वर्ग को आधार वर्ग के सभी तरीके विरासत में मिलते हैं:
- बेस क्लास के कंस्ट्रक्टर्स, डिस्ट्रक्टर्स और कॉपी कंस्ट्रक्टर्स।
- ऑपरेटर्स बेस क्लास से ओवरलोड थे।
- बेस क्लास फ्रेंडली फंक्शन।
अनुक्रम
जैसा कि एक परिवार वृक्ष करता है, वंशानुक्रम वर्गों के पदानुक्रम बनाने का कार्य करता है। यह ध्यान रखना महत्वपूर्ण है कि बेस क्लास के लिए निर्धारित विशेषताएँ स्वचालित रूप से व्युत्पन्न वर्ग में मौजूद होंगी। इसके अलावा, बेस क्लास के लिए तरीके डेरिवेटिव के लिए काम करेंगे।
एक वर्ग को उस वर्ग का उपवर्ग कहा जाता है जिसे वह विरासत में प्राप्त करता है। दूसरी ओर, यह वर्ग आपका सुपरक्लास होगा। सबसे सामान्य वर्ग को आधार वर्ग के रूप में संदर्भित किया जा सकता है, क्योंकि यह पदानुक्रम के आधार पर है।
बहुरूपता
स्थैतिक प्रकार के साथ कुछ भाषाओं में विरासत बहुत लोकप्रिय है, क्योंकि यह प्रोग्रामर को स्थिर प्रकार के कुछ प्रतिबंधों से बचने की अनुमति देता है।
एक वस्तु जो किसी अन्य वस्तु से प्राप्त होती है, उसे उस वस्तु का उपप्रकार माना जाता है। एक उदाहरण वस्तुओं "प्रशिक्षक" और "छात्र" हो सकता है, जिनमें से प्रत्येक "व्यक्ति" से विरासत में मिला है।
यदि प्रशिक्षक और छात्र एक ही व्यक्ति प्रकार के हैं, तो आप एक फ़ंक्शन लिख सकते हैं जो व्यक्ति प्रकार को एक पैरामीटर के रूप में स्वीकार करता है और जो प्रशिक्षक और छात्र वस्तुओं पर काम करता है, क्योंकि वे दोनों व्यक्ति उत्तराधिकारी हैं।
वंशानुक्रम के प्रकार
अनोखी विरासत
जब एक व्युत्पन्न वर्ग एकल आधार वर्ग के गुणों और व्यवहार को विरासत में लेता है। यानी एक वर्ग केवल एक अन्य वर्ग तक फैला है।
बहु-स्तरीय विरासत
गैजेट के लिए संदर्भित करता है जहां आप एक व्युत्पन्न वर्ग से विरासत में प्राप्त कर सकते हैं, जिससे यह व्युत्पन्न वर्ग एक नए वर्ग के लिए आधार वर्ग बन जाता है। यही है, इसका परिणाम तब होता है जब एक व्युत्पन्न वर्ग दूसरे व्युत्पन्न वर्ग से बनाया जाता है।
पदानुक्रमित विरासत
इस विरासत में, एक ही वर्ग से कई उपवर्ग विरासत में मिलते हैं। यही है, यह तब होता है जब एक एकल आधार वर्ग एक से अधिक व्युत्पन्न वर्ग द्वारा विरासत में मिला है।
हाइब्रिड वंशानुक्रम
यह परिणामी विरासत है जब तीन पिछली विरासतों में से कोई भी संयुक्त होता है (एकल, पदानुक्रमित और बहुस्तरीय)।
एकाधिक वंशानुक्रम
यह विरासत के आंकड़े से मेल खाती है जब एक वर्ग एक से अधिक सुपरक्लास से विरासत में मिला है। इस प्रकार की विरासत के साथ दोष यह है कि व्युत्पन्न वर्ग को दो आधार वर्गों पर निर्भरता को संभालना होगा।
दूसरी ओर, इस प्रकार की विरासत प्रोग्रामर को उन वर्गों के निर्माण की अनुमति देती है जो कई वर्गों और उनके अनुरूप पदानुक्रम के पहलुओं को जोड़ती है।
बेस क्लास से विरासत के प्रकार
सार्वजनिक विरासत
जब किसी वर्ग को सार्वजनिक आधार वर्ग से लिया जाता है, तो आधार वर्ग के सार्वजनिक सदस्य व्युत्पन्न वर्ग के सार्वजनिक सदस्य बन जाते हैं और आधार वर्ग के संरक्षित सदस्य व्युत्पन्न वर्ग के संरक्षित सदस्य बन जाते हैं।
एक सुपरक्लास के निजी सदस्य सीधे एक व्युत्पन्न वर्ग से सुलभ नहीं होंगे, लेकिन आधार वर्ग के सार्वजनिक और संरक्षित सदस्यों तक कॉल के माध्यम से पहुँचा जा सकता है।
संरक्षित विरासत
जब एक वर्ग बनाया जाता है जो एक संरक्षित सुपरक्लास से विरासत में मिलता है, तो इस सुपरक्लास के सार्वजनिक और संरक्षित सदस्य दोनों ही व्युत्पन्न वर्ग के संरक्षित सदस्य बन जाएंगे।
निजी विरासत
जब एक निजी सुपरक्लास से एक उपवर्ग बनाया जाता है, तो इस सुपरक्लास के सार्वजनिक और संरक्षित सदस्य उप-वर्ग के निजी सदस्य बन जाएंगे।
उदाहरण
पायथन उदाहरण
यह दिखाने के लिए कि वंशानुक्रम का सिद्धांत कैसे काम करता है, हम पायथन प्रोग्रामिंग भाषा में रोबोट या बेहतर श्रेणी के रोबोट लेंगे। ऐसा करने के लिए, RobotMédico (PhysicianRobot) नामक एक वर्ग निर्दिष्ट किया जाएगा, जो कि रोबोट सुपरक्लास से लिया गया है।
यदि आप RobotMédico वर्ग के कोड को देखते हैं, तो आप देख सकते हैं कि इस वर्ग में कोई विशेषता या विधि परिभाषित नहीं की गई है।
चूंकि RobotMedico वर्ग रोबोट का एक उपवर्ग है, इसलिए इस मामले में यह दोनों __in__ और say_hi विधियों को विरासत में मिला है। इन विधियों को इनहेरिट करने का मतलब है कि उनका उपयोग किया जा सकता है जैसे कि उन्हें रोबोमेडिको क्लास में परिभाषित किया गया था।
जब RobotMedico का एक उदाहरण बनाया जाता है, तो __init__ फ़ंक्शन एक नाम विशेषता भी बनाएगा। Say_hi विधि को RobotMédico के ऑब्जेक्ट "y" पर लागू किया जा सकता है, जैसा कि पिछले कोड के परिणाम में देखा जा सकता है।
C ++ में उदाहरण
एक वर्ग एक से अधिक वर्ग से वारिस हो सकता है, जिसका अर्थ है कि यह कई सुपरक्लेसेस से डेटा और फ़ंक्शंस प्राप्त कर सकता है। एक व्युत्पन्न वर्ग को परिभाषित करने के लिए, आप आधार वर्गों को निर्दिष्ट करने के लिए एक वर्ग व्युत्पत्ति सूची का उपयोग करते हैं।
C ++ में एक वर्ग व्युत्पत्ति सूची एक या अधिक आधार वर्गों का नाम देती है और इसका निम्न रूप होता है: वर्ग व्युत्पन्न-वर्ग: पहुंच-निर्दिष्ट बेस-क्लास, जहां एक्सेस-स्पेसियर सार्वजनिक, संरक्षित, या निजी और बेस-क्लास है पहले से परिभाषित वर्ग का नाम। यदि पहुंच-विनिर्देश का उपयोग नहीं किया जाता है, तो निजी रूप से डिफ़ॉल्ट रूप से लिया जाता है।
सुपरक्लास "आकृति" और इसके व्युत्पन्न वर्ग "आयत" को इस प्रकार माना जा सकता है:
जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो निम्न आउटपुट होता है: "कुल क्षेत्र: 35"।
संदर्भ
- डेव ब्रोंस्चिव (2020)। विरासत और बहुरूपता। रिबस समुदाय। से लिया गया: press.rebus.community
- पायथन कोर्स (2020)। विरासत। से लिया गया: python-course.eu।
- डेटा मेंटर (2020)। आर इनहेरिटेंस। से लिया गया: datamentor.io।
- ट्यूटोरियल प्वाइंट (2020)। C ++ वंशानुक्रम। से लिया गया: tutorialspoint.com
- नेट-informations (2020)। विभिन्न प्रकार के वंशानुक्रम। से लिया गया: net-informations.com