एबैप्सैक्शन बनाम एब्सट्रैक्शन?


137

यहाँ एन्कैप्सुलेशन और अमूर्त की संक्षिप्त परिभाषा दी गई है।

अमूर्त:

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

encapsulation:

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

हम जैसे संशोधक के साथ क्या हासिल करते हैं private, publicयह भी बाहर की दुनिया से अनावश्यक विवरण छुपाता है जो एक अमूर्त अवधारणा के अलावा कुछ भी नहीं है

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

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

अपडेट: - ५ साल बाद मैं अपना खुद का उत्तर लेकर आया हूं जो कि इस पोस्ट में और नीचे दिए गए उत्तरों के आधार पर है

  1. अमूर्त और इनकैप्सुलेशन के बीच अंतर?
  2. encapsulation बनाम अमूर्त वास्तविक दुनिया उदाहरण

जैसा कि ऊपर परिभाषित किया गया है, अतिक्रमण एक अमूर्तता का एक उपकरण है, लेकिन मैं इसके संदर्भ में यह सोचता हूं कि एक वर्ग क्या करता है (कार्यक्षमता / उपयोग की परवाह किए बिना डेटा) जहां अमूर्त के रूप में ठोस कार्यान्वयन की चिंताओं से आपको दूर करने की भावना अधिक है (भले ही कैसे भी हो) यह किया जाता है और वास्तव में यह क्या किया जाता है यह विकिपीडिया से संभव हैAn 'abstraction' (noun) is a concept that acts as a super-categorical noun for all subordinate concepts, and connects any related concepts as a group, field, or category.
TI

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

जवाबों:


98

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

अमूर्त एक अधिक सामान्य शब्द है, यह सबक्लेशिंग द्वारा (दूसरों के बीच) भी प्राप्त किया जा सकता है। उदाहरण के लिए, Listमानक पुस्तकालय में इंटरफ़ेस वस्तुओं के अनुक्रम के लिए एक अमूर्तता है, उनकी स्थिति से अनुक्रमित, ए या ए के ठोस उदाहरण Listहैं । कोड जो एक सार के साथ अंतःक्रिया करता है कि यह किस प्रकार की सूची का उपयोग कर रहा है।ArrayListLinkedListList

अंतर्निहित अवस्था को एनकैप्सुलेशन द्वारा छिपाए बिना अक्सर संभव नहीं होता है - यदि कोई वर्ग अपनी आंतरिक स्थिति को उजागर करता है, तो वह अपने आंतरिक कामकाज को बदल नहीं सकता है, और इस प्रकार सार नहीं किया जा सकता है।


8
एनकैप्सुलेशन का अर्थ है कि संबंधित संपत्तियों, विधियों और अन्य सदस्यों के एक समूह को एक इकाई या वस्तु के रूप में माना जाता है। msdn.microsoft.com/en-us/library/dd460654.aspx
raberana

1
एनकैप्सुलेशन से एब्सट्रैक्शन होता है।
मार्टिन

124

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

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

एनकैप्सुलेशन एक तकनीक है । यह अमूर्तता में सहायता के लिए हो सकता है या नहीं भी हो सकता है, लेकिन यह निश्चित रूप से जानकारी छिपाने और / या संगठन के बारे में है। यह डेटा और फ़ंक्शंस को किसी तरह से समूहीकृत करने की मांग करता है - निश्चित रूप से अच्छा ओओपी अभ्यास मांग है कि उन्हें अमूर्त द्वारा समूहीकृत किया जाना चाहिए। हालाँकि, इसके अन्य उपयोग भी हैं जो केवल स्थिरता आदि में सहायता करते हैं।


13
एब्सट्रैक्शन की आपकी परिभाषा सबसे अच्छी है जिसे मैंने कभी देखा है, और मुझे पहली बार ऐसा महसूस हो रहा है, यह वास्तव में मेरे सिर पर क्लिक करता है और समझ में आता है। मुझे पता है कि आपको यह पोस्ट करने के बाद 3+ साल हो गए हैं, लेकिन धन्यवाद।
केसी क्रुकोस्टोन

