मैं आपके प्रश्न का उत्तर एक प्रश्न के साथ दूंगा; जब आप आज सुबह काम करने के लिए चले गए (मैं मान लूंगा कि आपने वास्तव में ऐसा किया था), क्या आपने ठीक से ध्यान दिया कि इंजन ने ईंधन-हवा के मिश्रण में जाने के लिए वाल्व कैसे खोला, और फिर उन्हें प्रज्वलित किया? नहीं, आपको परवाह नहीं है कि जब आप सड़क पर गाड़ी चला रहे हों तो आपकी कार का इंजन कैसे काम करता है। आप परवाह करते हैं कि यह काम करता है ।
मान लीजिए, एक दिन, आपकी कार काम करने में विफल रहती है। प्रारंभ नहीं करता है, एक छड़ फेंकता है, एक बेल्ट को तोड़ता है, बेवजह उस ठोस अवरोध में अपनी खुद की कोई गलती के माध्यम से हल करता है जब आप टेक्स्टिंग में व्यस्त थे। अब, आपको एक नई कार (कम से कम अस्थायी रूप से) की आवश्यकता है। क्या आप वास्तव में परवाह करते हैं कि यह नई कार कैसे काम करती है? नहीं। आपको इस बात की परवाह है कि यह काम करता है, और दूसरा यह कि आप उसी ज्ञान और कौशल का उपयोग कर सकते हैं जो आपने अपनी पुरानी कार को चलाने के लिए इस्तेमाल किया था। आदर्श रूप में, यह आपको दिखना चाहिए कि जिस कार में आप ड्राइव कर रहे हैं उसमें कोई बदलाव नहीं हुआ है। वास्तविक रूप से, जिस तरह से यह नई कार काम करती है, आपको यथासंभव कुछ "आश्चर्य" देना चाहिए।
ये मूल सिद्धांत एनकैप्सुलेशन और अमूर्त के पीछे मूल सिद्धांत हैं। किसी वस्तु का क्या होता है, इसका ज्ञान उसे यह करने के लिए उपयोग करने के लिए अपेक्षित नहीं होना चाहिए कि वह क्या करता है। यहां तक कि कंप्यूटर प्रोग्रामिंग में, आपके प्रोग्राम को चलाने वाले सीपीयू के भीतर बिजली के रास्तों का विवरण I / O निर्देश, ड्राइवरों, OS सॉफ्टवेयर और रनटाइम की कम से कम आधा दर्जन परतों के पीछे सारगर्भित है। कई बहुत सफल सॉफ्टवेयर इंजीनियर सटीक हार्डवेयर आर्किटेक्चर, या ओएस बिल्ड के बारे में चिंता किए बिना एक बार पूरी तरह से अच्छा कोड लिखते हैं, जो इसे चलाएगा। मुझे शामिल करते हुए।
एन्कैप्सुलेशन / सूचना छिपाना "परवाह नहीं करता है कि यह कैसे करता है, बस परवाह है कि यह" मानसिकता करता है। आपकी वस्तु को उजागर करना चाहिए कि उपभोक्ता के लिए क्या उपयोगी है, इस तरह से कि उपभोक्ता आसानी से उपभोग कर सके। अब, वास्तविक दुनिया में, इसका मतलब यह नहीं है कि एक कार को उपयोगकर्ता को आंतरिक कामकाज के बारे में कोई जानकारी नहीं देनी चाहिए, या यह कि कार को केवल उपयोगकर्ता को प्रज्वलन, स्टीयरिंग व्हील, जैसे कार्यक्षमता का सबसे बुनियादी अनुमति देना चाहिए। और पैडल। सभी कारों में स्पीडोमीटर और फ्यूल गेज, टैकोमीटर, इडियट लाइट्स और अन्य फीडबैक हैं। वस्तुतः सभी कारों में विभिन्न स्वतंत्र उप प्रणालियों के लिए स्विच भी होते हैं, जैसे हेडलाइट्स, टर्न सिग्नल, रेडियो, सीट समायोजन, आदि। कुछ कारें सीमित-स्लिप केंद्र अंतर की संवेदनशीलता की तरह कुछ सुंदर गूढ़ उपयोगकर्ता इनपुट की अनुमति देती हैं। सभी मामलों में, यदि आप पर्याप्त जानते हैं, आप इसे खोल सकते हैं और इसे बदलने के लिए चीजों को बदल सकते हैं। लेकिन, ज्यादातर मामलों में, शायद, बस हो सकता है, उपयोगकर्ता को केबिन के अंदर से ईंधन पंपों को सीधे और स्वतंत्र रूप से नियंत्रित करने में सक्षम नहीं होना चाहिए? हो सकता है, बस हो सकता है, उपयोगकर्ता वास्तव में ब्रेक पैडल को प्रभावित किए बिना अपनी ब्रेक लाइट को सक्रिय करने में सक्षम न हो?
अमूर्तता की अनुमति देता है "यह वैसा ही नहीं है, लेकिन क्योंकि वे दोनों XI हैं उनका उपयोग कर सकते हैं जैसा कि मैं किसी भी X" मानसिकता। यदि आपकी वस्तु एक अमूर्तता प्राप्त या कार्यान्वित करती है, तो आपके उपभोक्ताओं को आपके कार्यान्वयन की अपेक्षा करनी चाहिए कि वे अमूर्त के अन्य ज्ञात कार्यान्वयन के समान या समान परिणाम उत्पन्न करें। एक टोयोटा कैमरी और एक फोर्ड फ्यूजन दोनों "कार" हैं। जैसे, उनके पास अपेक्षित कार्यक्षमता का एक सामान्य सेट है, जैसे कि स्टीयरिंग व्हील। इसे वामावर्त मोड़ो, कार बाईं ओर जाती है। इसे दक्षिणावर्त घुमाएं, कार सही जाती है। आप संयुक्त राज्य अमेरिका में किसी भी कार में बैठ सकते हैं और उम्मीद कर सकते हैं कि कार में स्टीयरिंग व्हील और कम से कम दो पैडल हों, सही में "कार जाती है" पेडल और केंद्र में "कार स्टॉप" पैडल हो ।
अमूर्तता का एक मूलमंत्र "कम से कम विस्मय का सिद्धांत" है। यदि आप टेस्ट ड्राइव के लिए एक नई कार के पहिए के पीछे आ गए, तो स्टीयरिंग व्हील को दक्षिणावर्त घुमाया और कार बाईं ओर मुड़ गई, आपको कम से कम कहने में बहुत आश्चर्य होगा। आप डीलर पर POS को गलत तरीके से चलाने का आरोप लगाएँगे, और उसके किसी भी कारण को सुनने की संभावना नहीं होगी कि नया व्यवहार आपके द्वारा उपयोग किए जा रहे कार्यों की तुलना में "बेहतर" क्यों है, या यह व्यवहार कितनी अच्छी तरह "दस्तावेज़ित" है या कैसे " पारदर्शी "नियंत्रण प्रणाली है। इस नई कार और अन्य सभी के बावजूद जो आपने अभी तक "कार" चलाए हैं, इस कार को चलाते समय आपको कुछ मूलभूत अवधारणाओं को बदलना होगा कि नई कार को सफलतापूर्वक चलाने के लिए कार को कैसे चलाना चाहिए। यह आमतौर पर एक बुरी बात है, और यह केवल तब होता है जब नए प्रतिमान का सहज लाभ होता है। शायद सीट बेल्ट के अलावा एक अच्छा उदाहरण है; 50 साल पहले आप बस में गए और चले गए, लेकिन अब आपको बकल करना है, सहज लाभ यह है कि अगर आप किसी दुर्घटना में मिलते हैं तो आप विंडशील्ड या यात्री सीट से नहीं गुजरते हैं। तब भी, ड्राइवरों ने विरोध किया; कई कार मालिकों ने सीट बेल्ट को कार से बाहर काट दिया जब तक कि कानूनों को उनके उपयोग को अनिवार्य नहीं किया गया।