अमूर्त वी.एस. सूचना छिपाना वी.एस. इनकैप्सुलेशन


167

क्या आप मुझे बता सकते हैं कि सॉफ्टवेयर विकास में अमूर्तता और सूचना छिपाने के बीच अंतर क्या है ?

मैं उलझन में हूं। अमूर्त विस्तार को लागू करने और कुछ को छिपाने के सार जानकारी छुपाता है।

अद्यतन: मुझे इन तीन अवधारणाओं के लिए एक अच्छा जवाब मिला। वहाँ से लिए गए कई उद्धरणों के लिए नीचे अलग-अलग उत्तर देखें


"एनकैप्सुलेशन तब सूचना को इस तरह से पैकेजिंग करने की तकनीक है कि क्या छिपाया जाना चाहिए, और जो दिखाई देने का इरादा है उसे दिखाई दे।" ; यह याद रखना कि जानकारी छिपाने के माध्यम से एनकैप्सुलेशन प्राप्त किया जाता है।
wulfgarpro


प्रशस्ति पत्र किंक टूटी
ऋषि दुआ

जवाबों:


152

स्रोत पर जाएं! ग्रैडी बूच कहते हैं (ऑब्जेक्ट ओरिएंटेड एनालिसिस एंड डिजाइन में, पेज 49, दूसरा संस्करण):

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

दूसरे शब्दों में: अमूर्तता = वस्तु बाहरी रूप से; एनकैप्सुलेशन (सूचना छिपाने के माध्यम से प्राप्त) = आंतरिक रूप से वस्तु,

उदाहरण: .NET फ्रेमवर्क में, System.Text.StringBuilderकक्षा एक स्ट्रिंग बफर पर एक अमूर्तता प्रदान करती है। यह बफर एब्स्ट्रेक्शन आपको इसके कार्यान्वयन के संबंध में बफर के साथ काम करने देता है। इस प्रकार, आप इस बात की परवाह किए बिना बफर में तार जोड़ने में सक्षम हैं कि कैसे StringBuilderआंतरिक रूप से बफर को सूचक चीजों को ट्रैक करता है और मेमोरी को प्रबंधित करता है जब बफर पूरा हो जाता है (जो यह जानकारी छिपाने के माध्यम से एनकैप्सुलेशन के साथ करता है)।

आरपी


5
क्या आप कहेंगे कि इसी तरह अमूर्तता और एनकैप्सुलेशन पूरक हैं, एनकैप्सुलेशन और सूचना छिपाना भी पूरक हैं? निश्चित रूप से, जानकारी छिपाने के माध्यम से एनकैप्सुलेशन प्राप्त किया जाता है, लेकिन ... उस तंत्र को एनकैप्सुलेशन नहीं किया जाता है जिसके माध्यम से जानकारी छिपाई जाती है?
wulfgarpro

बूच की परिभाषा के लिए एक और वास्तविक दुनिया उदाहरण यहां
जीवनशैली

क्या आप मुझे बता सकते हैं कि क्या यह कहना सही होगा कि एब्सट्रैक्शन को क्लाइंट कोड के परिप्रेक्ष्य के माध्यम से सबसे अच्छी तरह से समझा जाता है जबकि एनकैप्सुलेशन को सर्विस कोड (यानी एनकैप्सुलेटेड क्लास ही) के नजरिए से समझा जाता है?
user1338998

उपरोक्त परिभाषा के लिए वास्तविक विश्व उदाहरण यहाँ बताया गया है: stackoverflow.com/a/635755/3181500
user3181500

83

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

(सभी उद्धरण उपरोक्त लेख से लिए गए हैं।)

अमूर्त:

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

जानकारी छिपाना:

"इसके इंटरफ़ेस या परिभाषा को इसके आंतरिक कामकाज के बारे में जितना संभव हो उतना कम प्रकट करने के लिए चुना गया था।" - [परनस, 1972 बी]

"एब्स्ट्रेक्शन हो सकता है [...] को पहचानने के लिए एक तकनीक के रूप में उपयोग किया जाता है कि कौन सी जानकारी छिपाई जानी चाहिए।"

