यदि आप 4-दरवाजे वाली कम्यूटर कार चला सकते हैं, तो आप पिकअप ट्रक भी चला सकते हैं। अगर आपने कम्बशन मोटर वाली कार चलाई है, तो आप इलेक्ट्रिक कार भी चला सकते हैं।
यात्री वाहनों का आकार और आकार एक से दूसरे में भिन्न हो सकता है। उन वाहनों को चलाने वाली मोटर भी पूरी तरह से अलग हो सकती है। लेकिन इससे ड्राइवर को कोई फर्क नहीं पड़ता।
तुम बस अंदर जाओ, बकसुआ करो, वाहन शुरू करो, इसे गियर में रखो, और ड्राइव करो। ऐसा इसलिए है क्योंकि कार, ट्रक और वैन हैं बहुरूपी.
बहुरूपता: इसे तोड़ना
आइए बहुरूपता शब्द को देखें। आप इसे में तोड़ सकते हैं पाली, रूप, तथा वाद.
पाली कई का मतलब है, जैसे बहुभुज का मतलब कितने कोण हैं। जब संज्ञा के रूप में प्रयोग किया जाता है, a रूप प्रजाति का एक रूप है। और वाद सिस्टम का मतलब हो सकता है।
तो बहुरूपता का सीधा सा मतलब है कई रूपों की एक प्रणाली। हालाँकि, यह अभी भी आपको इस बारे में बहुत कुछ नहीं बताता है कि प्रोग्रामिंग में इसका उपयोग कैसे किया जाता है। वह अगला है।
अगर यह बतख की तरह चलता है... पॉलीमॉर्फिक ऑब्जेक्ट बहुत बढ़िया क्यों हैं
जब आप अपने कोड में एक वर्ग बनाते हैं जो किसी अन्य वर्ग से विरासत में मिलता है, तो आप नई कक्षा को अनुबंध के लिए बाध्य कर रहे हैं। अनुबंध में कहा गया है कि माता-पिता में प्रत्येक चर और कार्य भी बच्चे में होगा।
प्रत्येक वाहन में एक स्टीयरिंग व्हील, गैस और ब्रेक पैडल और एक टर्न सिग्नल होता है। कार चलाने के लिए आपको हुड खोलने की आवश्यकता नहीं है। यह सब मायने रखता है कि यह एक कार है।
वही बात उन वर्गों पर लागू होती है जो अन्य वर्गों से विरासत में मिली हैं। यहाँ टाइपस्क्रिप्ट में एक उदाहरण दिया गया है:
वर्ग वाहन {
निजी _इंजन: स्ट्रिंग;
निजी _टायर: संख्या;
कंस्ट्रक्टर (इंजन: स्ट्रिंग = "दहन", टायर: संख्या = 4) {
यह._इंजन = इंजन;
यह._टायर = टायर;
}
त्वरण (वेग: संख्या) {
कंसोल.लॉग ("+ वेग के वेग से तेज);
}
ब्रेक (दबाव: संख्या) {
कंसोल.लॉग ("लागू करना" + दबाव + "दबाव");
}
बांए मुड़िए() {
कंसोल.लॉग ("बाएं मुड़ना");
}
दांए मुड़िए() {
कंसोल.लॉग ("दाएं मुड़ना");
}
}
क्लास कार वाहन का विस्तार करती है {
}
क्लास टेस्ला कार का विस्तार करती है {
कंस्ट्रक्टर () {
सुपर ("इलेक्ट्रिक");
}
}
इस उदाहरण में, एक है वाहन कक्षा। NS कार वर्ग से विरासत में मिला है वाहन कक्षा। और टेस्ला से विरासत में मिला है कार. आइए अब कुछ ऑब्जेक्ट बनाएं और उन्हें देखें।
चलो myCoupe: कार = नया वाहन ();
कंसोल.लॉग (myCoupe);
कंसोल.लॉग (myCoupe.constructor.name);
मायसेडान दें: वाहन = नया टेस्ला ();
कंसोल.लॉग (मायसेडान);
कंसोल.लॉग (mySedan.constructor.name);
myCoupe.turnLeft ();
mySedan.turnLeft ();
आप देख सकते हैं कि हमने घोषणा की मायकूप होना चाहिए कार तथा मेरी सेडान होना चाहिए वाहन. फिर हमने तुरंत किया मायकूप एक नए के रूप में वाहन तथा मेरी सेडान एक नए के रूप में टेस्ला. अगर तुम टाइपस्क्रिप्ट सैंडबॉक्स पर जाएं और कोड चलाएं, आप देखेंगे कि यह बिना किसी त्रुटि के काम करता है. और यह अनुबंध के आधार पर आपकी अपेक्षा के अनुरूप व्यवहार करता है।
दूसरे शब्दों में, सभी वाहन बाएं मुड़ सकते हैं क्योंकि उन्हें यह विरासत में मिला है वाहन कक्षा। संकलक जानता है कि का प्रत्येक बच्चा वाहन अनुबंध पर सहमत हुए। तो यह मानता है कि सब ठीक है, इससे कोई फर्क नहीं पड़ता कि वस्तुओं को किस वर्ग में टाइप किया गया था या तत्काल किया गया था।
इसे कभी-कभी "बतख टाइपिंग" कहा जाता है। संकलक मानता है कि यदि यह बतख की तरह चलता है और बतख की तरह बात करता है, तो यह बतख भी हो सकता है। तो संकलक विवरण के बारे में चिंता नहीं करता है और केवल वस्तु को बतख की तरह मानता है।
बहुरूपता आपके कोड को बुलेटप्रूफ बनाता है
बहुरूपता अनुबंध का एक अन्य लाभ यह गारंटी है कि आपका कोड काम करेगा। यदि आपने अपने सभी वेरिएबल्स को दृढ़ता से टाइप किया है और प्रत्येक फ़ंक्शन क्या लौटाता है, तो आप जानते हैं कि प्रत्येक बच्चा हमेशा वेरिएबल, फ़ंक्शंस और प्रकारों से मेल खाएगा।
इसका मतलब है कि आप अपने प्रोग्राम को तोड़े बिना अपनी कक्षाओं में कोड जोड़ और बदल सकते हैं। प्रत्येक वस्तु जो संदर्भित करती है a वाहन ऑब्जेक्ट हमेशा डेटा और कार्यक्षमता प्राप्त करेगा जो अपेक्षाओं को पूरा करता है, चाहे कितना भी हो कार परिवर्तन।
फ़ंक्शन के अंदर कोड सही परिणाम नहीं दे सकता है। लेकिन यह एक अलग तरह की समस्या है। जब तक फ़ंक्शन अनुबंध का पालन करता है और अपेक्षित प्रकार का चर देता है, तब तक इसका परिणाम कोड-ब्रेकिंग त्रुटि नहीं होगा।
बहुरूपता बहुत बड़ा है, और यहां 10 और प्रोग्रामिंग सिद्धांत दिए गए हैं जिन्हें आपको जानना चाहिए.
बहुरूपता का अभ्यास करें
- a. बनाने के लिए ऊपर दिए गए सैंडबॉक्स लिंक का उपयोग करें नाव कक्षा।
- एक नई नाव वस्तु को इस तरह से त्वरित करें कि यह a वाहन प्रकार, लेकिन फिर भी एक नाव की तरह दिखता है।
- सुनिश्चित करें कि नाव अभी भी एक वाहन की तरह व्यवहार करती है।
बहुरूपता का एक अंतिम उदाहरण
बहुरूपता शुरू में समझने के लिए एक मुश्किल अवधारणा हो सकती है। लेकिन एक बार जब आप इसे प्राप्त कर लेते हैं, तो आपने यह समझने की दिशा में एक बड़ा कदम उठाया है कि वस्तु-उन्मुख प्रोग्रामिंग वास्तव में क्या है। हालाँकि, अवधारणा अभी भी सैद्धांतिक लग सकती है। तो यहां एक ठोस वास्तविक दुनिया का उदाहरण है जो आपको यह देखने में मदद करता है कि यह कितना उपयोगी है।
कल्पना कीजिए कि आप एक वेब ऐप बना रहे हैं जो एक MySQL डेटाबेस से जुड़ता है। तब बॉस PostgreSQL डेटाबेस पर स्विच करने का निर्णय लेता है। क्या इसका मतलब यह है कि आपको अपने सभी डेटाबेस कॉल्स को फिर से लिखना होगा?
नहीं, ऐसा नहीं है। यदि आपका ऐप a. का उपयोग करता है डेटा प्राप्त करना उप-वर्गों के साथ वर्ग जो वास्तव में डेटा के साथ घूमते हैं, आप भाग्य में हैं। NS डेटा प्राप्त करना क्लास परिभाषित करता है कि आपका ऐप डेटा के साथ कैसे इंटरैक्ट करता है, न कि यह कैसे डेटाबेस के साथ इंटरैक्ट करता है।
आपके पास उप-वर्ग हैं जैसे MySQL एक्सेस तथा पोस्टग्रेज QLAपहुँच जो सारे गंदे काम करते हैं। लेकिन अगर आपके ऐप में केवल डेटा प्राप्त करना ऑब्जेक्ट्स, आप ऐप कोड की एक पंक्ति को फिर से लिखे बिना डेटाबेस को स्वैप कर सकते हैं।
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सही होने का मतलब है कि आपको इनहेरिटेंस के बारे में जानने की जरूरत है और यह कैसे कोडिंग को आसान बना सकता है और त्रुटियों को कम कर सकता है।
आगे पढ़िए
- प्रोग्रामिंग
- प्रोग्रामिंग
- वस्तु उन्मुख कार्यकर्म
ली एक पूर्णकालिक खानाबदोश और कई जुनून और रुचियों के साथ एक बहुरूपिया है। उनमें से कुछ जुनून उत्पादकता, व्यक्तिगत विकास और लेखन के इर्द-गिर्द घूमते हैं।
हमारे समाचार पत्र के सदस्य बनें
तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!
सब्सक्राइब करने के लिए यहां क्लिक करें