কনস্ট্রাক্টর (Constructor) এবং ডেস্ট্রাক্টর (Destructor) হলো ক্লাসের দুটি বিশেষ মেথড, যা অবজেক্ট তৈরি এবং ধ্বংস করার সময় স্বয়ংক্রিয়ভাবে কাজ করে। কনস্ট্রাক্টর একটি নতুন অবজেক্ট তৈরি করার সময় শুরুতেই চালু হয়, আর ডেস্ট্রাক্টর অবজেক্ট ধ্বংস করার সময় চালু হয়। প্রায় সব OOP ভাষায় এই দুটি মেথড ব্যবহার করা হয়।
কনস্ট্রাক্টর (Constructor)
কনস্ট্রাক্টর হলো একটি বিশেষ মেথড, যা অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি সাধারণত অবজেক্টের প্রাথমিক মান নির্ধারণ বা প্রাথমিককরণ করতে ব্যবহৃত হয়। কনস্ট্রাক্টরের মাধ্যমে অবজেক্ট তৈরি হওয়ার সময় সেটিকে প্রয়োজনীয় ডেটা ও মান দিয়ে তৈরি করা হয়।
কনস্ট্রাক্টরের বৈশিষ্ট্য:
- অটোমেটিক কল হয়: অবজেক্ট তৈরি করার সময় কনস্ট্রাক্টর স্বয়ংক্রিয়ভাবে কল হয়।
- রিটার্ন টাইপ নেই: কনস্ট্রাক্টরের কোনো রিটার্ন টাইপ থাকে না।
- প্রাথমিককরণের কাজ করে: কনস্ট্রাক্টর অবজেক্টের প্রাথমিক মান সেট করে।
উদাহরণ (Python):
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
print(f"{self.brand} {self.model} car created.")
# অবজেক্ট তৈরি
my_car = Car("Toyota", "Corolla") # আউটপুট: Toyota Corolla car created.
উপরের উদাহরণে, __init__() হলো কনস্ট্রাক্টর, যা Car অবজেক্ট তৈরি হওয়ার সময় কল হয় এবং ব্র্যান্ড ও মডেল সেট করে।
ডেস্ট্রাক্টর (Destructor)
ডেস্ট্রাক্টর হলো একটি বিশেষ মেথড, যা কোনো অবজেক্ট ধ্বংস হওয়ার সময় কল হয়। এটি সাধারণত মেমরি রিলিজ বা ক্লিনআপ কাজ সম্পাদন করতে ব্যবহৃত হয়। Python-এর মতো ভাষায় গারবেজ কালেকশন স্বয়ংক্রিয়ভাবে কাজ করে, তাই সরাসরি ডেস্ট্রাক্টর কল করতে হয় না।
ডেস্ট্রাক্টরের বৈশিষ্ট্য:
- অবজেক্ট ধ্বংসের সময় কল হয়: অবজেক্ট ধ্বংস হওয়ার সময় এটি স্বয়ংক্রিয়ভাবে কল হয়।
- রিসোর্স মুক্ত করে: ডেস্ট্রাক্টর মেমরি রিলিজ ও রিসোর্স ক্লিনআপ করতে সহায়ক।
- রিটার্ন টাইপ নেই: ডেস্ট্রাক্টরেরও কোনো রিটার্ন টাইপ নেই।
উদাহরণ (Python):
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
print(f"{self.brand} {self.model} car created.")
def __del__(self):
print(f"{self.brand} {self.model} car destroyed.")
# অবজেক্ট তৈরি ও ধ্বংস
my_car = Car("Toyota", "Corolla") # আউটপুট: Toyota Corolla car created.
del my_car # আউটপুট: Toyota Corolla car destroyed.
উপরের উদাহরণে, __del__() হলো ডেস্ট্রাক্টর, যা my_car অবজেক্ট ধ্বংস হওয়ার সময় কল হয়।
কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরের মধ্যে পার্থক্য
| বৈশিষ্ট্য | কনস্ট্রাক্টর (Constructor) | ডেস্ট্রাক্টর (Destructor) |
|---|---|---|
| কাজ | অবজেক্ট তৈরি হওয়ার সময় প্রাথমিককরণে ব্যবহৃত হয় | অবজেক্ট ধ্বংস করার সময় ক্লিনআপে ব্যবহৃত হয় |
| কখন কল হয় | অবজেক্ট তৈরি হওয়ার সময় | অবজেক্ট ধ্বংস হওয়ার সময় |
| রিটার্ন টাইপ | কোনো রিটার্ন টাইপ নেই | কোনো রিটার্ন টাইপ নেই |
| Python মেথডের নাম | __init__() | __del__() |
কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরের প্রয়োজনীয়তা
- অবজেক্টের প্রাথমিককরণে সহায়ক (Initialization): কনস্ট্রাক্টরের মাধ্যমে অবজেক্ট তৈরি হওয়ার সময় প্রয়োজনীয় প্রপার্টি সেট করা যায়।
- মেমরি ব্যবস্থাপনা (Memory Management): ডেস্ট্রাক্টরের মাধ্যমে অবজেক্ট ধ্বংস হওয়ার সময় ব্যবহৃত মেমরি রিলিজ করা যায়।
- রিসোর্স ক্লিনআপ (Resource Cleanup): ডেস্ট্রাক্টর অবজেক্টের সাথে সংযুক্ত রিসোর্স যেমন ফাইল হ্যান্ডেল, নেটওয়ার্ক সংযোগ ইত্যাদি বন্ধ করতে সাহায্য করে।
- কোডের মডুলারিটি বৃদ্ধি: কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরের মাধ্যমে প্রোগ্রামে অবজেক্ট ম্যানেজমেন্ট সহজ হয় এবং কোডের গঠন মডুলার হয়।
উপসংহার
কনস্ট্রাক্টর অবজেক্ট তৈরি করার সময় প্রয়োজনীয় মান বা প্রপার্টি সেট করতে ব্যবহৃত হয়, যেখানে ডেস্ট্রাক্টর অবজেক্ট ধ্বংস করার সময় রিসোর্স মুক্ত করতে ব্যবহৃত হয়। এই দুটি মেথড প্রোগ্রামে স্বয়ংক্রিয়ভাবে অবজেক্টের জীবনচক্র নিয়ন্ত্রণ করে, যা প্রোগ্রামিংয়ে কার্যকারিতা ও মেমরি ব্যবস্থাপনা নিশ্চিত করে।
Read more