কম্পিউটার টিউটোরিয়াল

C++-এ অ্যাক্সেস মডিফায়ার


অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এ ডেটা হাইডিং বাস্তবায়ন করার জন্য অ্যাক্সেস মডিফায়ার ব্যবহার করা হয়। C++-তে তিন ধরনের অ্যাক্সেস মডিফায়ার ব্যবহার করা হয়: public, private এবং protected। এগুলোর বিস্তারিত নিচে দেওয়া হলো:

পাবলিক অ্যাক্সেস মডিফায়ার

এক ক্লাসে যে ডেটা মেম্বার এবং মেম্বার ফাংশন পাবলিক ঘোষণা করা হয়ে থাকে সেগুলো সবার জন্য উপলব্ধ থাকে, অন্যান্য ক্লাস সহ। সেগুলো প্রোগ্রামের যেকোনো জায়গা থেকে ডট অপারেটর ব্যবহার করে ক্লাস অবজেক্টের মাধ্যমে অ্যাক্সেস করা যায়।

পাবলিক অ্যাক্সেস স্পেসিফায়ার প্রদর্শন করে এমন একটি প্রোগ্রাম নিচে দেওয়া হলো:

উদাহরণ

#include <iostream>
using namespace std;

class Add {
public:
    int a, b;
    void sum() {
        cout << "Sum of " << a << " and " << b << " is " << a + b;
    }
};

int main() {
    Add obj;
    obj.a = 2;
    obj.b = 5;
    obj.sum();
    return 0;
}

আউটপুট

Sum of 2 and 5 is 7

উপরোক্ত প্রোগ্রামে, Add ক্লাসে দুটি পাবলিক ডেটা মেম্বার a এবং b রয়েছে। sum() ফাংশনটি a এবং b-এর যোগফল প্রদর্শন করে। এটি নিচে দেখা যাচ্ছে:

class Add {
public:
    int a, b;
    void sum() {
        cout << "Sum of " << a << " and " << b << " is " << a + b;
    }
};

main() ফাংশনে, Add ক্লাসের অবজেক্ট তৈরি করা হয়েছে। তারপর main()-এ a এবং b ইনিশিয়ালাইজ করা হয়েছে। এটি সম্ভব হয়েছে কারণ এগুলো পাবলিক ডেটা টাইপ। অবশেষে sum() কল করা হয়েছে যা a এবং b-এর যোগফল প্রদর্শন করে। এটি নিচে দেখানো হলো:

Add obj;
obj.a = 2;
obj.b = 5;
obj.sum();

প্রাইভেট অ্যাক্সেস মডিফায়ার

যে ডেটা মেম্বার প্রাইভেট ঘোষণা করা হয়ে থাকে সেগুলো শুধু ক্লাসের ভেতরের ফাংশন থেকে অ্যাক্সেসযোগ্য, ক্লাসের বাইরের কোনো ফাংশন থেকে নয়। ফ্রেন্ড ফাংশনও একটি ক্লাসের প্রাইভেট ডেটা মেম্বার অ্যাক্সেস করতে পারে।

প্রাইভেট অ্যাক্সেস মডিফায়ার প্রদর্শন করে এমন একটি প্রোগ্রাম নিচে দেওয়া হলো:

উদাহরণ

#include <iostream>
using namespace std;

class Add {
private:
    int a, b;
public:
    void setdata(int x, int y) {
        a = x;
        b = y;
    }
    void sum() {
        cout << "Sum of " << a << " and " << b << " is " << a + b;
    }
};

int main() {
    Add obj;
    obj.setdata(9, 5);
    obj.sum();
    return 0;
}

আউটপুট

Sum of 9 and 5 is 14

উপরোক্ত প্রোগ্রামে, Add ক্লাসে দুটি প্রাইভেট ডেটা মেম্বার a এবং b রয়েছে। setdata() ফাংশনটি a এবং b-এর মান প্রদান করে কারণ এগুলো প্রাইভেট ভেরিয়েবল। sum() ফাংশনটি a এবং b-এর যোগফল প্রদর্শন করে। এটি নিচে দেখা যাচ্ছে:

class Add {
private:
    int a, b;
public:
    void setdata(int x, int y) {
        a = x;
        b = y;
    }
    void sum() {
        cout << "Sum of " << a << " and " << b << " is " << a + b;
    }
};

main() ফাংশনে, Add ক্লাসের অবজেক্ট তৈরি করা হয়েছে। তারপর setdata() ফাংশনটি কল করা হয়েছে a এবং b ইনিশিয়ালাইজ করতে কারণ এগুলো প্রাইভেট ভেরিয়েবল। অবশেষে sum() কল করা হয়েছে যা a এবং b-এর যোগফল প্রদর্শন করে। এটি নিচে দেখানো হলো:

Add obj;
obj.setdata(9, 5);
obj.sum();

প্রোটেক্টেড অ্যাক্সেস মডিফায়ার

যে ডেটা মেম্বার প্রোটেক্টেড ঘোষণা করা হয়ে থাকে সেগুলো প্রাইভেট ঘোষণা করা ডেটা মেম্বারের মতো। সেগুলো সরাসরি ক্লাসের বাইরে থেকে অ্যাক্সেস করা যায় না কিন্তু বেস ক্লাসের ডেরাইভড ক্লাস থেকে অ্যাক্সেস করা যায়।

C++-তে প্রোটেক্টেড অ্যাক্সেস মডিফায়ার প্রদর্শন করে এমন একটি প্রোগ্রাম নিচে দেওয়া হলো:

উদাহরণ

#include <iostream>
using namespace std;

class Parent {
protected:
    int a, b;
};

class Child : public Parent {
public:
    void getdata(int x, int y) {
        a = x;
        b = y;
    }
    void putdata() {
        cout << "a = " << a << endl;
        cout << "b = " << b << endl;
    }
};

int main() {
    Child obj;
    obj.getdata(9, 1);
    obj.putdata();
    return 0;
}

আউটপুট

a = 9
b = 1

উপরোক্ত প্রোগ্রামে, প্যারেন্ট ক্লাসে দুটি প্রোটেক্টেড ভেরিয়েবল a এবং b রয়েছে। এটি নিচে দেখানো হলো:

class Parent {
protected:
    int a, b;
};

Child ক্লাসে দুটি ফাংশন getdata() এবং putdata() রয়েছে যা a এবং b-এর মান নেয় এবং প্রদর্শন করে। এগুলো এই কাজটি করতে পারে কারণ a এবং b প্রোটেক্টেড ভেরিয়েবল এবং Child, Parent-এর একটি ডেরাইভড ক্লাস। এর কোড স্নিপেট নিচে দেওয়া হলো:

class Child : public Parent {
public:
    void getdata(int x, int y) {
        a = x;
        b = y;
    }
    void putdata() {
        cout << "a = " << a << endl;
        cout << "b = " << b << endl;
    }
};

main() ফাংশনে, Child ক্লাসের একটি অবজেক্ট obj তৈরি করা হয়েছে। তারপর getdata() এবং putdata() ফাংশনগুলো কল করা হয়েছে। এটি নিচে দেখানো হলো:

Child obj;
obj.getdata(9, 1);
obj.putdata();

  1. C++-এ গাণিতিক গড় (Arithmetic Mean)

  2. C++-এ অ্যালিকোট সম (Aliquot Sum)

  3. C++-এ অ্যাক্সেস মডিফায়ার

  4. C#-এ অ্যাক্সেস মডিফায়ার