उदाहरण के साथ जावा OOPs में एनकैप्सुलेशन

विषय - सूची:

Anonim

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

जावा में एनकैप्सुलेशन एक एकल इकाई के रूप में चर (डेटा) और विधियों (कोड) को एक साथ लपेटने के लिए एक तंत्र है। यह जानकारी के विवरण को छिपाने और वस्तु के डेटा और व्यवहार की रक्षा करने की प्रक्रिया है। यह चार महत्वपूर्ण ओओपी अवधारणाओं में से एक है। इनकैप्सुलेट क्लास का परीक्षण करना आसान है, इसलिए यह इकाई परीक्षण के लिए भी बेहतर है।

इस ट्यूटोरियल में, आप सीखेंगे-

  • जावा में एनकैप्सुलेशन क्या है?
  • उदाहरण के साथ एनकैप्सुलेशन सीखें
  • जावा में डेटा छिपाना
  • जावा में गेट्टर और सेटर के तरीके
  • अमूर्त बनाम एनकैप्सुलेशन
  • जावा में एनकैप्सुलेशन के लाभ

यदि वीडियो उपलब्ध नहीं है तो यहां क्लिक करें

उदाहरण के साथ एनकैप्सुलेशन सीखें

विस्तार से एन्कैप्सुलेशन क्या है, इसे समझने के लिए जमा राशि के साथ निम्नलिखित बैंक खाता वर्ग पर विचार करें और शेष राशि के तरीके दिखाएं

class Account {private int account_number;private int account_balance;public void show Data() {//code to show data}public void deposit(int a) {if (a < 0) {//show error} elseaccount_balance = account_balance + a;}}

मान लीजिए कि एक हैकर आपके बैंक खाते के कोड तक पहुंच प्राप्त करने में कामयाब रहा। अब, वह दो तरीकों से आपके खाते में राशि -100 जमा करने की कोशिश करता है। उसका पहला तरीका या तरीका देखें।

दृष्टिकोण 1: वह कोड में हेरफेर करके आपके बैंक खाते में एक अमान्य राशि (कहना -100) जमा करने का प्रयास करता है।

अब, सवाल है - क्या यह संभव है? जांच करते हैं।

आमतौर पर, एक वर्ग में एक चर "निजी" के रूप में सेट किया जाता है जैसा कि नीचे दिखाया गया है। इसे केवल कक्षा में परिभाषित तरीकों से ही एक्सेस किया जा सकता है। कोई अन्य वर्ग या वस्तु उन तक नहीं पहुंच सकती।

यदि कोई डेटा सदस्य निजी है, तो इसका मतलब है कि इसे केवल उसी वर्ग में पहुँचा जा सकता है। कोई भी बाहरी वर्ग निजी डेटा सदस्य या अन्य वर्ग के चर का उपयोग नहीं कर सकता है।

इसलिए हमारे मामले में हैकर आपके खाते में राशि -100 जमा नहीं कर सकता है।

दृष्टिकोण 2 : हैकर का पहला दृष्टिकोण राशि जमा करने में विफल रहा। अगला, वह "जमा" विधि का उपयोग करके राशि -100 जमा करने की कोशिश करता है।

लेकिन विधि कार्यान्वयन में नकारात्मक मूल्यों के लिए एक जांच है। तो दूसरा दृष्टिकोण भी विफल हो जाता है।

इस प्रकार, आप कभी भी अपने डेटा को किसी बाहरी पार्टी को उजागर नहीं करते हैं। जो आपके एप्लिकेशन को सुरक्षित बनाता है।

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

जावा में डेटा छिपाना

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

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

जावा में गेटटर और सेटर

जावा में गेट्टर और सेटर दो पारंपरिक तरीके हैं जिनका उपयोग किसी चर के मानों को पुनः प्राप्त और अद्यतन करने के लिए किया जाता है। वे मुख्य रूप से परिवर्तनशील मान बनाने, संशोधित करने, हटाने और देखने के लिए उपयोग किए जाते हैं। सेटर विधि का उपयोग मूल्यों को अद्यतन करने के लिए किया जाता है और गेट्टर विधि का उपयोग मूल्यों को पढ़ने या पुनर्प्राप्त करने के लिए किया जाता है। उन्हें एक एक्सेसर और म्यूटेटर के रूप में भी जाना जाता है।

निम्न कोड गेट्टर और सेटर विधियों का एक उदाहरण है:

class Account{private int account_number;private int account_balance;// getter methodpublic int getBalance() {return this.account_balance;}// setter methodpublic void setNumber(int num) {this.account_number = num;}}

उपरोक्त उदाहरण में, getBalance () विधि वह गेटर विधि है जो चर खाता_बल का मान पढ़ती है और setNumber () विधि सेटर विधि है जो चर खाता_नंबर के लिए मान सेट या अद्यतन करता है।

अमूर्त बनाम एनकैप्सुलेशन

अक्सर एनकैप्सुलेशन को एब्सट्रैक्शन के साथ गलत समझा जाता है। चलो पढ़ते हैं-

  • कार्यक्षमता प्राप्त करने के लिए एनकैप्सुलेशन "कैसे" के बारे में अधिक है
  • अमूर्त "क्या" के बारे में अधिक है जो एक वर्ग कर सकता है।

इस अंतर को समझने के लिए एक सरल उदाहरण एक मोबाइल फोन है। जहां सर्किट बोर्ड में जटिल तर्क एक टच स्क्रीन में एनकैप्सुलेटेड है, और इसे बाहर सार करने के लिए इंटरफ़ेस प्रदान किया गया है।

जावा में एनकैप्सुलेशन के लाभ

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