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