"भ्रम तब हो सकता है जब लोग जानकारी के छिपने के बीच अंतर करने में विफल हो जाते हैं, और एक तकनीक (जैसे, अमूर्तता) का उपयोग किया जाता है जो यह पहचानने में मदद करता है कि कौन सी जानकारी छिपाई जानी है।"

encapsulation:

"यह ...] एक कैप्सूल बनाने के लिए संदर्भित करता है, मामले में एक वैचारिक बाधा, चीजों के कुछ संग्रह के आसपास।" - "वीरफ़ेट्स-ब्रॉक एट अल, 1990]

"एक प्रक्रिया के रूप में, एनकैप्सुलेशन का अर्थ है एक [...] कंटेनर के भीतर एक या एक से अधिक आइटम संलग्न करने का कार्य। एक इकाई के रूप में, एनकैप्सुलेशन, एक पैकेज या एक संलग्नक को संदर्भित करता है जो एक या अधिक आइटम रखता है।"

"यदि एनकैप्सुलेशन 'जानकारी को छिपाने के रूप में एक ही बात थी,' तो कोई यह तर्क दे सकता है कि 'जो कुछ भी एनकैप्सुलेट किया गया था वह भी छिपा हुआ था।" यह स्पष्ट रूप से सच नहीं है। ”

निष्कर्ष:

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


व्यावहारिक रूप से महान विवरण। यह जावा में ठोस उदाहरण प्रदान करने के लिए बहुत अच्छा होगा। यह मुझे दिखता है कि जावा में सेटर / गेटटर कार्यान्वयन को छिपाता है, इसलिए प्राप्ति Information Hiding(या कार्यान्वयन छिपाना) करता है, जबकि एक जेनेरिक classprivate
अतिक्रमण

57

Abstraction बुनियादी कार्यक्षमता पर एक परत प्रदान करके कार्यान्वयन विवरण छिपा रहा है।

Information Hidingउस कार्यान्वयन से प्रभावित हो रहे डेटा को छिपा रहा है। का उपयोग privateऔर इसके publicअंतर्गत आता है। उदाहरण के लिए, वर्गों के चर छिपाना।

EncapsulationClassप्रोग्रामिंग में जैसे सभी समान डेटा और फ़ंक्शंस एक समूह में डाल रहा है ; Packetनेटवर्किंग में।

वर्गों का उपयोग के माध्यम से, हम सभी तीन अवधारणाओं को लागू - Abstraction, Information HidingऔरEncapsulation


33

कृपया सरल अवधारणाओं को जटिल न करें।

एनकैप्सुलेशन : डेटा और विधियों को एक इकाई में लपेटना एनकैप्सुलेशन (जैसे वर्ग) है

अमूर्तता : यह पृष्ठभूमि विवरणों को शामिल किए बिना केवल आवश्यक चीजों का प्रतिनिधित्व करने का एक कार्य है। (उदा इंटरफ़ेस)

परीक्षा और अधिक जानकारी के लिए:

http://thecodekey.com/C_VB_Codes/Encapsulation.aspx

http://thecodekey.com/C_VB_Codes/Abstraction.aspx

यहाँ स्वीकृत परिभाषाएँ

पुनश्च: मुझे सुमिता अरोड़ा द्वारा सी ++ नामक एक पुस्तक की परिभाषा भी याद है जिसे हम 11 वीं कक्षा में पढ़ते हैं;)


6

ऑक्सफोर्ड इंग्लिश डिक्शनरी (OED) द्वारा दिए गए अमूर्त का अर्थ यहां पर अर्थ के सबसे करीब है, 'विचार में अलग होने का कार्य'। एक बेहतर परिभाषा यह हो सकती है कि 'पृष्ठभूमि या असंगत विवरण को शामिल किए बिना किसी चीज़ की आवश्यक विशेषताओं का प्रतिनिधित्व करना।'