1
वाह .... अमूर्त .... कला के संदर्भ में व्यक्त ... लाल क्रोध हो सकता है, यह हम सभी को पता होना चाहिए! अवधारणा के इस दृष्टिकोण के लिए धन्यवाद :-)
SlowLearner

एनकैप्सुलेशन का उपयोग "ढीले युग्मन और उच्च सामंजस्य" को प्राप्त करने के लिए किया जाता है।
सॉर्टर

28

एनकैप्सुलेशन एब्सट्रैक्शन का एक हिस्सा है या हम इसे एब्सट्रैक्शन का सबसेट कह सकते हैं

वे विभिन्न अवधारणाएँ हैं।

  • अमूर्तता किसी वस्तु की सभी अनावश्यक / महत्वहीन विशेषताओं को दूर करने की प्रक्रिया है और केवल विशेषताओं को अपने डोमेन के लिए सबसे उपयुक्त रखती है।

    एक व्यक्ति के लिए: आप पहले और अंतिम नाम और एसएसएन रखने का फैसला करते हैं। अप्रासंगिक के रूप में आयु, ऊंचाई, वजन आदि की अनदेखी की जाती है।

    अमूर्त वह जगह है जहां आपका डिजाइन शुरू होता है।

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

क्या हम कह सकते हैं कि एब्सट्रैक्शन एक तरह का डिज़ाइन कॉन्सेप्ट है और एनकैप्सुलेशन मुख्य रूप से एब्सट्रैक्शन के दौरान डिज़ाइन किए गए डिज़ाइन के कार्यान्वयन के बारे में चिंता करता है?
एम सच

1
एनकैप्सुलेशन में आप उन परिचालनों को परिभाषित करते हैं जिन्हें आपके डेटा पर लागू किया जाना चाहिए / किया जा सकता है। यह डिज़ाइन का भी हिस्सा हो सकता है। एसएसएन को पुनः प्राप्त करें, लेकिन इसे संशोधित न करें
क्रेटिलस

25

एनकैप्सुलेशन एक कैप्सूल या यूनिट में अनावश्यक डेटा छिपा रहा है

अमूर्तता किसी वस्तु की आवश्यक विशेषता दिखा रही है

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

Class Learn
{
  private int a;         // by making it private we are hiding it from other
  private void show()   //class to access it
  {
   console.writeline(a);
  }
}

यहां हमारे पास एक यूनिट या कैप्सूल यानी क्लास में डेटा रैप होता है।

Abstraction Encapsulation के ठीक विपरीत है।

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

 abstract class MobilePhone
    {
        public void Calling();       //put necessary or essential data
        public void SendSMS();       //calling n sms are main in mobile
    }

    public class BlackBerry : MobilePhone   // inherited main feature
    {
        public void FMRadio();            //added new
        public void MP3();
        public void Camera();
        public void Recording();

    }

मैं सहमत हूँ। ये लोग थोड़े विपरीत हैं। अच्छा ऊप उन चीजों को अमूर्त करता है जो बदल नहीं जाती हैं और [जो परिवर्तन करते हैं] [को दोहराना]। [१]: सिद्धांत-
wiki.net/…

15

अमूर्त एक बहुत ही सामान्य शब्द है, और सॉफ्टवेयर में अमूर्त वस्तु-उन्मुख भाषाओं तक सीमित नहीं है। एक शब्दकोष की परिभाषा: "ठोस वास्तविकताओं, विशिष्ट वस्तुओं या वास्तविक उदाहरणों के अलावा एक सामान्य गुणवत्ता या विशेषता के रूप में किसी चीज़ पर विचार करने का कार्य"।

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

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

सॉफ्टवेयर में, सब कुछ एक अमूर्त है। हम ऐसे कार्यक्रमों का निर्माण करते हैं जो वास्तविकता के कुछ पहलू का अनुकरण या मॉडल करते हैं, लेकिन आवश्यकता से हमारे मॉडल हमेशा "वास्तविक चीज" के कुछ विवरणों को दूर करते हैं। हम एब्स्ट्रक्शन की परत पर परत का निर्माण करते हैं, क्योंकि यह एकमात्र तरीका है जिससे हम कुछ भी कर सकते हैं। (कल्पना करें कि आप एक सुडोकू सॉल्वर बनाने की कोशिश कर रहे थे, और आपको इसे केवल सेमीकंडक्टर क्रिस्टल का उपयोग करके डिजाइन करना था। "ठीक है, मुझे यहां एन-टाइप सिलिकॉन का एक टुकड़ा चाहिए ...")

