ক্লাস (Class) এবং অবজেক্ট (Object) হলো C++ প্রোগ্রামিংয়ের অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) ধারণার দুটি প্রধান উপাদান।
ক্লাস কী?
ক্লাস হলো একটি টেমপ্লেট বা ব্লুপ্রিন্ট যা ডেটা এবং মেথড একত্রে সংরক্ষণ করে। এটি একটি ইউজার-ডিফাইন্ড ডেটা টাইপ, যা অবজেক্ট তৈরি করতে ব্যবহৃত হয়। ক্লাসের মধ্যে থাকা ডেটা ডেটা মেম্বার নামে পরিচিত এবং ফাংশনগুলো মেম্বার ফাংশন নামে পরিচিত। ক্লাসের মাধ্যমে একটি নতুন ডেটা টাইপ তৈরি করা হয়, যা বাস্তব জীবনের অবজেক্টকে প্রোগ্রামিংয়ে মডেল করতে সাহায্য করে।
অবজেক্ট কী?
অবজেক্ট হলো ক্লাসের একটি নির্দিষ্ট উদাহরণ (ইনস্ট্যান্স), যা ক্লাসে সংজ্ঞায়িত ডেটা এবং মেথড ব্যবহার করতে পারে। ক্লাসে সংজ্ঞায়িত গুণাবলি এবং আচরণের ভিত্তিতে অবজেক্ট তৈরি করা হয়। প্রতিটি অবজেক্টে ক্লাসের বৈশিষ্ট্যগুলো থাকে, কিন্তু তারা আলাদাভাবে সংরক্ষণ ও ব্যবহৃত হয়।
ক্লাস এবং অবজেক্টের উদাহরণ
ধরা যাক, আমরা একটি Car ক্লাস তৈরি করতে চাই, যা বিভিন্ন গাড়ির বৈশিষ্ট্য এবং ফাংশন সংরক্ষণ করবে।
ক্লাস ঘোষণা করা
#include <iostream>
using namespace std;
class Car {
public:
string brand; // ডেটা মেম্বার
int year; // ডেটা মেম্বার
// মেম্বার ফাংশন
void displayInfo() {
cout << "Brand: " << brand << ", Year: " << year << endl;
}
};
বর্ণনা:
- এখানে
Carনামে একটি ক্লাস তৈরি করা হয়েছে, যাbrandএবংyearনামে দুটি ডেটা মেম্বার ধারণ করে। displayInfo()নামে একটি মেম্বার ফাংশন রয়েছে, যা গাড়ির তথ্য প্রদর্শন করে।
অবজেক্ট তৈরি এবং ব্যবহার
int main() {
Car car1; // Car ক্লাসের একটি অবজেক্ট তৈরি
car1.brand = "Toyota"; // car1 অবজেক্টের ডেটা মেম্বার সেট
car1.year = 2020;
Car car2; // Car ক্লাসের আরেকটি অবজেক্ট তৈরি
car2.brand = "Honda";
car2.year = 2019;
// অবজেক্টের মেম্বার ফাংশন কল
car1.displayInfo();
car2.displayInfo();
return 0;
}
আউটপুট:
Brand: Toyota, Year: 2020
Brand: Honda, Year: 2019
বর্ণনা:
car1এবংcar2নামে দুটি অবজেক্ট তৈরি করা হয়েছে, যেগুলোCarক্লাসের ডেটা মেম্বারbrandএবংyearএর মান ধারণ করছে।- প্রতিটি অবজেক্টের
displayInfo()মেম্বার ফাংশন কল করা হয়েছে, যা তাদের গাড়ির ব্র্যান্ড এবং বছর প্রদর্শন করে।
অ্যাক্সেস স্পেসিফায়ার
ক্লাসে তিন ধরনের অ্যাক্সেস স্পেসিফায়ার ব্যবহার করা হয়: public, private, এবং protected। এগুলো নির্ধারণ করে ক্লাসের সদস্যদের অ্যাক্সেস লেভেল।
- public: ক্লাসের বাইরে থেকে অ্যাক্সেসযোগ্য।
- private: কেবলমাত্র ক্লাসের ভিতরে অ্যাক্সেসযোগ্য।
- protected: ক্লাস এবং তার ডেরাইভড ক্লাসের ভিতরে অ্যাক্সেসযোগ্য।
উদাহরণ: private অ্যাক্সেস স্পেসিফায়ার
class Car {
private:
string brand; // private ডেটা মেম্বার
int year;
public:
void setInfo(string b, int y) {
brand = b;
year = y;
}
void displayInfo() {
cout << "Brand: " << brand << ", Year: " << year << endl;
}
};
বর্ণনা:
- এখানে
brandএবংyearপ্রাইভেট ডেটা মেম্বার, যা ক্লাসের বাইরে সরাসরি অ্যাক্সেসযোগ্য নয়। setInfo()ফাংশন ব্যবহার করেbrandএবংyearসেট করা হয়েছে, এবংdisplayInfo()ফাংশন ব্যবহার করে তথ্য প্রদর্শন করা হয়েছে।
কন্সট্রাক্টর এবং ডেস্ট্রাক্টর
কন্সট্রাক্টর
কন্সট্রাক্টর হলো একটি বিশেষ ফাংশন, যা অবজেক্ট তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি সাধারণত ক্লাসের ডেটা মেম্বার ইনিশিয়ালাইজ করতে ব্যবহৃত হয়। কন্সট্রাক্টরের নাম অবশ্যই ক্লাসের নামের মতো হতে হবে এবং এর কোনো রিটার্ন টাইপ থাকে না।
class Car {
public:
string brand;
int year;
Car(string b, int y) { // কন্সট্রাক্টর
brand = b;
year = y;
}
void displayInfo() {
cout << "Brand: " << brand << ", Year: " << year << endl;
}
};
ডেস্ট্রাক্টর
ডেস্ট্রাক্টর একটি বিশেষ ফাংশন, যা অবজেক্ট ধ্বংস হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়। এর নামও ক্লাসের নামের মতো হয়, তবে এর আগে ~ (টিল্ডা) চিহ্ন থাকে।
class Car {
public:
Car() {
cout << "Constructor called!" << endl;
}
~Car() {
cout << "Destructor called!" << endl;
}
};
ক্লাস এবং অবজেক্টের সুবিধা
১. কোড পুনঃব্যবহারযোগ্যতা: ক্লাস একবার তৈরি করলে একাধিক অবজেক্ট তৈরি করে সেটি পুনরায় ব্যবহার করা যায়। ২. ডেটা হাইডিং: প্রাইভেট মেম্বার ব্যবহার করে ডেটা গোপন রাখা যায়, যা ডেটা সুরক্ষিত রাখে। ৩. কোডের পঠনযোগ্যতা বৃদ্ধি: ক্লাসের সাহায্যে কোডকে সহজে পড়া যায় এবং সংগঠিত রাখা যায়। ৪. মডুলার প্রোগ্রামিং: বড় প্রোগ্রামকে ছোট ছোট অংশে ভাগ করা যায়, যা ডিবাগিং এবং মেইনটেনেন্সে সহায়ক।
সারসংক্ষেপ
- ক্লাস হলো একটি টেমপ্লেট বা ব্লুপ্রিন্ট, যা ডেটা মেম্বার এবং মেম্বার ফাংশন ধারণ করে।
- অবজেক্ট হলো ক্লাসের একটি নির্দিষ্ট উদাহরণ, যা ক্লাসের ডেটা এবং মেথড ব্যবহার করতে পারে।
- ক্লাস এবং অবজেক্ট প্রোগ্রামিংয়ে ডেটা ও ফাংশনগুলিকে মডুলার এবং সংগঠিতভাবে সংরক্ষণ ও ব্যবহার করতে সহায়ক।
ক্লাস এবং অবজেক্ট OOP ধারণায় প্রোগ্রামকে আরও কার্যকর এবং পুনঃব্যবহারযোগ্য করে তোলে, যা সফটওয়্যার ডেভেলপমেন্টে অত্যন্ত গুরুত্বপূর্ণ।
Read more