data abstraction c
सी + + में अमूर्त के बारे में जानने के लिए आपको जो कुछ भी चाहिए।
ट्यूटोरियल की इस सी ++ श्रृंखला में, हम सी ++ में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की सभी प्रमुख अवधारणाओं को जानेंगे, जिन्हें ओओपी के चार स्तंभों के रूप में जाना जाता है।
- मतिहीनता
- कैप्सूलीकरण
- विरासत
- बहुरूपता
इस ट्यूटोरियल में, हम C ++ में डेटा एब्सट्रैक्शन के बारे में सभी का पता लगाएंगे।
=> निरपेक्ष सी ++ प्रशिक्षण श्रृंखला के लिए यहां क्लिक करें।
आप क्या सीखेंगे:
अमूर्तता क्या है?
एब्स्ट्रक्शन ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की एक तकनीक है, जिसके उपयोग से हम उपयोगकर्ता से कार्यान्वयन का विवरण छिपाते हैं और केवल एक इंटरफ़ेस को उजागर करते हैं जिसकी आवश्यकता होती है।
हम एक एयर कंडीशनर (एसी) का वास्तविक जीवन उदाहरण ले सकते हैं। स्टार्ट, स्टॉप, तापमान को बढ़ाना / घटाना, आर्द्रता को नियंत्रित करना, आदि जैसे विभिन्न एसी कार्यों को नियंत्रित करने के लिए हमारे पास एक रिमोट कंट्रोल है। हम इन कार्यों को सिर्फ एक बटन की घड़ी के साथ नियंत्रित कर सकते हैं लेकिन आंतरिक रूप से एक जटिल तर्क है कि इन कार्यों को करने के लिए कार्यान्वित किया गया।
हालांकि, एक अंतिम उपयोगकर्ता के रूप में, जो हमने उजागर किया वह केवल दूरस्थ इंटरफ़ेस है न कि इन सभी कार्यों का कार्यान्वयन विवरण।
एब्स्ट्रेक्शन ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के चार स्तंभों में से एक है और लगभग सभी ओओपी समाधान अमूर्त सिद्धांतों पर आधारित हैं यानी प्रोग्राम में इंटरफ़ेस और कार्यान्वयन विवरण को अलग करना।
उपरोक्त आरेख में, हमने एक वस्तु और इसकी सामग्री को एक चित्रात्मक प्रतिनिधित्व के रूप में दिखाया है। हम देख सकते हैं कि इस वस्तु की अंतरतम परत इसकी मुख्य कार्यक्षमता है जिसके बाद कार्यान्वयन विवरण है।
OOP में, ये दो परतें (हालांकि अधिकांश मामलों में यह सिर्फ एक परत है) बाहरी दुनिया के संपर्क में नहीं हैं। सबसे बाहरी परत, इंटरफ़ेस, वह परत है जो ऑब्जेक्ट की कार्यक्षमता तक पहुंचने के लिए अंतिम उपयोगकर्ता के लिए प्रदान की जाती है।
नतीजतन, वस्तु के अंतरतम परतों में किए गए कोई भी परिवर्तन अंत उपयोगकर्ता के लिए स्पष्ट नहीं होते हैं, जब तक कि उपयोगकर्ता इंटरफ़ेस के समान है।
सी ++ में अमूर्तता का कार्यान्वयन
सी ++ एक महान गहराई पर अमूर्तता का समर्थन करता है। C ++ में भी हमारे द्वारा उपयोग किए जाने वाले पुस्तकालय कार्यों को अमूर्तता का उदाहरण माना जा सकता है।
हम सी ++ में अमूर्तता के कार्यान्वयन का प्रतिनिधित्व कर सकते हैं:
जैसा कि उपरोक्त आंकड़े में दिखाया गया है, हम C ++ में दो तरीकों से अमूर्तता को लागू कर सकते हैं:
# 1) क्लासेस और एक्सेस स्पेसीफायर का उपयोग करना
सार्वजनिक और निजी और संरक्षित एक्सेस एक्सेसर्स के साथ C ++ में लागू एक क्लास को अमूर्तन के कार्यान्वयन के रूप में माना जा सकता है।
जैसा कि हम पहले से ही जानते हैं, एक्सेस स्पेसर्स का उपयोग हमें क्लास के सदस्यों को दी गई एक्सेस को नियंत्रित करने की अनुमति देता है। हम कुछ सदस्यों को निजी बना सकते हैं ताकि वे कक्षा के बाहर दुर्गम हों। हमारे पास कुछ सदस्य संरक्षित किए जा सकते हैं ताकि वे केवल व्युत्पन्न वर्गों तक ही पहुंच सकें। अंत में, हम कुछ सदस्यों को सार्वजनिक कर सकते हैं ताकि ये सदस्य वर्ग के बाहर पहुंच सकें।
इस धारणा का उपयोग करते हुए, हम एब्सट्रैक्शन को इस तरह से लागू कर सकते हैं कि कार्यान्वयन विवरण बाहरी दुनिया से निजी पहुंच विनिर्देशक का उपयोग करके छिपाए जाते हैं, जबकि इंटरफ़ेस सार्वजनिक विनिर्देशक का उपयोग करके बाहरी दुनिया के लिए उजागर किया जा सकता है।
किस प्रकार के सॉफ्टवेयर प्रोग्राम एक्सेस, ओरेकल, db2, mysql और sql सर्वर हैं?
इसलिए, हम C ++ में अमूर्तता को लागू कर सकते हैं, डेटा और फ़ंक्शंस को बंडल करने के लिए एक वर्ग का उपयोग करके इन डेटा और फ़ंक्शंस तक पहुंच को नियंत्रित करने के लिए एक्सेस स्पेसियर्स का उपयोग कर सकते हैं।
इसे प्रदर्शित करने के लिए हम निम्नलिखित उदाहरण को लागू करते हैं।
#include #include using namespace std; class sample { int num1,num2; void readNum(){ cout<>num1; cout<>num2; } public: void displaySum() { readNum(); cout<<'
Sum of the two numbers = '< आउटपुट:
संख्या 1: 10 दर्ज करें
संख्या 2: 20 दर्ज करें
दो संख्याओं का योग = ३०
कितना टोस्ट पॉस लागत है
उपरोक्त कार्यक्रम में, हमारे पास एक नमूना वर्ग है जिसमें दो पूर्णांक चर, संख्या 1 और संख्या 2 हैं। यह भी दो कार्यों readNum और DisplaySum है। डेटा सदस्यों की संख्या 1 और संख्या 2, साथ ही फ़ंक्शन रीडनाम, कक्षा के लिए निजी हैं।
फ़ंक्शन डिस्प्लेसम क्लास के लिए सार्वजनिक है। मुख्य फ़ंक्शन में, हम क्लास सैंपल और कॉल डिस्प्ले का ऑब्जेक्ट बनाते हैं जो दो संख्याओं को पढ़ता है और साथ ही उनकी राशि को प्रिंट करता है।
यह अमूर्त कार्यान्वयन है। हम अन्य डेटा सदस्यों और कार्यों को लपेटकर रखते हुए केवल एक फ़ंक्शन को जनता के सामने उजागर करते हैं। हालांकि यह अमूर्तता प्रदर्शित करने के लिए एक उदाहरण है, वास्तविक जीवन की समस्याओं को लागू करते समय, हम C ++ में कई स्तर के अमूर्त हो सकते हैं।
# 2) हैडर फ़ाइल कार्यान्वयन का उपयोग करना
हम C ++ प्रोग्राम में हेडर फाइल का उपयोग आयात और पूर्वनिर्धारित कार्यों का उपयोग करने के लिए करते हैं। इसके लिए, हम अपने प्रोग्राम में हेडर फ़ाइलों को शामिल करने के लिए #include निर्देश का उपयोग करते हैं।
उदाहरण के लिए, उपरोक्त कार्यक्रम में, हमने फ़ंक्शन फ़ंक्शन का उपयोग किया है। जहां तक इन कार्यों का सवाल है, हम केवल यह जानते हैं कि उनका उपयोग कैसे किया जाए और वे कौन से पैरामीटर हैं।
हमें नहीं पता कि इन फ़ंक्शन को कॉल करने पर पृष्ठभूमि में क्या होता है या उन्हें iostream हेडर फ़ाइल में कैसे लागू किया जाता है। यह C ++ द्वारा प्रदान की गई अमूर्तता का एक और तरीका है।
हम उन सभी कार्यों के कार्यान्वयन का विवरण नहीं जानते हैं जो हम हेडर फ़ाइलों से आयात करते हैं।
एब्सट्रैक्शन को प्रदर्शित करने के लिए यहां एक और उदाहरण दिया गया है।
#include #include using namespace std; class employee{ int empId; string name; double salary,basic,allowances; double calculateSalary(int empId){ salary = basic+allowances; return salary; } public: employee(int empId, string name,double basic,double allowances): empId(empId),name(name),basic(basic),allowances(allowances){ calculateSalary(empId); } void display(){ cout<<'EmpId = '< आउटपुट:
EmpId = 1 नाम = वेद
कर्मचारी वेतन = 18245.4

