Encapsulation in C++

“हेलो दोस्तों! इस पोस्ट में हम ‘C++ प्रोग्रामिंग’ में उपयोग होने वाले Encapsulation, गुणों (properties) और कार्यों (methods) के बारे में सीखेंगे। साथ ही, Encapsulation C++ में Object-Oriented Programming (OOP) का एक महत्वपूर्ण सिद्धांत है। आइए इनको विस्तार से समझते हैं।

Encapsulation का परिचय

Encapsulation ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) का एक महत्वपूर्ण सिद्धांत है। इसका मतलब है डेटा और कार्यों (फंक्शंस) को एक ही क्लास में संकलित करना। इसे हिंदी में संकलन कहा जा सकता है। Encapsulation का मुख्य उद्देश्य डेटा को बाहरी हस्तक्षेप से सुरक्षित रखना और उसे नियंत्रित तरीके से एक्सेस करना है।

Encapsulation का उपयोग करके हम किसी ऑब्जेक्ट के डेटा मेंबर्स को सीधे एक्सेस करने से रोक सकते हैं और उन्हें केवल विशिष्ट मेथड्स के माध्यम से ही एक्सेस कर सकते हैं। इससे कोड सुरक्षित और अधिक मॉड्यूलर बनता है।


Encapsulation के मुख्य गुण (Features of Encapsulation)

Encapsulation के कई गुण होते हैं जो इसे महत्वपूर्ण बनाते हैं:

  1. डेटा सुरक्षा: Encapsulation का सबसे महत्वपूर्ण गुण यह है कि यह डेटा को बाहरी एक्सेस से सुरक्षित रखता है। इससे डेटा को सीधे बदला या देखा नहीं जा सकता।
  2. डेटा हाइडिंग: Encapsulation में डेटा मेंबर्स को private या protected बना दिया जाता है, ताकि वे केवल क्लास के अंदर ही एक्सेस किए जा सकें।
  3. कोड मॉड्यूलरिटी: Encapsulation से कोड अधिक मॉड्यूलर बनता है, जिससे अलग-अलग हिस्सों में कोड को समझना और प्रबंधित करना आसान हो जाता है।
  4. डेटा इंटीग्रिटी: Encapsulation से डेटा की शुद्धता बनी रहती है, क्योंकि डेटा में बदलाव केवल अधिकृत मेथड्स के माध्यम से ही किया जा सकता है।
  5. पुनः प्रयोग: Encapsulation का उपयोग करके हम किसी विशेष कार्य को बार-बार उपयोग करने के लिए कोड को फिर से प्रयोग में ला सकते हैं।

Types of Encapsulation (Encapsulation के प्रकार)

Encapsulation को मुख्यतः तीन प्रकार में बाँटा जा सकता है:

  1. Member Variable Encapsulation
  2. Function Encapsulation
  3. Class Encapsulation

1. Member Variable Encapsulation

इसमें केवल डेटा मेंबर्स (member variables) को encapsulate किया जाता है। डेटा मेंबर्स को private या protected के रूप में घोषित किया जाता है, ताकि वे केवल Class के भीतर ही Access किए जा सकें। उन्हें Access करने के लिए getter और setter Methods का उपयोग किया जाता है।

उदाहरण:

cpp (computersciencemcq.com)

#include <iostream>
using namespace std;

class Person {
private:
    int age; // encapsulated data member

public:
    // Setter method
    void setAge(int a) {
        if (a > 0) {
            age = a;
        } else {
            cout << "अवैध आयु।" << endl;
        }
    }

    // Getter method
    int getAge() {
        return age;
    }
};

int main() {
    Person p;
    p.setAge(25); // encapsulated data member को एक्सेस करने के लिए setter method का उपयोग
    cout << "व्यक्ति की आयु: " << p.getAge() << endl; // getter method का उपयोग
    return 0;
}

Output :- व्यक्ति की आयु: 25

इस उदाहरण में, age variable private है और इसे setAge() और getAge() methods के माध्यम से ही access किया जा सकता है।


2. Function Encapsulation

Function Encapsulation में कार्यों को encapsulate किया जाता है। इसके अंतर्गत कुछ मेथड्स को private या protected बनाया जाता है, ताकि वे केवल क्लास के अंदर ही उपयोग किए जा सकें। इससे हम फंक्शनलिटी को छुपा सकते हैं और केवल जरूरी मेथड्स को पब्लिक बना सकते हैं।

उदाहरण:

cpp (computer science mcq)

#include <iostream>
using namespace std;

class Calculator {
private:
    int add (int t1, int t2) 
   { 
        return t1 + t2;
    }

public:
    void displaySum(int a, int b) {
        cout << "योगफल: " << add(a, b) << endl;
    }
};

int main() {
    Calculator calc;
    calc.displaySum(5, 10); // पब्लिक मेथड के माध्यम से private मेथड का उपयोग
    return 0;
}

Output:- योगफल: 15

इस उदाहरण में, add() method private है, और इसे displaySum() public method के माध्यम से ही access किया जा सकता है।


3. Class Encapsulation

Class Encapsulation में पूरा क्लास encapsulate होता है। क्लास के सभी डेटा मेंबर्स और मेथड्स को encapsulate कर दिया जाता है, जिससे उपयोगकर्ता केवल पब्लिक इंटरफेस के माध्यम से ही क्लास का उपयोग कर सकता है।

उदाहरण:

#include <iostream>
using namespace std;

class BankAccount {
private:
    int balance;

public:
    BankAccount() {
        balance = 0;
    }

    void deposit(int Rs) {
        if (Rs > 0) {
            balance += Rs;
            cout << "Dep. " << Rs << endl;
        }
    }

    void withdraw(int rs) {
        if (rs > 0 && rs <= balance) {
            balance -= rs;
            cout << "Dr. Rs:- " << rs << endl;
        } else {
            cout << "low price" << endl;
        }
    }

    int getBalance() {
        return balance;
    }
};

int main() {
    BankAccount account;
    account.deposit(500);
    account.withdraw(200);
    cout << "बैलेंस: " << account.getBalance() << endl;
    return 0;
}

Output:-

जमा राशि: 500
निकासी राशि: 200
बैलेंस: 300

इस उदाहरण में, BankAccount class के सभी data member और methods encapsulate किए गए हैं। balance को केवल public methods के माध्यम से ही एक्सेस किया जा सकता है।


संक्षेप में

  • Encapsulation में डेटा और मेथड्स को एक साथ क्लास में संलग्न किया जाता है।
  • Features of Encapsulation में डेटा सुरक्षा, डेटा हाइडिंग, मॉड्यूलरिटी, और डेटा इंटीग्रिटी शामिल हैं।

Leave a comment