কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর হল অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP)-এর গুরুত্বপূর্ণ ধারণা। এগুলি ক্লাসের ইনস্ট্যান্স তৈরি এবং ধ্বংস করার সময় স্বয়ংক্রিয়ভাবে কল হয়। এগুলির মাধ্যমে আপনি অবজেক্ট তৈরি এবং ধ্বংসের জন্য নির্দিষ্ট কাজ করতে পারেন।
১. কনস্ট্রাক্টর (Constructor)
কনস্ট্রাক্টর হল একটি বিশেষ ধরনের মেথড যা একটি ক্লাসের অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়। কনস্ট্রাক্টর মূলত ক্লাসের অবজেক্ট ইনিশিয়ালাইজ করার জন্য ব্যবহৃত হয়, যেমন কোনো ভেরিয়েবল বা প্রপার্টি সেট করা।
কনস্ট্রাক্টরের বৈশিষ্ট্য:
- কনস্ট্রাক্টরের নাম সাধারণত ক্লাসের নামের মতো হয়।
- কনস্ট্রাক্টর একটি রিটার্ন টাইপ (ফলস্ বা ভ্যালু) পায় না।
- কনস্ট্রাক্টরটি যখন অবজেক্ট তৈরি করা হয় তখন স্বয়ংক্রিয়ভাবে কল হয়।
উদাহরণ: কনস্ট্রাক্টরের ব্যবহার (Pascal)
program ConstructorExample;
type
TPerson = class
name: string;
age: Integer;
constructor Create(n: string; a: Integer); // কনস্ট্রাক্টর ডিফাইন করা
begin
name := n;
age := a;
end;
procedure Display;
begin
writeln('Name: ', name);
writeln('Age: ', age);
end;
end;
var
person: TPerson;
begin
person := TPerson.Create('Aziz', 25); // কনস্ট্রাক্টর কল হচ্ছে
person.Display;
person.Free; // অবজেক্ট ধ্বংস
end.আউটপুট:
Name: Aziz
Age: 25এখানে, Create কনস্ট্রাক্টরটি name এবং age ভেরিয়েবলগুলো ইনিশিয়ালাইজ করে, এবং Display পদ্ধতি অবজেক্টের তথ্য প্রদর্শন করে।
২. ডেস্ট্রাক্টর (Destructor)
ডেস্ট্রাক্টর হল একটি বিশেষ ধরনের মেথড যা একটি অবজেক্ট ধ্বংস করার সময় স্বয়ংক্রিয়ভাবে কল হয়। ডেস্ট্রাক্টরের কাজ হল অবজেক্টের কোনো রিসোর্স বা মেমরি মুক্ত করা, যা অবজেক্টটি ব্যবহার করার সময় বরাদ্দ হয়েছিল। এটি ক্লাসের ইনস্ট্যান্সে আর প্রয়োজনীয় না থাকলে এর মাধ্যমে রিসোর্স রিলিজ করা হয়।
ডেস্ট্রাক্টরের বৈশিষ্ট্য:
- ডেস্ট্রাক্টরের নাম সাধারণত
Destroyহয়। - এটি কোন রিটার্ন টাইপ পায় না।
- যখন অবজেক্টটি মুক্ত করা হয় তখন ডেস্ট্রাক্টর কল হয়, এবং এটি অবজেক্টের মেমরি বা অন্যান্য রিসোর্স মুক্ত করে।
উদাহরণ: ডেস্ট্রাক্টরের ব্যবহার (Pascal)
program DestructorExample;
type
TPerson = class
name: string;
age: Integer;
constructor Create(n: string; a: Integer);
begin
name := n;
age := a;
end;
procedure Display;
begin
writeln('Name: ', name);
writeln('Age: ', age);
end;
destructor Destroy; // ডেস্ট্রাক্টর ডিফাইন করা
begin
writeln('Destructor called for ', name);
inherited Destroy; // প্যারেন্ট ক্লাসের ডেস্ট্রাক্টর কল করা
end;
end;
var
person: TPerson;
begin
person := TPerson.Create('Aziz', 25);
person.Display;
person.Free; // ডেস্ট্রাক্টর কল হবে
end.আউটপুট:
Name: Aziz
Age: 25
Destructor called for Azizএখানে, Destroy ডেস্ট্রাক্টরটি অবজেক্ট person এর জন্য কল হচ্ছে যখন person.Free করা হয়, এবং মেমরি বা অন্যান্য রিসোর্স মুক্ত হচ্ছে।
কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরের পার্থক্য
| বৈশিষ্ট্য | কনস্ট্রাক্টর (Constructor) | ডেস্ট্রাক্টর (Destructor) |
|---|---|---|
| কোন সময় কল হয়? | অবজেক্ট তৈরি হওয়ার সময়। | অবজেক্ট ধ্বংস হওয়ার সময়। |
| নাম | ক্লাসের নামের মতো হয়। | সাধারণত Destroy হয়। |
| ফাংশনালিটি | অবজেক্ট ইনিশিয়ালাইজ করা। | অবজেক্টের মেমরি বা রিসোর্স মুক্ত করা। |
| রিটার্ন টাইপ | কোন রিটার্ন টাইপ থাকে না। | কোন রিটার্ন টাইপ থাকে না। |
সারাংশ
- কনস্ট্রাক্টর (Constructor) হল একটি বিশেষ মেথড যা অবজেক্ট তৈরি করার সময় ফাংশনের মতো কাজ করে এবং এটি অবজেক্টের প্রাথমিক মান ইনিশিয়ালাইজ করার জন্য ব্যবহৃত হয়।
- ডেস্ট্রাক্টর (Destructor) হল একটি বিশেষ মেথড যা অবজেক্ট ধ্বংস হওয়ার সময় কল হয় এবং এটি অবজেক্টের রিসোর্স বা মেমরি মুক্ত করতে ব্যবহৃত হয়।
প্রোগ্রামিংয়ের মধ্যে কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর দুটোই অত্যন্ত গুরুত্বপূর্ণ, কারণ এগুলি অবজেক্টের জীবনচক্রকে নিয়ন্ত্রণ করতে সাহায্য করে।
Read more