इस उदाहरण में, हमने एक वर्ग कर्मचारी को परिभाषित किया है जिसमें निजी विवरण जैसे नाम, नाम, वेतन विवरण जैसे मूल और भत्ते हैं। हम एक निजी फ़ंक्शन 'कैल्कुलसरी' को भी परिभाषित करते हैं जो मूल और भत्तों का उपयोग करके वेतन की गणना करता है।
हमारे पास एक विशेष कर्मचारी वस्तु के लिए सभी डेटा को इनिशियलाइज़ करने के लिए एक कंस्ट्रक्टर है। हम वर्तमान कर्मचारी के वेतन की गणना करने के लिए निर्माणकर्ता से फ़ंक्शन 'गणनात्मक' भी कहते हैं।
अगला, हमारे पास एक 'डिस्प्ले' फ़ंक्शन है जो एम्पिड, नाम और वेतन प्रदर्शित करता है। मुख्य फ़ंक्शन में, हम क्लास कर्मचारी की एक वस्तु बनाते हैं और प्रदर्शन फ़ंक्शन को कॉल करते हैं।
हम स्पष्ट रूप से अमूर्त के स्तर को देख सकते हैं जो हमने इस कार्यक्रम में प्रदान किया है। हमने सभी कर्मचारियों के विवरणों के साथ-साथ उपयोगकर्ता के निजीकरण की गणना को निजी बनाकर छिपा दिया है।
हमने उपयोगकर्ता को केवल एक फ़ंक्शन डिस्प्ले उजागर किया है जो उपयोगकर्ता को कर्मचारी वस्तु के बारे में सभी जानकारी देता है और साथ ही, यह निजी डेटा जैसे विवरण भी छिपाता है और हम कर्मचारी के वेतन की गणना कैसे करते हैं।
ऐसा करने से, भविष्य में, यदि हम अधिक विवरण जोड़ना चाहते हैं और वेतन की गणना के तरीके को बदलना चाहते हैं, तो हमें प्रदर्शन फ़ंक्शन को बदलना नहीं होगा। उपयोगकर्ता इन परिवर्तनों से अनजान होगा।
अमूर्त के फायदे
नीचे सूचीबद्ध कुछ अमूर्त फायदे हैं।
- प्रोग्रामर को निम्न-स्तरीय कोड लिखने की आवश्यकता नहीं है।
- अमूर्त आंतरिक कार्यान्वयन को दुर्भावनापूर्ण उपयोग और त्रुटियों से बचाता है।
- अमूर्तता कोड दोहराव को रोक सकती है और इस प्रकार प्रोग्रामर को एक ही कार्य को बार-बार करने की आवश्यकता होती है।
- एब्स्ट्रक्शन कोड के पुन: उपयोग को बढ़ावा देता है और वर्ग डेटा सदस्यों को ठीक से वर्गीकृत करता है।
- प्रोग्रामर अंत-उपयोगकर्ता के ज्ञान के बिना बाहरी कार्यान्वयन के संचालन को प्रभावित किए बिना वर्ग कार्यान्वयन के आंतरिक विवरण को बदल सकता है।
निष्कर्ष
अमूर्तता OOP में सबसे महत्वपूर्ण अवधारणाओं में से एक है और इसे C ++ में एक महान गहराई पर लागू किया गया है। अमूर्तता का उपयोग करते हुए, हम प्रोग्राम के कार्यान्वयन विवरण को लपेटकर रख सकते हैं और केवल उन विवरणों को उजागर कर सकते हैं जो हम बाहरी दुनिया के लिए चाहते हैं।
अमूर्त अवधारणा का उपयोग करके, हम सार डेटा प्रकार और कक्षाएं डिजाइन कर सकते हैं जो प्रोग्रामिंग समाधान के लिए एक कंकाल के रूप में कार्य करते हैं, जिसके ऊपर एक संपूर्ण समाधान बनाया जाता है। जैसे ही हम ओओपी विषयों के माध्यम से आगे बढ़ते हैं, हम इन प्रकारों और कक्षाओं के बारे में अधिक जानेंगे।
हमारे आगामी ट्यूटोरियल में, हम OOP के एक और स्तंभ के बारे में जानेंगे यानी एनकैप्सुलेशन। हम एक साथ अमूर्त और अतिक्रमण का वजन भी करेंगे।
=> संपूर्ण सी ++ प्रशिक्षण श्रृंखला यहां देखें।
अनुशंसित पाठ
- C ++ डेटा प्रकार
- सी ++ में एनकैप्सुलेशन
- टॉप 20 डेटा साइंस टूल्स 2021 में प्रोग्रामिंग को खत्म करना
- C ++ में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग
- C ++ में डेटा स्ट्रक्चर्स का परिचय
- मुफ़्त के लिए C ++ प्रोग्रामिंग सीखने के लिए 70+ BEST C ++ ट्यूटोरियल
- JMeter डेटा परिशोधन उपयोगकर्ता परिभाषित चर का उपयोग कर
- डेटा इकट्ठा करने की रणनीतियों के साथ 10+ सर्वश्रेष्ठ डेटा संग्रह उपकरण