Skip to main content

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-এ পলিমরফিজম


পলিমরফিজমঃ

পলিমরফিজম অর্থ বহুরূপতা। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ে, একই নামে বহু মেথড লেখা যায় অন্তত একটা পার্থক্য রেখে। অথবা প্যারেন্ট ক্লাসের কোন মেথডকে চাইল্ড ক্লাসে আবার লেখা যায়, একে বলে মেথড ওভাররাইড করা।

এখানে একই মেথড প্যারামিটার বদলে অনেকবার ব্যবহার করলাম, একে বলে মেথড ওভারলোডিং।

এখানে প্যারেন্ট ক্লাসের মেথডকে চাইল্ড ক্লাসে আবার লিখলাম। একে বলে মেথড ওভাররাইড করা।


পলিমরফিজমের সুবিধা অনেক। কোড রিইউজ করা যায়, একটা সুপার ক্লাস বানিয়ে সেখানে সব মেথড রেখে, সেটা দিয়েই অন্যান্য সাবক্লাসের কাজ করা যায়, কন্সট্রাক্টরে বিভিন্নভাবে এর কাজ করা যায়।
পলিমরফিজমের একটি অসুবিধা হচ্ছে, কোডের readable quality কমিয়ে দেয়।
একই নামের অসংখ্য মেথড থাকলে runtime এও প্রভাব ফেলে, ফলে প্রোগ্রাম স্লো হয়ে যাওয়ার সম্ভাবনা দেখা যায়।

Comments

Popular posts from this blog

গিট

গিট নামটা শুনলে লোকের মাথায় প্রথমে কি আসে? আমি যখন প্রথম গিটহ্যাবের নামটা শুনি, গিট শব্দটা শুনে ভেবেছি, এখানে কি কোনকিছু দড়ির গিট দিয়ে বেঁধে রাখার ব্যাপার আছে নাকি! পরে যখন বিষয়টি নিয়ে হালকাপাতলা জ্ঞান অর্জন করলাম, অবাক হয়ে লক্ষ্য করলাম, ব্যাপারটায় বেঁধে রাখার বিষয়ও আছে!   গিট সম্বন্ধে আমাদের বেশিরভাগের অন্তত এইটুকু ধারণা আছে যে, গিটে অনেকে একসাথে কাজ করতে পারেন।  এ আর এমন কি!  নিজেদের আইডিই থেকে কোড লিখে তা কোন লিংকে পেস্ট করে সহকর্মীকে সেন্ড দিলেই তো হয়ে যায়! গিট ব্যবহার করতে যাব কেন?  কিন্তু একটা বড় প্রজেক্টে অসংখ্য ডেভেলপার কাজ করতে পারেন, একটা ফাংশনে হয়তো দুইতিনজন কোড লিখছেন, সেক্ষেত্রে তাঁদের আলাদা আলাদা ইউনিক চিন্তাগুলি মিলে একটা ফাংশনে নিয়ে আসাটা জরুরী না? কিংবা উল্টো ঘটনাও ঘটতে পারে, দেখা গেল, তাঁদের কেউ একজন ভুলপথে এগুচ্ছেন, এই ভুল ধরতে সবার উপর সর্বক্ষণ মনিটরিংএর  উপর রাখতে হবে।  আবার কোন অংশে বাগ থাকলে হুট করে ধরাটাও মুশকিল, বাগ ফিক্সিংয়ে বেশি সময় লাগবে। আপডেট দেয়া আরো ঝামেলা, কোন কোড আপডেট দিয়ে গিয়ে উল্টো ক্রাশ পর্...

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং

বর্তমান সময়ে সফটওয়্যার তৈরিতে বহুল ব্যবহৃত এবং  বৈপ্লবিক একটি ধারণা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং। আধুনিক সফটওয়্যার ইঞ্জিনিয়ারিংয়ে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের ব্যবহার অনেক। সেজন্য অ্যাপ ডেভেলপিংয়ে নাম লেখাতে চাইলে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং জানতেই হবে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বুঝতে গেলে, জানতে হবে অবজেক্ট কি। অবজেক্ট আমাদের বাস্তবজীবনের যেকোন বস্তু, যার কিছু সাধারণ বৈশিষ্ট্য আছে। আপনার মোবাইল বা কম্পিউটারটা একটা অবজেক্ট যার কিছু বৈশিষ্ট্য আছে, বসে আছেন যে খাট বা চেয়ারে সেটি একটি অবজেক্ট যার কিছু বৈশিষ্ট্য আছে। আপনি নিজেও একজন অবজেক্ট, অন্য মানুষের সাথে আপনার কিছু সাধারণ বৈশিষ্ট্যে অবশ্য কিছু মিল আছে। সুতরাং, আমাদের চারপাশে থাকা সকল বস্তুই আসলে একেকটি অবজেক্ট। এখন কম্পিউটার বিজ্ঞানের ভাষায় অবজেক্টকে সংজ্ঞায়িত করতে গেলে বিভিন্ন শাখা থেকে বিভিন্নভাবে ব্যাখ্যা বের হয়ে আসবে। তবে সবগুলো থেকেই সাধারণ যে ধারণা আসে তা হলো, অবজেক্ট হচ্ছে এমন এক এন্টিটি যা রিয়েল লাইফ অবজেক্টের প্রতিনিধিত্ব করে,  যে এন্টিটি সেটের প্রতিটি এন্টিটির অবস্থা আলাদা...

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-এ এবস্ট্রাকশন

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