এবস্ট্রাকশনঃ
এবস্ট্রাকশন মানে হচ্ছে বিমূর্তন বা পরম কোন কিছুকে বোঝায়।
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ে এবস্ট্রাক্ট ক্লাস ব্যবহার করে আমরা অনেকগুলি ক্লাসের কোন সাধারণ বৈশিষ্ট্যকে ধারণ করতে পারি। ঐ ক্লাসে কমন মেথড লিখে অন্যান্য ক্লাসে ব্যবহার করা যাবে।
ধরা যাক, আমরা বিভিন্ন প্রাণীর বৈশিষ্ট্য নিয়ে কাজ করব। বেশিরভাগ প্রাণী মুখ দিয়ে শব্দ করে, হাঁটতে পারে এটা তাঁদের সাধারণ বৈশিষ্ট্য। কিন্তু সবাই একভাবে হাঁটেনা, শব্দ করেনা। সেগুলো আলাদা করে আমরা মেথড ইমপ্লিমেন্ট বা ওভাররাইড করে বৈশিষ্ট্য প্রদান করতে পারব।
এবস্ট্রাক্ট ক্লাস লিখে, অন্য ক্লাস দিয়ে inherit করে মেথড override করে। এবস্ট্রাক্ট ক্লাস এমন একটি ক্লাস যার করা যায় না, অর্থাৎ new কিওয়ার্ড দিয়ে নতুন অবজেক্ট খোলা যাবেনা, কিন্তু ইনহেরিট করা যাবে অর্থাৎ extends করা যাবে।
এবস্ট্রাক্ট ক্লাসে কোন মেথডের বডি থাকতে পারে, ভ্যারিয়েবলও রাখা যেতে পারে।
অথবা, ইন্টারফেস তৈরি করে, অন্য ক্লাসে ইমপ্লিমেন্ট করতে হবে। ঐ ক্লাসে অবশ্যই ইন্টারফেসের মেথডগুলির বডির কোড লিখতে হবে। ইন্টারফেসে শুধু মেথড ছাড়া কিছু রাখা যাবেনা, কোন মেথডের বডি থাকবেনা।
কোনটা ব্যবহার করা সুবিধার?
যদি বাড়তি কোন ভ্যারিয়েবল বা মেথড লিখার প্রয়োজন হয়, তবে abstract class ব্যবহার করতেই হবে।
output:
যদি এরকম কিছুর প্রয়োজন না হয় তবে interface মেইন্টেইন করা তুলনামূলক সহজ। তবে যার কাছে যেটা পছন্দ হয়, ব্যবহার করা যাবে।
এবস্ট্রাকশন ব্যবহার করে আমাদের সুবিধা কি হলো? আমরা এক ক্লাসে সমস্ত কমন বৈশিষ্ট্য লিখে সেগুলো ইমপ্লিমেন্টস করতে পারছি, ক্লাস লিখতে গিয়ে ক্লাসে কি করেছি তা দেখতে হচ্ছে না, অর্থাৎ প্রতিটি ক্লাসের ভিতরের ইনফরমেশন নিরাপদে থাকছে।
এবস্ট্রাকশন মানে হচ্ছে বিমূর্তন বা পরম কোন কিছুকে বোঝায়।
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ে এবস্ট্রাক্ট ক্লাস ব্যবহার করে আমরা অনেকগুলি ক্লাসের কোন সাধারণ বৈশিষ্ট্যকে ধারণ করতে পারি। ঐ ক্লাসে কমন মেথড লিখে অন্যান্য ক্লাসে ব্যবহার করা যাবে।
ধরা যাক, আমরা বিভিন্ন প্রাণীর বৈশিষ্ট্য নিয়ে কাজ করব। বেশিরভাগ প্রাণী মুখ দিয়ে শব্দ করে, হাঁটতে পারে এটা তাঁদের সাধারণ বৈশিষ্ট্য। কিন্তু সবাই একভাবে হাঁটেনা, শব্দ করেনা। সেগুলো আলাদা করে আমরা মেথড ইমপ্লিমেন্ট বা ওভাররাইড করে বৈশিষ্ট্য প্রদান করতে পারব।
এবস্ট্রাক্ট ক্লাস লিখে, অন্য ক্লাস দিয়ে inherit করে মেথড override করে। এবস্ট্রাক্ট ক্লাস এমন একটি ক্লাস যার করা যায় না, অর্থাৎ new কিওয়ার্ড দিয়ে নতুন অবজেক্ট খোলা যাবেনা, কিন্তু ইনহেরিট করা যাবে অর্থাৎ extends করা যাবে।
এবস্ট্রাক্ট ক্লাসে কোন মেথডের বডি থাকতে পারে, ভ্যারিয়েবলও রাখা যেতে পারে।
অথবা, ইন্টারফেস তৈরি করে, অন্য ক্লাসে ইমপ্লিমেন্ট করতে হবে। ঐ ক্লাসে অবশ্যই ইন্টারফেসের মেথডগুলির বডির কোড লিখতে হবে। ইন্টারফেসে শুধু মেথড ছাড়া কিছু রাখা যাবেনা, কোন মেথডের বডি থাকবেনা।
কোনটা ব্যবহার করা সুবিধার?
যদি বাড়তি কোন ভ্যারিয়েবল বা মেথড লিখার প্রয়োজন হয়, তবে abstract class ব্যবহার করতেই হবে।
output:
যদি এরকম কিছুর প্রয়োজন না হয় তবে interface মেইন্টেইন করা তুলনামূলক সহজ। তবে যার কাছে যেটা পছন্দ হয়, ব্যবহার করা যাবে।
এবস্ট্রাকশন ব্যবহার করে আমাদের সুবিধা কি হলো? আমরা এক ক্লাসে সমস্ত কমন বৈশিষ্ট্য লিখে সেগুলো ইমপ্লিমেন্টস করতে পারছি, ক্লাস লিখতে গিয়ে ক্লাসে কি করেছি তা দেখতে হচ্ছে না, অর্থাৎ প্রতিটি ক্লাসের ভিতরের ইনফরমেশন নিরাপদে থাকছে।




Comments
Post a Comment