অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর ক্ষেত্রে ক্লাস এবং অবজেক্ট দুইটি গুরুত্বপূর্ণ মৌলিক ধারণা। এখানে আমরা এগুলোর সম্পর্কে বিস্তারিত আলোচনা করব।
ক্লাস (Class)
ক্লাস হল একটি কাঠামো যা একটি নতুন ডেটা টাইপ তৈরির জন্য ব্যবহৃত হয়। এটি অবজেক্টের বৈশিষ্ট্য (এট্রিবিউট) এবং আচরণ (মেথড) সংজ্ঞায়িত করে। ক্লাসগুলির মাধ্যমে আমরা কিভাবে বিভিন্ন অবজেক্ট তৈরি করব এবং তাদের মধ্যে তথ্য আদান-প্রদান করব তা নিয়ন্ত্রণ করতে পারি।
ক্লাসের গঠন
একটি ক্লাস সাধারণত নিচের অংশগুলো অন্তর্ভুক্ত করে:
এট্রিবিউট (Attributes):
- ক্লাসের অবজেক্টের বৈশিষ্ট্য বা গুণাবলী। এগুলো প্রায়ই ডেটা ফিল্ড বা প্রপার্টি হিসাবেও পরিচিত।
- উদাহরণ: একটি
Carক্লাসেরcolor,model, এবংspeedএট্রিবিউট হতে পারে।
মেথড (Methods):
- ক্লাসের অবজেক্টের আচরণ বা কার্যকলাপ। মেথডগুলি ফাংশনের মতো কাজ করে যা ক্লাসের অভ্যন্তরে ডিফাইন করা হয়।
- উদাহরণ:
start(),stop(),accelerate()মেথডগুলি গাড়ির আচরণ নির্দেশ করে।
উদাহরণ
class Car:
def __init__(self, color, model):
self.color = color # এট্রিবিউট: রঙ
self.model = model # এট্রিবিউট: মডেল
self.speed = 0 # এট্রিবিউট: গতি
def start(self):
print(f"{self.model} is starting.")
def accelerate(self, increment):
self.speed += increment
print(f"{self.model} is now going at {self.speed} km/h.")
def stop(self):
self.speed = 0
print(f"{self.model} has stopped.")
অবজেক্ট (Object)
অবজেক্ট হল ক্লাসের একটি নির্দিষ্ট ইনস্ট্যান্স। যখন আমরা একটি ক্লাসের ভিত্তিতে একটি অবজেক্ট তৈরি করি, তখন আমরা সেই ক্লাসে সংজ্ঞায়িত বৈশিষ্ট্য ও আচরণগুলিকে ব্যবহার করতে পারি। প্রতিটি অবজেক্ট আলাদা ডেটা ধারণ করে এবং আলাদা আলাদা অবস্থায় থাকতে পারে।
অবজেক্ট তৈরির প্রক্রিয়া
- ইনস্ট্যান্সিয়েশন:
- ক্লাসের একটি নতুন অবজেক্ট তৈরি করা।
Carক্লাসের একটি অবজেক্ট তৈরি করার জন্য আমরা নিচের কোড ব্যবহার করব:
my_car = Car("Red", "Toyota")
- অবজেক্টের মাধ্যমে মেথড কল করা:
- অবজেক্টের মেথড কল করে আমরা তাদের আচরণ কার্যকর করতে পারি।
my_car.start() # Output: Toyota is starting.
my_car.accelerate(50) # Output: Toyota is now going at 50 km/h.
my_car.stop() # Output: Toyota has stopped.
ক্লাস এবং অবজেক্টের মধ্যে সম্পর্ক
- এতিহ্য (Inheritance):
- একটি ক্লাস অন্য ক্লাস থেকে বৈশিষ্ট্য ও আচরণ গ্রহণ করতে পারে। উদাহরণস্বরূপ, একটি
ElectricCarক্লাসCarক্লাস থেকে ইনহেরিট করে।
- একটি ক্লাস অন্য ক্লাস থেকে বৈশিষ্ট্য ও আচরণ গ্রহণ করতে পারে। উদাহরণস্বরূপ, একটি
class ElectricCar(Car):
def __init__(self, color, model, battery_size):
super().__init__(color, model) # সুপারক্লাসের ইনিশিয়ালাইজার কল করা
self.battery_size = battery_size
def charge(self):
print(f"{self.model} is charging.")
পলিমরফিজম (Polymorphism):
- একই মেথড নাম বিভিন্ন ক্লাসে বিভিন্নভাবে কাজ করতে পারে। উদাহরণস্বরূপ,
start()মেথডCarএবংElectricCarউভয়েই কাজ করে কিন্তু তাদের আচরণ ভিন্ন হতে পারে।
এনক্যাপসুলেশন (Encapsulation):
- ক্লাসের মধ্যে ডেটা এবং মেথডগুলিকে একত্রে প্যাকেজ করা হয় এবং বাহিরের অ্যাক্সেস সীমিত করা হয়। উদাহরণস্বরূপ, যদি একটি এট্রিবিউট প্রাইভেট হয় (যেমন:
self.__battery_level), তাহলে তা ক্লাসের বাইরে থেকে সরাসরি অ্যাক্সেস করা যাবে না।
উপসংহার
ক্লাস এবং অবজেক্ট OOP এর মূল ভিত্তি। ক্লাসের মাধ্যমে একটি টেম্পলেট তৈরি করা হয় এবং অবজেক্ট দ্বারা সেই টেম্পলেটের ভিত্তিতে নতুন ইউনিট তৈরি করা হয়। OOP ব্যবহারের মাধ্যমে প্রোগ্রামগুলি সংগঠিত, পুনর্ব্যবহারযোগ্য এবং সহজে পরিচালনাযোগ্য হয়। এর ফলে বড় সফটওয়্যার প্রকল্পগুলি আরও কার্যকরী এবং সুষ্ঠুভাবে পরিচালিত হয়।