सूचना छिपाना एक सिद्धांत है जो एक सॉफ्टवेयर घटक (जैसे कि एक वर्ग) के उपयोगकर्ताओं को केवल आवश्यक विवरणों को जानना है कि घटक को कैसे शुरू और पहुंचना है, और कार्यान्वयन के विवरण को जानने की आवश्यकता नहीं है।

संपादित करें : मुझे लगता है कि अमूर्तता निर्णय की प्रक्रिया है कि कार्यान्वयन के किन हिस्सों को छिपाया जाना चाहिए ।

तो इसकी सारगर्भित जानकारी को छुपाना VERSUS नहीं। यह जानकारी छिपाई VIA अमूर्त है।


4

मतिहीनता

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

encapsulation

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


3

अमूर्त आप इसे डाल के रूप में कार्यान्वयन का विवरण छिपा रहा है।

आप एक उच्च पर्याप्त बिंदु पर कुछ सार करते हैं कि आपको केवल एक क्रिया करने के लिए कुछ बहुत सरल करना होगा।

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

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में ये 2 अवधारणाएँ बहुत निकट से जुड़ी हुई हैं।


3

अमूर्तता - यह अप्रासंगिक और थकाऊ विवरणों को शामिल किए बिना किसी वस्तु की आवश्यक विशेषताओं की पहचान करने की प्रक्रिया है।

एनकैप्सुलेशन - यह डेटा को घेरने की प्रक्रिया है और इस डेटा को एक इकाई में जोड़कर कार्य करता है।

अमूर्तता और एनकैप्सुलेशन संबंधित हैं लेकिन पूरक अवधारणाएं हैं।

  1. अमूर्त प्रक्रिया है। एनकैप्सुलेशन वह तंत्र है जिसके द्वारा एब्स्ट्रेक्शन लागू किया जाता है।

  2. अमूर्तता किसी वस्तु के अवलोकनीय व्यवहार पर केंद्रित होती है। एनकैप्सुलेशन कार्यान्वयन पर ध्यान केंद्रित करता है जो इस व्यवहार को जन्म देता है।

सूचना छिपाना - यह किसी वस्तु के कार्यान्वयन विवरण को छिपाने की प्रक्रिया है। यह एनकैप्सुलेशन का परिणाम है।


2

एनकैप्सुलेशन: डेटा सदस्यों और सदस्य फ़ंक्शंस को एक साथ बांधना एनकैप्सुलेशन कहलाता है। इनकैप्सुलेशन क्लास के माध्यम से किया जाता है। अमूर्तता: क्रियान्वयन विवरण को छिपाने या उपयोग से देखने को अमूर्तता कहा जाता है। पूर्व: इंट एक्स; हम नहीं जानते कि इंटर्न आंतरिक रूप से कैसे काम करेगा। लेकिन हम जानते हैं कि int काम करेगा। वह अमूर्त है।


2

अमूर्तता: अमूर्तता वह अवधारणा / तकनीक है जिसका उपयोग यह पहचानने के लिए किया जाता है कि किसी वस्तु का बाहरी दृश्य क्या होना चाहिए। केवल आवश्यक इंटरफ़ेस उपलब्ध कराना।

सूचना छिपाना: यह अमूर्तता का पूरक है, क्योंकि जानकारी छिपाने के माध्यम से अमूर्तता प्राप्त की जाती है। बाकी सब कुछ लेकिन बाहरी दृश्य को छिपाना।

एनकैप्सुलेशन: एक इकाई में डेटा और संबंधित कार्यों का बंधन है। यह एब्सट्रैक्शन और सूचना छिपाने की सुविधा प्रदान करता है। एब्सट्रैक्शन और इंफॉर्मेशन हाइडिंग को प्राप्त करने के लिए यूनिट पर मेंबर एक्सेस की तरह एलिगेंट फीचर्स को लागू किया जा सकता है


2

लीक के सार पर लॉएल के पोस्ट देखें

JoelOnsoftware