इसकी तुलना में, "एन्कैप्सुलेशन" एक बहुत ही विशिष्ट और सीमित शब्द है। इस प्रश्न के कुछ अन्य उत्तर पहले ही इसके लिए अच्छी परिभाषा दे चुके हैं।


14

5 वर्षों के बाद मेरे अपने प्रश्न का उत्तर देते हुए मुझे लगता है कि इसे अभी और विवरण की आवश्यकता है

अमूर्त:

तकनीकी परिभाषा: - अमूर्तता अनावश्यक विवरण (जटिल या सरल) को छिपाने के लिए एक अवधारणा है और केवल ऑब्जेक्ट की आवश्यक विशेषताओं को दर्शाती है। यहां कोई क्रियान्वयन नहीं है, यह सिर्फ एक अवधारणा है

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

यहां तक ​​कि जब मैं कहता हूं कि मेरी कंपनी को कुछ माध्यम / उपकरण की आवश्यकता है ताकि कर्मचारी वॉयस कॉल के माध्यम से ग्राहक से जुड़ सकें। फिर मैं भी अमूर्त बात कर रहा हूं लेकिन निचले स्तर पर डिवाइस / माध्यम फोन या स्काइप या कुछ और आदि हो सकता है

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

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

व्यावहारिक रूप से इसका क्या अर्थ है: - अब जब मैं कहता हूं कि मेरी कंपनी को कुछ iphone की जरूरत है ताकि कर्मचारी वॉयस कॉल के माध्यम से ग्राहक से जुड़ सकें। अब मैं कुछ ठोस वस्तु (जैसे iphone) के बारे में बात कर रहा हूं। भले ही मैं यहाँ iphone की नॉटी किटी में नहीं जा रहा हूँ, लेकिन iphone के पास कुछ ऐसी अवस्था / संक्षिप्त जानकारी / कार्यान्वयन है जहाँ डिवाइस / माध्यम नहीं है। जब मैं ठोस वस्तु कहता हूं, तो वास्तव में इसका मतलब किसी भी वस्तु से है, जिसमें कुछ (जावा अमूर्त वर्ग की तरह पूर्ण नहीं) कार्यान्वयन / इसके साथ जुड़ी जानकारी है।

इसलिए iPhone वास्तव में अपने राज्य / सूचना को छिपाने के लिए रणनीति के रूप में यहां एनकैप्सुलेशन का उपयोग करता है और केवल उन लोगों को बेनकाब करता है जो सोचते हैं कि इसे उजागर किया जाना चाहिए। इसलिए अमूर्त और अतिक्रमण दोनों कुछ अनावश्यक विवरणों को छिपाते हैं लेकिन अवधारणा के स्तर पर अमूर्तता और वास्तव में कार्यान्वयन स्तर पर इनकैप्सुलेशन

यह इस पोस्ट में और नीचे दिए गए जवाबों पर आधारित है

  1. अमूर्त और इनकैप्सुलेशन के बीच अंतर?
  2. encapsulation बनाम अमूर्त वास्तविक दुनिया उदाहरण

5

एनकैप्सुलेशन - कक्षा के घटकों को बाहर से सीधे पहुंचने से रोकने की प्रक्रिया। यह "निजी" संशोधक का उपयोग करके प्राप्त किया जाता है ताकि कुछ वर्ग के सदस्यों (डेटा क्षेत्र या विधि) को अन्य वर्गों या वस्तुओं से सीधे पहुंच से रोका जा सके या सार्वजनिक सदस्यों (इंटरफ़ेस) द्वारा इन निजी सदस्यों तक पहुंच प्रदान की जा सके। यह वर्ग के सदस्यों को मानव अंगों को त्वचा के नीचे छिपी हुई / सिकुड़ा हुआ या कुछ ढाल के रूप में संरक्षित करता है।

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


