एनकैप्सुलेशन बनाम एब्स्ट्रैक्शन
एनकैप्सुलेशन और एब्स्ट्रैक्शन OOP (ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग) भाषाओं में पाए जाने वाले दो अलग लेकिन संबंधित अवधारणाएं हैं। एनकैप्सुलेशन डेटा और व्यवहार को एक साथ एक इकाई के रूप में संयोजित करने की अवधारणा है। दूसरी ओर, एब्स्ट्रैक्शन यह प्रस्तुत करने की प्रक्रिया है कि एक इकाई कैसे व्यवहार करती है\जैसा कि इसे लागू किया जाता है, इसके विपरीत।
एनकैप्सुलेशन क्या है?
Encapsulation डेटा और संचालन को लपेटने की प्रक्रिया है जो उन पर एक इकाई में संचालित होती है। इसका अनिवार्य रूप से मतलब है कि डेटा तक पहुंचने के लिए, कुछ पूर्वनिर्धारित विधियों का उपयोग किया जाना चाहिए।दूसरे शब्दों में, इनकैप्सुलेटेड डेटा सीधे पहुंच योग्य नहीं है। यह सुनिश्चित करता है कि डेटा की अखंडता संरक्षित है क्योंकि उपयोगकर्ता डेटा को सीधे एक्सेस और संशोधित करने में असमर्थ है जैसा वह चाहता है। उपयोगकर्ता केवल उन विधियों के माध्यम से डेटा मान प्राप्त या सेट करेंगे जो उपयोगकर्ताओं के लिए सार्वजनिक रूप से उपलब्ध हैं। ये विधियां आम तौर पर डेटा सत्यापन प्रदान करती हैं ताकि केवल उपयुक्त प्रारूप में डेटा को फ़ील्ड में डालने की अनुमति दी जा सके। इसलिए, Encapsulation के लाभ तीन गुना हैं। एनकैप्सुलेशन के माध्यम से, प्रोग्रामर एक वर्ग के क्षेत्रों को केवल पढ़ने के लिए या केवल लिखने के लिए बना सकता है। दूसरे, एक वर्ग का अपने क्षेत्रों में संग्रहित सामग्री पर पूर्ण नियंत्रण हो सकता है। अंत में, किसी वर्ग के उपयोगकर्ताओं को यह चिंता करने की आवश्यकता नहीं है कि उसका डेटा कैसे संग्रहीत किया जा रहा है। जावा में, प्रोग्रामर सभी इंस्टेंस वेरिएबल को निजी घोषित कर सकता है और निजी क्षेत्रों तक पहुंचने और संशोधित करने के लिए प्राप्त और सेट विधियों (जो सार्वजनिक हैं) प्रदान कर सकता है।
अमूर्त क्या है?
एब्स्ट्रैक्शन प्रस्तुति विवरण को कार्यान्वयन विवरण से अलग करने की प्रक्रिया है।ऐसा इसलिए किया जाता है ताकि डेवलपर को अधिक जटिल कार्यान्वयन विवरण से मुक्त किया जा सके। इसके बजाय, प्रोग्रामर प्रस्तुति या इकाई के व्यवहार संबंधी विवरण पर ध्यान केंद्रित कर सकता है। सरल शब्दों में, अमूर्त इस बात पर ध्यान केंद्रित करता है कि एक निश्चित इकाई का उपयोग कैसे किया जा सकता है, न कि इसे कैसे लागू किया जाता है। एब्स्ट्रैक्शन अनिवार्य रूप से कार्यान्वयन विवरण को छुपाता है, ताकि भले ही कार्यान्वयन पद्धति समय के साथ बदल जाए, प्रोग्रामर को यह चिंता करने की ज़रूरत नहीं होगी कि यह उसके कार्यक्रम को कैसे प्रभावित करेगा। एक प्रणाली को कई परतों या स्तरों में सारणित किया जा सकता है। उदाहरण के लिए, निम्न-स्तरीय अमूर्त परतें हार्डवेयर विवरण प्रकट करेंगी, जबकि उच्च-स्तरीय अमूर्तता केवल इकाई के व्यावसायिक तर्क को प्रकट करेगी। अमूर्त शब्द का उपयोग एक इकाई और एक प्रक्रिया दोनों को संदर्भित करने के लिए किया जा सकता है और इससे कुछ भ्रम होता है। एक प्रक्रिया के रूप में, अमूर्त का अर्थ है किसी वस्तु या वस्तुओं के समूह के अनिवार्य विवरणों की अनदेखी करते हुए आवश्यक विवरण निकालना, जबकि एक इकाई के रूप में, अमूर्त का अर्थ केवल आवश्यक विवरणों के साथ एक मॉडल या एक इकाई का दृश्य है।जावा में, प्रोग्रामर एक वर्ग को एक अमूर्त इकाई के रूप में घोषित करने के लिए कीवर्ड एब्स्ट्रैक्ट का उपयोग कर सकता है, जो एक वास्तविक विश्व इकाई की आवश्यक परिभाषित विशेषताओं का प्रतिनिधित्व करता है।
एनकैप्सुलेशन और एब्स्ट्रैक्शन में क्या अंतर है?
भले ही एनकैप्सुलेशन और एब्स्ट्रक्शन ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषाओं में पाए जाने वाले अत्यधिक संबंधित अवधारणाएं हैं, लेकिन उनमें महत्वपूर्ण अंतर हैं। एब्स्ट्रैक्शन एक तकनीक है, जो हमें यह पहचानने में मदद करती है कि क्या दिखना चाहिए और क्या छिपाना चाहिए। इनकैप्सुलेशन सूचनाओं को इस तरह से पैक करने की तकनीक है कि यह दिखाई दे कि क्या दिखना चाहिए और क्या छिपाया जाना चाहिए। दूसरे शब्दों में, एनकैप्सुलेशन को अमूर्तता से परे एक कदम के रूप में पहचाना जा सकता है। जबकि अमूर्त एक वास्तविक दुनिया की वस्तु को उसकी आवश्यक परिभाषित विशेषताओं तक कम कर देता है, एनकैप्सुलेशन इस विचार को मॉडलिंग और उस इकाई की इस कार्यक्षमता को जोड़कर बढ़ाता है।