C++ Abstraction

Introduction to C++ Abstraction

Data abstraction object oriented programming के सबसे महत्वपूर्ण features में से एक है। Data abstraction को data hiding भी कहा जाता है। Data abstraction का मतलब है की उस data को show करना जो user के लिए महत्वपूर्ण है और उस data को hide करना जो user के लिए महत्वपूर्ण नहीं है।

अगर दूसरे शब्दों में कहा जाए तो user को सिर्फ वह data show करना जिसके साथ वह interact करेगा और बाकी की details जो user के लिए किसी भी प्रकार उपयोगी नहीं या अप्रासंगिक है उसे hide करना ही data abstraction कहलाता है।

Data abstraction का एक उदाहरण आपका यह computer हो सकता है जिसके द्वारा आप इस aritcle को पढ़ रहे है। इस computer में आपको सिर्फ mouse के रूप में एक pointer और keyboard के रूप में कुछ keys provide की गयी है जिनके द्वारा आप इस computer से interact करते है।

Background में यह computer कैसे कार्य कर रहा है वह detail आपको show नहीं की गयी है। क्योंकि आपके लिए उस detail का कोई उपयोग नहीं है। इसी प्रकार data abstraction को implement करके आप अपने program के user को सिर्फ वही data या functionality show करते है जो उसके लिए उपयोगी है बाकी की details आप hide करते है।

Abstraction का उपयोग सिर्फ data को hide करने के लिए ही नहीं बल्कि data को protect करने के लिए भी किया जाता है। Data को hide करके आप एक तरह से उसे protect ही कर रहे होते है। क्योंकि hide किया जाने वाला data किसी द्वारा access नहीं किया जा सकता है।

निचे program में data abstraction implement करने की कुछ advantages दी जा रही है।

  • Data abstraction के माध्यम से आप program में implementation और interface को separate कर पाते है। User को interface provide किया जाता है जिससे वह interact करेगा और program का real implementation hide कर लिया जाता है।
  • Data abstraction की सबसे महत्वपूर्ण advantage यह है की यदि आपको implementation में किसी प्रकार का change करना हो तो ऐसा आप बिना user को disturb किये कर सकते है। इसके लिए आपको user के interface में बदलाव की आवश्यकता नहीं होती है।
  • Data abstraction से आपकी application secure हो जाती है।

C++ में data abstraction classes में implementation members को hide करके और interface members को show करके implement किया जाता है।

Implementation members ऐसे class members (variables और methods) होते है जो user से hide किये जाएंगे या फिर जिनका user के लिए कोई उपयोग नहीं है। Interface members (variables और methods) ऐसे members होते है जिन्हें user को show किया जाएगा या जो interface के रूप में user द्वारा उपयोग किये जाएंगे।

C++ में कौनसे members hide होंगे और कौनसे members show होंगे यह define करने के लिए access specifiers का प्रयोग किया जाता है जिनके बारे में आप अगले section में जानेंगे।

C++ Access Specifiers

C++ में members को hide और show करने के लिए 2 access specifiers का प्रयोग किया जाता है। इनके बारे में निचे बताया जा रहा है।

  • public - इस access specifier द्वारा आप उन members को define करते है जो किसी दूसरे code द्वारा (या class के बाहर) access किये जा सकते है। Public access specifier द्वारा आप program का interface define करते है। इस specifier द्वारा define किये गए सभी members दूसरे code को visible होते है।
  • private - इस access specifier द्वारा program में implementation define किया जाता है। Private access specifier द्वारा define किये गए members visible नहीं होते है। ऐसे members को दूसरे code द्वारा या class के बाहर access नहीं किया जा सकता है।

किसी भी C++ program में abstraction implement करने की best approach यह होती है की सब data members (variables) को private define किया जाये और methods को public define किया जाए जो data members से interact करने के लिए प्रयोग किये जाएंगे।

C++ access specifiers को classes में define करने का general syntax निचे दिया जा रहा है।

class-keyword class-name
{
     private:
                  //All private members here...

     public:
                 //All public members here...
};

जैसा की आप ऊपर दिए गए syntax में देख सकते है access specifiers के बाद colon लगाकर उन members को define किया जाता है जिन्हें आप private या public define करना चाहते है।

Example of C++ Abstraction

C++ में abstraction को implement करना निचे उदाहरण द्वारा समझाया जा रहा है।

#include<iostream>
using namespace std;

class myClass
{
  private:
                int Num = 5;    //Hiding Num

  public:
                void display()
                {
                    cout<<"Num is : "<<Num;
                }
};

int main()
{
    myClass obj;
    obj.display();  //display() is interface
    return 0;
}

ऊपर दिया गया उदाहरण निचे दिया गया output show करता है।

Num is : 5