4

यह मैंने इसे कैसे समझा:

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में, हमारे पास कुछ कक्षाएं हैं । यह किस लिए हैं? वे कुछ राज्य को स्टोर करने के लिए और उस राज्य को बदलने के लिए कुछ तरीकों को स्टोर करने के लिए हैं, यानी वे राज्य और उसके तरीकों को इनकैप्सुलेट कर रहे हैं ।

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

अब, एक विरासत का परिदृश्य लें । हमारे पास बेस क्लास और व्युत्पन्न (विरासत में मिली) कक्षाएं हैं। तो, बेस क्लास यहां क्या कर रहा है? यह व्युत्पन्न वर्गों से कुछ चीजों का सार है।

उनमें से सभी अलग हैं, है ना? लेकिन, हम उन्हें अच्छे ऑब्जेक्ट ओरिएंटेड प्रोग्राम लिखने के लिए मिलाते हैं। आशा करता हूँ की ये काम करेगा :)


3

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

एन्कैप्सुलेशन कुछ हिस्सों के बाहर तक पहुंच को प्रतिबंधित करता है और उस चीज़ की स्थिति को बंडल करता है जो राज्य का उपयोग करता है।


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


1

नोट: मैं इसे साझा कर रहा हूं। इसका मतलब यह नहीं है कि यहां अच्छा जवाब नहीं है, लेकिन क्योंकि मैं आसानी से समझ गया हूं।

उत्तर:

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

इसी तरह, कक्षा में हमारे साथ क्या व्यवहार होने वाला है? अमूर्त यहाँ भी लागू किया जाता है। यहां क्या करना जरूरी है और क्या ओवरडोज होगा? फिर हमने कक्षा से कुछ जानकारी काट दी। यह प्रक्रिया अमूर्तता को लागू कर रही है।

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

इस विषय के बारे में अधिक विवरण के लिए यहां जाएं


1

एक अलग तरीके से समझने की कोशिश करते हैं।

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

यदि एब्सट्रैक्शन नहीं है, तो आप कह सकते हैं कि ऑब्जेक्ट का उपयोग कम है। आप ऑब्जेक्ट की पहचान नहीं कर सकते और न ही आप इसकी किसी भी कार्यक्षमता तक पहुँच सकते हैं। एक टीवी का उदाहरण लें, अगर आपके पास बिजली चालू करने, चैनल बदलने, वॉल्यूम बढ़ाने या घटाने आदि का विकल्प नहीं है, तो टीवी का क्या उपयोग है और आप इसका उपयोग कैसे करते हैं?

यदि एनकैप्सुलेशन नहीं है या ठीक से लागू नहीं किया जा रहा है, तो आप ऑब्जेक्ट का दुरुपयोग कर सकते हैं। डेटा द्वारा / घटकों का दुरुपयोग हो सकता है। टीवी का एक ही उदाहरण लें, यदि टीवी की मात्रा के लिए कोई एनकैप्सुलेशन नहीं है, तो वॉल्यूम कंट्रोलर का दुरुपयोग करके इसे नीचे लाया जा सकता है या इसकी सीमा (0-40 / 50) से परे जा सकता है।


1

एनकैप्सुलेशन बाहरी इकाई से वस्तु / उदाहरण के आंतरिक व्यवहार को ढहने से बचाता है। तो, इस बात की पुष्टि करने के लिए एक नियंत्रण प्रदान किया जाना चाहिए कि जो डेटा आपूर्ति किया जा रहा है, वह इस अस्तित्व को बचाने के लिए उदाहरण / वस्तु की आंतरिक प्रणाली को नुकसान नहीं पहुंचाएगा।

अच्छा उदाहरण, डिवाइडर एक वर्ग है जिसमें दो उदाहरण चर लाभांश और भाजक हैं और एक विधि getDividedValue है।

क्या आप कृपया सोच सकते हैं, यदि विभाजक 0 पर सेट है तो आंतरिक प्रणाली / व्यवहार (getDivided) टूट जाएगा।

तो, एक विधि के माध्यम से अपवाद को फेंककर वस्तु आंतरिक व्यवहार को संरक्षित किया जा सकता है।


0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.