encapsulation java
उदाहरण के साथ जावा में एनकैप्सुलेशन के बारे में जानें, हमें इसकी आवश्यकता क्यों है, संबंधित गेटटर और सेटर विधियां:
इस ट्यूटोरियल में, हम एक और OOP अवधारणा पर चर्चा करेंगे - 'एनकैप्सुलेशन'। OOP के चार स्तंभ हैं, मतिहीनता, अतिक्रमण, बहुरूपता और वंशानुक्रम।
जबकि एब्स्ट्रैक्शन का उपयोग केवल अंतिम उपयोगकर्ता के लिए प्रासंगिक विवरणों को उजागर करने के लिए किया जाता है, एनकैप्सुलेशन मुख्य रूप से डेटा सुरक्षा से संबंधित है। डेटा सुरक्षा सुनिश्चित करने के लिए, एनकैप्सुलेशन एक्सेस सदस्यों को निर्दिष्ट करके अवांछित पहुंच से डेटा सदस्यों को ढाल देता है और डेटा को एक एकल इकाई में भी बंडल करता है।
=> यहाँ बिल्कुल सही जावा प्रशिक्षण गाइड देखें।
तो हम जावा में एनकैप्सुलेशन को कैसे परिभाषित कर सकते हैं?
एनकैप्सुलेशन की परिभाषा
'जावा में एनकैप्सुलेशन को एक तंत्र के रूप में परिभाषित किया जा सकता है जिसके उपयोग से डेटा और उस डेटा पर काम करने वाले तरीकों को एक एकल इकाई बनाने के लिए लपेटा जाता है।'
आप क्या सीखेंगे:
जावा में एनकैप्सुलेशन क्या है
एनकैप्सुलेशन का उपयोग करके हम अन्य वर्गों के वर्ग डेटा सदस्यों (चर) को भी छिपा सकते हैं। इन डेटा सदस्य चर को उस वर्ग के तरीकों का अप्रत्यक्ष रूप से उपयोग किया जा सकता है जिसमें वे घोषित किए जाते हैं। बदले में तरीकों को उस वर्ग के ऑब्जेक्ट का उपयोग करके एक्सेस किया जाता है।
तो हम उपरोक्त परिभाषा से जो निष्कर्ष निकालते हैं वह यह है कि हमने डेटा सदस्य चर को एक वर्ग के अंदर छिपा दिया है और पहुँच संशोधक भी निर्दिष्ट किया है ताकि वे अन्य वर्गों के लिए सुलभ न हों।
इस प्रकार एनकैप्सुलेशन भी एक प्रकार का 'डेटा छिपाना' है, हालांकि बाद में ट्यूटोरियल में हम देखेंगे कि एनकैप्सुलेशन डेटा छिपाने के समान नहीं है।
उपरोक्त आंकड़ा एक वर्ग का प्रतिनिधित्व करता है जो एक एनकैप्सुलेशन इकाई है जो इस डेटा पर काम करने वाले डेटा और विधियों को एक एकल इकाई में बंडल करता है।
स्थैतिक विश्लेषण क्या नहीं मिल सकता है
जैसा कि एनकैप्सुलेशन मुख्य रूप से डेटा से संबंधित है, इसे वैकल्पिक रूप से 'डेटा एनकैप्सुलेशन' कहा जाता है।
हम मेडिकल कैप्सूल के रूप में इनकैप्सुलेशन की कल्पना कर सकते हैं। जैसा कि हम सभी जानते हैं कि चिकित्सा एक चिकित्सा कैप्सूल के अंदर संलग्न है। इसी तरह, डेटा और विधियाँ एक इकाई में एनकैप्सुलेशन में संलग्न हैं।
इस प्रकार एनकैप्सुलेशन डेटा के चारों ओर एक सुरक्षा कवच के रूप में कार्य करता है और डेटा को बाहरी दुनिया द्वारा अनधिकृत पहुंच से बचाता है। दूसरे शब्दों में, यह हमारे एप्लिकेशन के संवेदनशील डेटा की सुरक्षा करता है।
जावा में, एन्कैप्सुलेशन को लागू करने के लिए दो चरण हैं। निम्नलिखित कदम हैं:
- कक्षा सदस्य चर घोषित करने के लिए एक्सेस मॉडिफ़ायर ’प्राइवेट’ का उपयोग करें।
- इन निजी सदस्य चर तक पहुंचने और उनके मूल्यों को बदलने के लिए, हमें क्रमशः सार्वजनिक गेटटर और सेटर विधियां प्रदान करनी होंगी।
आइए अब जावा में एनकैप्सुलेशन के उदाहरण को लागू करते हैं।
जावा एनकैप्सुलेशन उदाहरण
//Student_Id and name bundled in a unit 'Student' => encapsulation class Student { private int Student_Id; private String name; //getters, setters for Student_Id and name fields. public int getId() { return Student_Id; } public void setId(int s_id) { this.Student_Id = s_id; } public String getname() { return name; } public void setname(String s_name) { this.name = s_name; } } class Main{ public static void main(String[] args) { //create an object of Student class Student s=new Student(); //set fields values using setter methods s.setId (27); s.setname('Tom Lee'); //print values using getter methods System.out.println('Student Data:' + '
Student ID:' + s.getId() + ' Student Name:' + s.getname()); } }
आउटपुट:
उपरोक्त कार्यक्रम में, हम एक वर्ग की घोषणा करते हैं जो एनकैप्सुलेशन इकाई है। इस कक्षा के छात्र ने डेटा (Student_Id और name) और इन सदस्यों के लिए मानों को पढ़ने और सेट करने के तरीकों को एक ही इकाई में बंडल किया है।
सदस्य क्षेत्रों से जुड़े पहुँच संशोधक पर ध्यान दें। दोनों सदस्य क्षेत्र निजी हैं ताकि वे छात्र वर्ग के बाहर सुलभ न हों।
हम इन क्षेत्रों और सेटर विधियों (setId और setname) के मूल्यों को इन तरीकों के लिए पढ़ने के लिए getters (getId और getname) प्रदान करते हैं। यह एकमात्र एक्सेस है जो उनके पास है और यह भी स्टूडेंट क्लास ऑब्जेक्ट का उपयोग करके किया जाना चाहिए।
गेटटर और सेटर विधियाँ
जावा में एनकैप्सुलेशन को लागू करने के लिए, हम कक्षा के डेटा सदस्य चर को निजी बनाते हैं। अब, ये निजी चर वर्ग ऑब्जेक्ट सहित कक्षा के बाहर किसी भी चीज के लिए सुलभ नहीं हैं।
इसका मतलब है अगर हमारे पास निम्नानुसार एक वर्ग एबीसी है।
कक्षा एबीसी {
निजी int उम्र;
}
निम्नानुसार कक्षा एबीसी का एक ऑब्जेक्ट बनाएं:
एबीसी एबीसी = नया एबीसी ();
abageage = 21; // संकलक त्रुटि
इसलिए उपरोक्त कोड में, क्लास ऑब्जेक्ट का उपयोग करके निजी चर तक पहुंचने के परिणामस्वरूप संकलक त्रुटि होगी।
निजी चरों को एक्सेस करने और उनके मूल्यों को पढ़ने और उनमें कुछ नए मूल्यों को सेट करने के लिए, हमें ऐसा करने के लिए कुछ तरीके की आवश्यकता है। इस प्रकार जावा गेट्टर और सेटर विधियों का उपयोग करके निजी चर का उपयोग करने का एक तरीका प्रदान करता है।
गेट्टर और सेटर्स सार्वजनिक विधियाँ हैं जिनका उपयोग हम निजी चरों के मूल्यों को बनाने, संशोधित करने, हटाने या बस देखने के लिए कर सकते हैं।
नीचे कार्यक्रम गेट्टर और सेटर विधियों का एक उदाहरण है।
//Account class - private data members bundled with getters and setters class Account { //private data members private long acc_no; private String name,email; private float amount; //public getter and setter methods for each data member public long getAcc_no() { return acc_no; } public void setAcc_no(long acc_no) { this.acc_no = acc_no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public float getAmount() { return amount; } public void setAmount(float amount) { this.amount = amount; } } public class Main { public static void main(String[] args) { //create instance of Account class Account myAcc=new Account(); //set values for data members through setter methods myAcc.setAcc_no(775492842L); myAcc.setName('SoftwareTestingHelp.com'); myAcc.setEmail('sth_account@sth.com'); myAcc.setAmount(25000f); //read data member values through getter methods System.out.println('Account No:' + myAcc.getAcc_no()+' '+'Account Name:' + myAcc.getName()+'
'+'Account holder email:' + myAcc.getEmail()+'
' + 'Amount in Account:' + myAcc.getAmount()); } }
आउटपुट:
उपरोक्त कार्यक्रम में एक वर्ग खाता है और इसमें खाते से संबंधित चार निजी चर हैं। जैसा कि सभी डेटा सदस्य निजी हैं, हमने इनमें से प्रत्येक चर के लिए गेट्टर और सेटर विधियां प्रदान की हैं।
मुख्य विधि में, हम इन निजी चर के लिए मानों को पढ़ते हैं और सेट करते हैं, जो क्लास अकाउंट के ऑब्जेक्ट के माध्यम से एक्सेस किए गए पब्लिक गेट्टर और सेटर विधियों का उपयोग करते हैं।
जावा में डेटा छिपाना
बार-बार, हम इनकैप्सुलेशन और डेटा को इंटरचेंज को छुपाकर उपयोग करते हैं। लेकिन दोनों एक जैसे नहीं हैं। जावा एन्कैप्सुलेशन डेटा के बेहतर प्रबंधन और सुरक्षा को सुनिश्चित करने के लिए संबंधित डेटा को एक इकाई में समूहीकृत करने से संबंधित है।
दूसरी ओर डेटा छिपाना कार्यान्वयन विवरण को छिपाकर डेटा सदस्य पहुंच को प्रतिबंधित करता है। हालाँकि एनकैप्सुलेशन वास्तव में डेटा छिपाना नहीं है, लेकिन यह हमें डेटा छिपाने का तरीका प्रदान करता है। एक्सेस मॉडिफायर का उपयोग करके डेटा छिपाना हासिल किया जाता है।
जावा चार पहुँच संशोधक प्रदान करता है।
- जनता: सभी के लिए सुलभ।
- निजी: वर्ग के भीतर ही सुलभ।
- संरक्षित: युक्त पैकेज और उपवर्गों के लिए सुलभ।
- चूक: पैकेज के भीतर पहुंच योग्य।
एनकैप्सुलेशन एक एकल इकाई में डेटा को बंडल करता है, इसलिए एक तरह से यह डेटा को छुपाता है। इसके अलावा, यह डेटा को निजी बनाता है और इस प्रकार बाहरी दुनिया के लिए दुर्गम है। डेटा को निजी बनाने के लिए, हम एक्सेस मॉडिफायर प्राइवेट का उपयोग करते हैं, जो एक डेटा छुपा अवधारणा है।
उसी समय, कार्यान्वयन विवरणों को उजागर किए बिना केवल अंतिम विवरण उपयोगकर्ता को प्रदान किया जाता है जो अमूर्तता की परिभाषा है। इस प्रकार हम एनकैप्सुलेशन को एब्सट्रैक्शन के साथ-साथ डेटा-हाइडिंग के रूप में देख सकते हैं।
क्यों हमें एनकैप्सुलेशन की आवश्यकता है
जावा में एनकैप्सुलेशन क्यों आवश्यक है, इसके कई कारण हैं:
- एन्कैप्सुलेशन हमें किसी अन्य फ़ंक्शन या कोड को बदलने के बिना कोड या कोड के एक हिस्से को संशोधित करने की अनुमति देता है।
- एनकैप्सुलेशन नियंत्रित करता है कि हम डेटा का उपयोग कैसे करते हैं।
- हम एन्कैप्सुलेशन का उपयोग करके आवश्यकताओं के आधार पर कोड को संशोधित कर सकते हैं।
- एनकैप्सुलेशन हमारे अनुप्रयोगों को सरल बनाता है।
बार बार पूछे जाने वाले प्रश्न
क्यू # 1) जावा में एनकैप्सुलेशन का उपयोग क्यों किया जाता है?
उत्तर: डेटा छुपाने के लिए जावा में एनकैप्सुलेशन ज्यादातर उपयोगी है। या दूसरे शब्दों में, डेटा तक पहुंच के बारे में फैसला करना है कि कौन इसे एक्सेस कर सकता है, और कौन नहीं कर सकता।
Q # 2) OOP में एनकैप्सुलेशन क्या है?
उत्तर: एनकैप्सुलेशन ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा के महत्वपूर्ण स्तंभों में से एक है और यह डेटा और तरीकों को एक ही यूनिट में संचालित करने वाले डेटा के बंडलिंग से संबंधित है। उदाहरण के लिए, जावा में एक वर्ग एक संकुचित संरचना है। एनकैप्सुलेशन भी डेटा तक पहुंच प्रदान करने के बारे में निर्णय लेता है।
एमएस sql सर्वर साक्षात्कार अनुभवी के लिए सवाल और जवाब
Q # 3) जावा में एनकैप्सुलेशन का क्या फायदा है?
उत्तर: जावा में एनकैप्सुलेशन का प्रमुख लाभ डेटा छिपाना है। एनकैप्सुलेशन का उपयोग करके हम प्रोग्रामर को उस डेटा पर काम करने वाले डेटा और तरीकों तक पहुंच के बारे में निर्णय लेने की अनुमति दे सकते हैं। उदाहरण के लिए, यदि हम चाहते हैं कि डेटा का एक विशेष टुकड़ा वर्ग के बाहर किसी के लिए भी दुर्गम हो, तो हम उस डेटा को निजी बनाते हैं।
Q # 4) एनकैप्सुलेशन प्रक्रिया क्या है?
उत्तर: एनकैप्सुलेशन एक प्रारूप या प्रोटोकॉल (नेटवर्किंग शब्दों में) से डेटा लेने और इसे किसी अन्य प्रारूप या प्रोटोकॉल में अनुवादित या सुधारने की एक प्रक्रिया है ताकि डेटा अनुप्रयोगों या नेटवर्क में पहुंच योग्य हो और उसी समय यह संरक्षित हो।
Q # 5) डेटा एनकैप्सुलेशन में अंतिम चरण क्या है?
उत्तर: एन्कैप्सुलेशन में अंतिम चरण उपयोगकर्ता जानकारी को समकक्ष डेटा में बदल रहा है। फिर इस डेटा को उन खंडों में बदल दिया जाता है जो आगे डेटा पैकेट में बदल जाते हैं। डेटा पैकेट को एक तार्किक फ्रेम में रखा जाता है जिसे सॉफ्टवेयर वातावरण में स्थानांतरित किया जा सकता है
निष्कर्ष
यह जावा में एनकैप्सुलेशन पर हमारे ट्यूटोरियल का निष्कर्ष निकालता है। एनकैप्सुलेशन, सदस्य चर और इन डेटा सदस्यों को एक ही इकाई में संचालित करने के तरीकों को बंडल करने की एक तकनीक है। जावा में एक वर्ग एनकैप्सुलेशन का एक उत्कृष्ट उदाहरण है क्योंकि यह डेटा और विधियों को एक इकाई में लपेटता है।
जावा सभी डेटा सदस्यों को निजी बनाकर और फिर सार्वजनिक होने वाले गेटटर और सेटर के तरीकों को प्रदान करके इनकैप्सुलेशन कार्यान्वयन को प्राप्त करता है ताकि हम निजी चर के मूल्यों को पढ़ सकें और इन चर के लिए नए मान सेट कर सकें।
=> एक्सक्लूसिव जावा ट्रेनिंग ट्यूटोरियल सीरीज़ के लिए यहां जाएं।
अनुशंसित पाठ
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- जावा में ट्रीमैप - ट्यूटोरियल जावा ट्रीपैप उदाहरणों के साथ
- जावा डबल - प्रोग्रामिंग उदाहरणों के साथ ट्यूटोरियल
- जावा फ्लोट ट्यूटोरियल प्रोग्रामिंग उदाहरण के साथ
- जावा रिवर्स स्ट्रिंग: प्रोग्रामिंग उदाहरणों के साथ ट्यूटोरियल
- जावा इनम: उदाहरणों के साथ जावा गणना ट्यूटोरियल
- उदाहरण के लिए जावा इंटेगर और जावा बिगइंटर क्लास
- जावा स्ट्रिंग में () उदाहरण के साथ विधि ट्यूटोरियल शामिल हैं