मूल रूप से, अमूर्तता आपको उच्च स्तर की अवधारणाओं के बारे में सोचने की स्वतंत्रता देती है। एक गैर-प्रोग्रामिंग सादृश्यता यह है कि हम में से अधिकांश को यह नहीं पता है कि हमारा भोजन कहाँ से आता है, या इसका उत्पादन कैसे होता है, लेकिन यह तथ्य कि हमें (आमतौर पर) इसके बारे में चिंता करने की ज़रूरत नहीं है, हमें अन्य चीजों को करने के लिए स्वतंत्र करता है, जैसे प्रोग्रामिंग।

जानकारी छिपाने के लिए, मैं जाम से सहमत हूं।


2

बहुत कम समय में

एनकैप्सुलेशन : - सूचना छिपाना

अमूर्तता : - कार्यान्वयन छिपाना

Abstractionwhat the object doesएनकैप्सुलेशन साधनों पर ध्यान केंद्रित करने की सुविधा देता हैhow an object works


1

अमूर्त आप एक जटिल प्रक्रिया को एक सरल प्रक्रिया के रूप में मान सकते हैं। उदाहरण के लिए, मानक "फ़ाइल" अमूर्त फ़ाइलों को बाइट्स के एक सन्निहित सरणी के रूप में मानता है। उपयोगकर्ता / डेवलपर को क्लस्टर और विखंडन के मुद्दों के बारे में सोचने की ज़रूरत नहीं है। (अमूर्तता आम तौर पर कक्षाओं या उप-कलाओं के रूप में प्रकट होती है।)

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


1

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

तो, सूचना छिपाना एक लक्ष्य है, अमूर्तता एक प्रक्रिया है, और एनकैप्सुलेशन एक तकनीक है।


क्या आप उसी के लिए जावा उदाहरण दे सकते हैं?
चिन्मय

1

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


1

InformationHiding के आसपास अधिक विवरणों को जोड़ते हुए , पाया गया कि यह लिंक उदाहरणों के साथ वास्तव में अच्छा स्रोत है

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

एनकैप्सुलेशन एक प्रोग्रामिंग लैंग्वेज फीचर है।


1

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

अमूर्तता आपको एक अधिक अमूर्त चित्र, एक प्रकार का 10,000 फीट का दृश्य देकर जटिलता को छिपाती है, जबकि एनकैप्सुलेशन आंतरिक कार्य को छुपाता है ताकि आप इसे बाद में बदल सकें। दूसरे शब्दों में, एब्सट्रैक्शन डिज़ाइन स्तर पर विवरण छिपाता है, जबकि एनकैप्सुलेशन कार्यान्वयन स्तर पर विवरण छुपाता है।


0

उपरोक्त सभी उत्तरों को एक-एक करके पढ़ने के बाद मैं खुद को उस पोस्ट करने से रोक सकता हूं

अमूर्तता में उन वस्तुओं को परिभाषित करने की सुविधा शामिल होती है जो अमूर्त "अभिनेताओं" का प्रतिनिधित्व करती हैं जो कार्य कर सकते हैं, रिपोर्ट कर सकते हैं और उनके राज्य को बदल सकते हैं, और सिस्टम में अन्य वस्तुओं के साथ "संवाद" कर सकते हैं।

एनकैप्सुलेशन हालांकि ऊपर से काफी स्पष्ट है ->

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

संदर्भ विकि


0

मैं भी एब्सट्रैक्शन और एनकैप्सुलेशन की दो अवधारणाओं के बारे में बहुत उलझन में था। लेकिन जब मैंने myjavatrainer.com पर अमूर्त लेख देखा, तो मेरे लिए यह स्पष्ट हो गया कि Abstraction और Encapsulation Apples और Oranges हैं, आप वास्तव में उनकी तुलना नहीं कर सकते क्योंकि दोनों की आवश्यकता है।

इनकैप्सुलेशन यह है कि ऑब्जेक्ट कैसे बनाया जाता है, और एब्स्ट्रैक्शन यह है कि ऑब्जेक्ट को बाहरी दुनिया में कैसे देखा जाए।


0

