মূল পার্থক্য – কনস্ট্রাক্টর বনাম ডেস্ট্রাক্টর
অধিকাংশ প্রোগ্রামিং ভাষা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) সমর্থন করে। এটি দৃষ্টান্ত যা বস্তু ব্যবহার করে একটি সফ্টওয়্যার বা একটি প্রোগ্রাম মডেল করতে সাহায্য করে। OOP উৎপাদনশীলতা এবং রক্ষণাবেক্ষণযোগ্যতা উন্নত করে। ওওপি-তে সবকিছুকে একটি বস্তু হিসাবে বিবেচনা করা হয়। অবজেক্টগুলি ক্লাস ব্যবহার করে তৈরি বা তাত্ক্ষণিক করা হয়। Constructor এবং Destructor হল অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-এর সাধারণ শব্দ। এই নিবন্ধটি একটি কনস্ট্রাক্টর এবং একটি ধ্বংসকারীর মধ্যে পার্থক্য নিয়ে আলোচনা করে। একটি কন্সট্রাক্টর এবং একটি ধ্বংসকারী একটি ক্লাসে বিশেষ সদস্য ফাংশন। একটি কনস্ট্রাক্টর এবং ডেস্ট্রক্টরের ক্লাসের মতো একই নাম, কিন্তু ডেস্ট্রক্টরের একটি টিল্ড (~) চিহ্ন রয়েছে।একটি কনস্ট্রাক্টর এবং ডেস্ট্রক্টরের মধ্যে মূল পার্থক্য হল যে একটি কনস্ট্রাক্টর একটি বস্তুর মেমরি বরাদ্দ করতে ব্যবহৃত হয় যখন একটি ধ্বংসকারী একটি বস্তুর মেমরি ডিলোকেট করতে ব্যবহৃত হয়।
কনস্ট্রাক্টর কি?
একটি কনস্ট্রাক্টর হল ক্লাসের একটি বিশেষ সদস্য ফাংশন যা একটি বস্তুতে মেমরি বরাদ্দ করে। এটি ডেটা সদস্যদের জন্য মান প্রদান করতে ব্যবহার করা যেতে পারে। অবজেক্ট তৈরি হলে কনস্ট্রাক্টরকে ডাকা হয়। এটির ক্লাস নামের একই নাম রয়েছে। একটি কনস্ট্রাক্টর কোনো মান ফেরত দেয় না। অতএব, এটি একটি রিটার্ন টাইপ ধারণ করে না. একজন কনস্ট্রাক্টরও পরামিতি গ্রহণ করতে পারে। প্যারামিটার সহ একটি কনস্ট্রাক্টর একটি প্যারামিটারাইজড কনস্ট্রাক্টর হিসাবে পরিচিত৷
একটি কনস্ট্রাক্টরের একটি উদাহরণ নিম্নরূপ।
পাবলিক ক্লাস আয়তক্ষেত্র{
ইন্ট দৈর্ঘ্য, প্রস্থ;
সর্বজনীন আয়তক্ষেত্র(int p, int q){
দৈর্ঘ্য=p;
প্রস্থ=q;
}
public int calculateArea(){
রিটার্ন (দৈর্ঘ্যপ্রস্থ);
}
}
উপরের কোডের টুকরো অনুসারে, কন্সট্রাক্টরের ক্লাসের নামের মতো একই নাম রয়েছে। কনস্ট্রাক্টর আয়তক্ষেত্র দুটি পরামিতি গ্রহণ করে। তারা হল p এবং q। পূর্ণসংখ্যা মান p দৈর্ঘ্য নির্ধারণ করা হয়. পূর্ণসংখ্যার মান q প্রস্থে বরাদ্দ করা হয়েছে। calculteArea-এ, আয়তক্ষেত্রের ক্ষেত্রফল বের করতে দৈর্ঘ্য ও প্রস্থের গুন গণনা করা হয়। মূল প্রোগ্রামে, প্রোগ্রামার আয়তক্ষেত্রের একটি অবজেক্ট তৈরি করতে পারে এবং আর্গুমেন্ট পাস করতে পারে। যেমন আয়তক্ষেত্র আয়ত 1=নতুন আয়তক্ষেত্র(2, 3)। তারপর, প্যারামিটারাইজড কনস্ট্রাক্টরকে ডাকা হয় এবং দৈর্ঘ্য এবং প্রস্থের মান নির্ধারণ করে।
চিত্র 01: কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর
যখন কোনো প্যারামিটার ছাড়াই কনস্ট্রাক্টর থাকে, তখন তাকে বলা হয় ডিফল্ট কনস্ট্রাক্টর।যদি প্রোগ্রামার একটি কনস্ট্রাক্টরকে সংজ্ঞায়িত না করে তবে ডিফল্ট কনস্ট্রাক্টরকে ডাকা হবে। যদি স্টুডেন্ট হিসাবে একটি ক্লাস থাকে এবং প্রোগ্রামার যখন স্টুডেন্ট টাইপের একটি অবজেক্ট তৈরি করে, তখন ডিফল্ট কনস্ট্রাক্টর বলা হয়। যেমন ছাত্র s1=নতুন ছাত্র(); একটি ক্লাসে বিভিন্ন প্যারামিটার এবং বিভিন্ন ডেটা টাইপ সহ একাধিক কনস্ট্রাক্টর থাকতে পারে। সেই অনুযায়ী উপযুক্ত কনস্ট্রাক্টরকে বলা যেতে পারে। তাই, কনস্ট্রাক্টর ওভারলোড হতে পারে।
একটি ধ্বংসকারী কি?
একটি ধ্বংসকারী ক্লাসের একটি বিশেষ সদস্য ফাংশন। এটি কনস্ট্রাক্টর দ্বারা তৈরি একটি বস্তুর জন্য মেমরি ডি-অ্যালোকেট করতে ব্যবহৃত হয়। বস্তুটি ধ্বংস হয়ে গেলে ধ্বংসকারীকে ডাকা হয়। এটি পরিষ্কার স্টোরেজ বহন করে যা আর প্রয়োজন হয় না। কনস্ট্রাক্টরের মতো, ডেস্ট্রক্টরেরও ক্লাসের মতো একই নাম রয়েছে। এটিতে একটি টিল্ড (~) চিহ্নও রয়েছে৷
একটি ধ্বংসকারী কোনো মান ফেরত দেয় না। একটি কনস্ট্রাক্টরের বিপরীতে, ধ্বংসকারী কোন পরামিতি গ্রহণ করে না। সুতরাং, ধ্বংসকারী ওভারলোডিং সমর্থন করে না।একটি ধ্বংসকারী ঘোষণা করা একটি ভাল প্রোগ্রামিং অনুশীলন হিসাবে বিবেচিত হয় কারণ এটি মেমরি স্পেস ছেড়ে দেয় এবং সেই স্থানটি অন্য কিছু বস্তু সংরক্ষণের জন্য ব্যবহার করা যেতে পারে। ধ্বংসকারীর সিনট্যাক্স ~className() { } এর মতো। যেমন ~আয়তক্ষেত্র() { }; একটি ক্লাসে শুধুমাত্র একজন ডেস্ট্রাক্টর থাকতে পারে।
কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরের মধ্যে মিল কী?
- কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর উভয়ই বস্তুর সাথে যুক্ত।
- কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর উভয়ই কোনো মান ফেরত দেয় না।
- নির্মাণকারী এবং ধ্বংসকারী উভয়কেই স্বয়ংক্রিয়ভাবে বলা হয়।
কন্সট্রাক্টর এবং ডেস্ট্রাক্টরের মধ্যে পার্থক্য কী?
কনস্ট্রাক্টর বনাম ডেস্ট্রাক্টর |
|
একটি কনস্ট্রাক্টর হল ক্লাসের একটি বিশেষ সদস্য যা একটি বস্তুতে মেমরি বরাদ্দ করতে ব্যবহৃত হয়। | একটি ধ্বংসকারী ক্লাসের একটি বিশেষ সদস্য যা একটি বস্তুর মেমরি ডিলকেট করতে ব্যবহৃত হয়। |
আহ্বান করার পদ্ধতি | |
অবজেক্ট তৈরি করার সময় কনস্ট্রাক্টরকে ডাকা হয়। | অবজেক্টটি ধ্বংস বা মুছে ফেলা হলে একটি ধ্বংসকারী বলা হয়। |
ব্যবহার | |
অবজেক্টের জন্য মেমরি বরাদ্দ করতে কনস্ট্রাক্টর ব্যবহার করা হয়। | অবজেক্টের জন্য মেমরি ডিলোকেট করতে একটি ডেস্ট্রাক্টর ব্যবহার করা হয়। |
পরামিতি | |
একজন কনস্ট্রাক্টর পরামিতি গ্রহণ করে। | একটি ধ্বংসকারী পরামিতি গ্রহণ করে না। |
নির্মাতা এবং ধ্বংসকারীর সংখ্যা | |
একটি ভিন্ন সংখ্যক প্যারামিটার এবং বিভিন্ন ধরণের প্যারামিটার সহ একাধিক কনস্ট্রাক্টর থাকতে পারে। | ক্লাসে একক ধ্বংসকারী থাকতে পারে। |
সম্পাদনের গতি | |
একটি কন্সট্রাক্টরের ক্লাস নামের একই নাম রয়েছে। | একটি ধ্বংসকারীর টিল্ড (~) চিহ্ন সহ ক্লাস নামের একই নাম রয়েছে। |
ওভারলোডিং | |
একটি কনস্ট্রাক্টর ওভারলোড হতে পারে। | একটি ধ্বংসকারীকে ওভারলোড করা যাবে না। |
সারাংশ – কনস্ট্রাক্টর বনাম ডেস্ট্রাক্টর
OOP সফ্টওয়্যার বিকাশের একটি সাধারণ দৃষ্টান্ত। এটি একটি জটিল প্রকল্পকে সহজ করতে পারে। একটি কনস্ট্রাক্টর এবং একটি ধ্বংসকারী OOP তে ব্যবহার করা হয়। একটি কনস্ট্রাক্টর এবং ডেস্ট্রক্টরের ক্লাস হিসাবে একই নাম আছে, কিন্তু ডেস্ট্রক্টরের একটি ~ চিহ্ন রয়েছে।একটি কনস্ট্রাক্টর এবং ডেস্ট্রক্টরের মধ্যে পার্থক্য হল যে একটি কনস্ট্রাক্টর একটি বস্তুর মেমরি বরাদ্দ করতে ব্যবহৃত হয় যখন একটি ধ্বংসকারী একটি বস্তুর মেমরি ডিলোকেট করতে ব্যবহৃত হয়।
Constructor vs Destructor এর PDF ডাউনলোড করুন
আপনি এই নিবন্ধটির পিডিএফ সংস্করণ ডাউনলোড করতে পারেন এবং উদ্ধৃতি নোট অনুসারে অফলাইন উদ্দেশ্যে এটি ব্যবহার করতে পারেন। অনুগ্রহ করে এখানে PDF সংস্করণ ডাউনলোড করুন: কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরের মধ্যে পার্থক্য