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