जावा में एनकैप्सुलेशन - इनकैप्सुलेशन के साथ ओओपी को कैसे मास्टर करें?



जावा में एनकैप्सुलेशन पर यह लेख आपको विभिन्न सरल उदाहरणों के साथ कार्यान्वयन विवरण छिपाने की मुख्य अवधारणाओं को समझने में मदद करेगा।

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

नीचे विषय हैं, मैं इस लेख में चर्चा करूंगा:





आप इस रिकॉर्डिंग के माध्यम से भी जा सकते हैं जहां आप उदाहरणों के साथ विस्तृत तरीके से विषयों को समझ सकते हैं।



एनकैप्सुलेशन का परिचय

एनकैप्सुलेशन से तात्पर्य एक इकाई के तहत डेटा को लपेटने से है। यह तंत्र है जो कोड को बांधता है और डेटा जो इसे हेरफेर करता है। एन्कैप्सुलेशन के बारे में सोचने का एक और तरीका है, यह एक सुरक्षा कवच है जो डेटा को इस ढाल के बाहर कोड द्वारा एक्सेस करने से रोकता है। इसमें, चर या डेटा का किसी भी अन्य वर्ग से छिपा हुआ है और केवल उसी वर्ग के किसी भी सदस्य समारोह के माध्यम से पहुँचा जा सकता है जिसमें वे घोषित किए जाते हैं।

बिगडाटा और हडूप के बीच अंतर

अब, एक मेडिकल कैप्सूल का उदाहरण लेते हैं, जहां दवा कैप्सूल के अंदर हमेशा सुरक्षित रहती है। इसी तरह, एनकैप्सुलेशन के माध्यम से, एक वर्ग के तरीके और चर अच्छी तरह से छिपे और सुरक्षित होते हैं।



एन्कैप्सुलेशन-जावा-एडुर्का में एन्कैप्सुलेशनजावा में इनकैप्सुलेशन निम्नलिखित द्वारा प्राप्त किया जा सकता है:

  • किसी वर्ग के चरों को निजी घोषित करना।
  • चर मानों को संशोधित करने और देखने के लिए सार्वजनिक सेटर और गेट्टर विधियाँ प्रदान करना।

अब, एनकैप्सुलेशन की बेहतर समझ पाने के लिए कोड को देखें:

सार्वजनिक वर्ग का छात्र {निजी स्ट्रिंग नाम सार्वजनिक स्ट्रिंग getName () {रिटर्न नाम} सार्वजनिक शून्य सेटनाम (स्ट्रिंग नाम) {this.name = name}} वर्ग परीक्षण {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) छात्र s = नया छात्र () s.setName ('हैरी पॉटर') System.out.println (s.getName ())}}

जैसा कि आप उपरोक्त कोड में देख सकते हैं, मैंने एक क्लास स्टूडेंट बनाया है जिसके पास एक निजी है नाम आगे, मैंने एक छात्र का नाम प्राप्त करने और सेट करने के लिए एक गेट्टर और सेटर बनाया है। इन विधियों की मदद से, कोई भी वर्ग जो नाम चर का उपयोग करना चाहता है, उसे इन गेटटर और सेटर विधियों का उपयोग करना पड़ता है।

अब एक और उदाहरण देखते हैं और गहराई से एनकैप्सुलेशन को समझते हैं। इस उदाहरण में, कार वर्ग में दो फ़ील्ड हैं-name और topSpeed। यहां, दोनों को निजी घोषित किया गया है, जिसका अर्थ है कि उन्हें सीधे कक्षा के बाहर नहीं पहुँचा जा सकता है। हमारे पास कुछ गेट्टर और सेटर विधियाँ हैं जैसे getName, setName, setTopSpeed ​​आदि, और उन्हें सार्वजनिक घोषित किया जाता है। इन तरीकों को 'बाहरी लोगों' से उजागर किया जाता है और इसका उपयोग कार ऑब्जेक्ट से डेटा को बदलने और पुनर्प्राप्त करने के लिए किया जा सकता है। हमारे पास वाहन की शीर्ष गति सेट करने के लिए एक विधि है और अधिकतम गति मान या तो MPH या KMHt में पुनः प्राप्त करने के लिए दो गेट्टर विधियाँ हैं। तो मूल रूप से, यह वही है जो एनकैप्सुलेशन करता है - यह कार्यान्वयन को छुपाता है और हमें वे मान देता है जो हम चाहते हैं। अब, नीचे दिए गए कोड को देखें।

जावा में दुभाषिया क्या है
पैकेज एडुर्का पब्लिक क्लास कार {निजी स्ट्रिंग नाम निजी डबल टॉपस्पीड पब्लिक कार () {} सार्वजनिक स्ट्रिंग getName () {रिटर्न नाम} सार्वजनिक शून्य सेटनाम (स्ट्रिंग नाम) {this.name = name} सार्वजनिक शून्य topSpeed ​​(डबल स्पीडएमपीएच) {topSpeed = speedMPH} सार्वजनिक डबल getTopSpeedMPH () {वापसी topSpeed} सार्वजनिक डबल getTopSpeedKMH () {रिटर्न टॉपस्पीड * 1.609344}}

यहां, मुख्य कार्यक्रम एक दिए गए नाम के साथ एक कार ऑब्जेक्ट बनाता है और इस उदाहरण के लिए शीर्ष गति को संग्रहीत करने के लिए सेटर विधि का उपयोग करता है। ऐसा करने से, हम आसानी से एमपीएच या केएमएच में गति प्राप्त कर सकते हैं बिना इस बात की परवाह किए कि कार क्लास में गति कैसे परिवर्तित होती है।

