Constructor এবং Destructor এর ব্যবহার
Constructor এবং Destructor হল ক্লাসের মধ্যে দুটি বিশেষ ধরনের ফাংশন, যা অবজেক্ট তৈরি এবং ধ্বংস করার সময় স্বয়ংক্রিয়ভাবে এক্সিকিউট হয়। এগুলি ক্লাসের জন্য অতি প্রয়োজনীয়, কারণ এগুলির মাধ্যমে অবজেক্টের ইনিশিয়ালাইজেশন এবং পরিষ্কারকরণ (cleaning up) প্রক্রিয়া করা হয়।
ডি প্রোগ্রামিং ভাষায়, constructor এবং destructor ফাংশনগুলির মাধ্যমে আপনি অবজেক্টের জীবনচক্র নিয়ন্ত্রণ করতে পারেন।
1. Constructor (কনস্ট্রাক্টর)
Constructor একটি বিশেষ ফাংশন যা একটি ক্লাসের অবজেক্ট তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি অবজেক্টের প্রাথমিক মান সেট করে এবং প্রাথমিক সেটআপ করার জন্য ব্যবহৃত হয়।
কনস্ট্রাক্টরের বৈশিষ্ট্য:
- কনস্ট্রাক্টরের নাম অবশ্যই ক্লাসের নামের সাথে মেলে।
- কনস্ট্রাক্টরটি রিটার্ন টাইপ ছাড়াই থাকে।
- কনস্ট্রাক্টরটি একাধিক হতে পারে (অ্যাডভান্সড কনস্ট্রাক্টর ওভারলোডিংয়ের মাধ্যমে)।
উদাহরণ:
import std.stdio;
class Person {
string name;
int age;
// Constructor
this(string name, int age) {
this.name = name;
this.age = age;
}
void display() {
writeln("Name: ", name);
writeln("Age: ", age);
}
}
void main() {
// Constructor দ্বারা অবজেক্ট তৈরি
Person p1 = new Person("John", 25);
p1.display(); // আউটপুট: Name: John, Age: 25
}এখানে, this কনস্ট্রাক্টরটি Person ক্লাসের অবজেক্ট তৈরি করার সময় কল হয় এবং name ও age সেট করে।
2. Destructor (ডেস্ট্রাক্টর)
Destructor হল একটি বিশেষ ফাংশন যা ক্লাসের অবজেক্ট ধ্বংস (destroy) হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি সাধারণত রিসোর্স মুক্ত (resource cleanup) করার জন্য ব্যবহৃত হয়, যেমন মেমরি বা ফাইল বন্ধ করা।
ডেস্ট্রাক্টরের বৈশিষ্ট্য:
- ডেস্ট্রাক্টরের নাম
~দিয়ে শুরু হয় এবং এটি ক্লাসের নামের সাথে মেলে। - ডেস্ট্রাক্টরটি রিটার্ন টাইপ ছাড়াই থাকে।
- এক্সিকিউশন শেষে, অবজেক্টের পরিষ্কারকরণ বা রিসোর্স ম্যানেজমেন্টের জন্য ডেস্ট্রাক্টর ব্যবহৃত হয়।
উদাহরণ:
import std.stdio;
class Person {
string name;
// Constructor
this(string name) {
this.name = name;
}
// Destructor
~this() {
writeln("Destructor called for ", name);
}
void display() {
writeln("Name: ", name);
}
}
void main() {
// Constructor দ্বারা অবজেক্ট তৈরি
Person p1 = new Person("John");
p1.display();
// পিএম ব্যবহার শেষে ডেস্ট্রাক্টর কল হবে
}এখানে, যখন p1 অবজেক্টটি main ফাংশন থেকে বের হবে (অথবা স্কোপের বাইরে চলে যাবে), তখন ~this() ডেস্ট্রাক্টরটি কল হবে এবং "Destructor called for John" আউটপুট হবে।
3. Constructor এবং Destructor এর ব্যবহার
- Constructor:
- অবজেক্ট ইনিশিয়ালাইজেশন: অবজেক্ট তৈরি হওয়ার সময় তা ইনিশিয়ালাইজ করা হয়।
- প্রাথমিক সেটআপ: অবজেক্টের প্রয়োজনীয় প্রাথমিক সেটআপ করার জন্য ব্যবহৃত হয়, যেমন ডিফল্ট মান সেট করা।
- Destructor:
- রিসোর্স ম্যানেজমেন্ট: অবজেক্ট ধ্বংস হওয়ার সময় এর রিসোর্সগুলো মুক্ত করতে ব্যবহৃত হয়। যেমন, ডায়নামিক মেমরি মুক্ত করা বা ফাইল/ডেটাবেস কনেকশন বন্ধ করা।
- পরিষ্কারকরণ: অবজেক্ট ধ্বংস হওয়ার আগে কোন সাফাই (clean up) বা ম্যানেজমেন্ট কার্যক্রম করতে ব্যবহৃত হয়।
4. Multiple Constructors and Destructor Overloading
ডি প্রোগ্রামিং ভাষায় একাধিক কনস্ট্রাক্টর ব্যবহার করা যেতে পারে (constructor overloading)। কিন্তু, ডেস্ট্রাক্টর সাধারণত একটিই থাকে।
Multiple Constructors:
import std.stdio;
class Person {
string name;
int age;
// Default constructor
this() {
this.name = "Unknown";
this.age = 0;
}
// Parameterized constructor
this(string name, int age) {
this.name = name;
this.age = age;
}
void display() {
writeln("Name: ", name);
writeln("Age: ", age);
}
}
void main() {
Person p1 = new Person(); // Default constructor
p1.display(); // আউটপুট: Name: Unknown, Age: 0
Person p2 = new Person("Alice", 30); // Parameterized constructor
p2.display(); // আউটপুট: Name: Alice, Age: 30
}এখানে, দুইটি কনস্ট্রাক্টর রয়েছে: একটি ডিফল্ট কনস্ট্রাক্টর এবং একটি প্যারামিটারাইজড কনস্ট্রাক্টর।
সারসংক্ষেপ
- Constructor: এটি একটি বিশেষ ফাংশন যা অবজেক্ট তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয় এবং অবজেক্টের প্রাথমিক মান ইনিশিয়ালাইজ করে।
- Destructor: এটি একটি বিশেষ ফাংশন যা অবজেক্ট ধ্বংস হওয়ার সময় কল হয় এবং রিসোর্স ক্লিনআপ বা পরিষ্কারকরণ করার জন্য ব্যবহৃত হয়।
এই দুটি ফাংশন অবজেক্টের জীবনচক্র নিয়ন্ত্রণ করতে সাহায্য করে এবং প্রোগ্রামের কার্যকারিতা ও স্থিতিশীলতা বৃদ্ধি করে।
Read more