एनकैप्सुलेशन: बाध्यकारी डेटा और उस पर कार्य करने वाले तरीके। यह अन्य वर्गों में अन्य तरीकों से डेटा को छिपाने की अनुमति देता है। उदाहरण: MyListवर्ग, एक आइटम जोड़ने किसी आइटम को निकालने, और सभी आइटम विधियां निकाल सकते add, removeहै, और removeAllसूची पर अधिनियम (एक निजी सरणी) कि सीधे बाहर से पहुँचा नहीं जा सकता।

अमूर्त: गैर प्रासंगिक व्यवहार और डेटा छिपा रहा है। आइटम वास्तव में कैसे संग्रहीत किए जाते हैं, जोड़े जाते हैं, या हटाए गए छिपाए जाते हैं (सार)। मेरे डेटा को सरल सरणी, ArrayList, LinkedList, आदि में रखा जा सकता है। इसके अलावा, तरीकों को कैसे लागू किया जाता है, इसे बाहर से छिपाया जाता है।


0

एनकैप्सुलेशन- आंतरिक डेटा तक एक नियंत्रित तरीके से पहुंच को लागू करना या सदस्यों को सीधे एक्सेस करने से रोकना।

अमूर्तता- कुछ विधियों के कार्यान्वयन विवरण को छिपाना अमूर्तता के रूप में जाना जाता है

आइए एक उदाहरण की मदद से समझते हैं: -

class Rectangle
{
private int length;
private int breadth;// see the word private that means they cant be accesed from 
outside world.
 //now to make them accessed indirectly define getters and setters methods
void setLength(int length)
{  
// we are adding this condition to prevent users to make any irrelevent changes 
  that is why we have made length private so that they should be set according to 
   certain restrictions
if(length!=0)
{
 this.length=length
 }
void getLength()
{
 return length;
 }
 // same do for breadth
}

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

 public int area()
 {
  return length*breadth;
 }

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


0

यह ध्यान देने योग्य है कि इन शर्तों को मानकीकृत किया गया है, IEEE परिभाषाएँ, जिन्हें https://pascal.computer.org/ पर खोजा जा सकता है ।

मतिहीनता

  1. एक वस्तु का दृश्य जो किसी विशेष उद्देश्य के लिए प्रासंगिक जानकारी पर ध्यान केंद्रित करता है और शेष जानकारी को अनदेखा करता है
  2. एक दृश्य तैयार करने की प्रक्रिया
  3. एक सरलीकृत मॉडल, या उस प्रक्रिया का परिणाम स्थापित करने के लिए अप्रासंगिक विस्तार को दबाने की प्रक्रिया

जानकारी छिपाना

  1. सॉफ्टवेयर विकास तकनीक जिसमें मॉड्यूल के आंतरिक कामकाज के बारे में प्रत्येक मॉड्यूल के इंटरफेस जितना संभव हो उतना कम पता चलता है और अन्य मॉड्यूल को मॉड्यूल के इंटरफ़ेस विनिर्देश में नहीं है के बारे में जानकारी का उपयोग करने से रोका जाता है
  2. किसी एकल मॉड्यूल में एक डिजाइन या कार्यान्वयन निर्णय शामिल करना ताकि निर्णय अन्य मॉड्यूल से छिपा हो

कैप्सूलीकरण

  1. सॉफ्टवेयर डेवलपमेंट तकनीक जिसमें एक मॉड्यूल के भीतर एक सिस्टम फ़ंक्शन या डेटा और संचालन का एक सेट अलग करना और मॉड्यूल के लिए सटीक विनिर्देश प्रदान करना शामिल है
  2. किसी वर्ग की जिम्मेदारियों के नाम, अर्थ और मूल्यों तक पहुंच की अवधारणा पूरी तरह से उनके बोध तक पहुंच से अलग हो जाती है
  3. विचार करें कि एक मॉड्यूल में एक बाहरी है जो इसके अंदर से अलग है, कि इसमें एक बाहरी इंटरफ़ेस और एक आंतरिक कार्यान्वयन है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.