पैकेज एडुर्का पब्लिक क्लास उदाहरण {सार्वजनिक स्टेटिक शून्य मेन (स्ट्रिंग आर्ग्स []) कार कार = नई कार () कार.सेटनेम ('मस्टैंग जीटी 4.8-लीटर वी 8') कार। सेटटाइपस्पीड (201) सिस्टम। आउट.प्रिंटल (कार)। MPN में getName () + 'टॉप स्पीड' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'KMH में टॉप स्पीड' + car.getTopSpeedKMH) () है

एसo, यह है कि जावा में Encapsulation कैसे प्राप्त किया जा सकता है। अब, आगे बढ़ते हैं और देखते हैं कि हमें एनकैप्सुलेशन की आवश्यकता क्यों है।

हमें जावा में एनकैप्सुलेशन की आवश्यकता क्यों है?

जावा में एनकैप्सुलेशन आवश्यक है क्योंकि:

  • यह डेटा एक्सेस करने के तरीके को नियंत्रित करता है
  • आवश्यक के आधार पर कोड को संशोधित करता है
  • हमें एक ढीले जोड़े को प्राप्त करने में मदद करता है
  • हमारे आवेदन की सादगी को प्राप्त करता है
  • यह आपको प्रोग्राम में मौजूद किसी भी अन्य फ़ंक्शन या कोड को बाधित किए बिना कोड के भाग को बदलने की अनुमति देता है

अब, एक छोटे से उदाहरण पर विचार करें जो एनकैप्सुलेशन की आवश्यकता को दर्शाता है।

कक्षा छात्र {int id स्ट्रिंग नाम} सार्वजनिक वर्ग डेमो {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {छात्र s = नया छात्र () s.id = 0 s.name = 's.name = null}}

उपरोक्त उदाहरण में, इसमें पहुँच संशोधक के रूप में दो उदाहरण चर हैं। तो एक ही पैकेज के भीतर कोई भी वर्ग उस वर्ग का ऑब्जेक्ट बनाकर उन चरों के मूल्यों को असाइन और बदल सकता है। इस प्रकार, हमारे पास छात्र वर्ग में चर के रूप में संग्रहीत मूल्यों पर नियंत्रण नहीं है। इस समस्या को हल करने के लिए, हम छात्र वर्ग को इनकैप्सुलेट करते हैं।

तो, ये कुछ संकेत थे जो एनकैप्सुलेशन की आवश्यकता को दर्शाते हैं। अब, एनकैप्सुलेशन के कुछ लाभ देखें।

एनकैप्सुलेशन के लाभ

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

अब जब हमने एनकैप्सुलेशन के मूल सिद्धांतों को समझ लिया है, तो इस लेख के अंतिम विषय पर ध्यान दें और वास्तविक समय के उदाहरण के साथ एनकैप्सुलेशन को विस्तार से समझें।

एनकैप्सुलेशन का एक वास्तविक समय उदाहरण

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

सार्वजनिक वर्ग के टेलीविजन {निजी डबल चौड़ाई निजी डबल ऊंचाई निजी डबल निजीकरण निजी int maxVolume प्रिंट इंट वॉल्यूम निजी बुलियन पावर सार्वजनिक टेलीविजन (डबल चौड़ाई, डबल ऊंचाई, डबल स्क्रीन आकार) {यह। इस पर क्लिक करें। यह 'स्क्रीन आकार' सार्वजनिक डबल ChannelTuning (int चैनल) {स्विच (चैनल) {case1: return 34.56 case2: return 54.89 case3: वापसी 73.89 case1: वापसी 94.98} रिटर्न 0} सार्वजनिक int घटानाVolume () {अगर (0volume) वॉल्यूम ++ वापसी मात्रा}} वर्ग परीक्षण {सार्वजनिक स्थैतिक} शून्य मुख्य (स्ट्रिंग args []) {टेलीविजन t = नया टेलीविजन (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () टेलीविजन। // चर त्रुटि के रूप में परिवर्तनशील है और वर्ग के बाहर पहुँचा नहीं जा सकता}}

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

यह हमें 'जावा में एनकैप्सुलेशन' पर इस लेख के अंत में लाता है। आशा है, आपको यह जानकारीपूर्ण लगी और इसने आपके ज्ञान को जोड़ने में मदद की। यदि आप जावा के बारे में अधिक जानना चाहते हैं, तो आप इसका उल्लेख कर सकते हैं

पार्स स्ट्रिंग टू डेट जावा

अब जब आप समझ गए हैं कि 'जावा में एनकैप्सुलेशन क्या है', तो देखें 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। एडुर्का का जावा J2EE और SOA प्रशिक्षण और प्रमाणन पाठ्यक्रम उन छात्रों और पेशेवरों के लिए डिज़ाइन किया गया है जो जावा डेवलपर बनना चाहते हैं। पाठ्यक्रम आपको जावा प्रोग्रामिंग में एक सिर शुरू करने के लिए डिज़ाइन किया गया है और आपको हाइबरनेट और स्प्रिंग जैसे विभिन्न जावा फ्रेमवर्क के साथ कोर और उन्नत जावा अवधारणाओं दोनों के लिए प्रशिक्षित करता है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया 'जावा में इनकैप्सुलेशन' ब्लॉग के कमेंट सेक्शन में इसका उल्लेख करें और हम जल्द से जल्द आपके पास वापस आएंगे।