First page

বৃহস্পতিবার, ২৩ নভেম্বর, ২০১৭

ইনহেরিটেন্স -উত্তরাধিকার

Photo by Naassom Azevedo on Unsplash
আস সালামু আলাইকুম :)
ইনহেরিটেন্স পুরোটাই অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের কনসেপ্ট, এসেছে পিতা-পুত্র বা আত্মিয়তার সম্পর্ক থেকে। আজকে আমি আলোচনা করবো খুবই সহজ কিন্তু মজার এই টপিক নিয়ে গল্পে গল্পে। তো চলুন শুরু করি।
প্রি-রিক্যু — আপনার অবশ্যই অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সম্পর্কে সলিড ধারণা থাকতে হবে। প্রায় সকল ল্যাঙ্গুয়েজ এখন অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বা OOP সুবিধা দেয়। আপনি যদি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সম্পর্কে তেমন কিছুই না জেনে থাকেন তাহলে আমার এই লেখাটি পড়ার অনুরোধ রইলো। আপনি যদি আমার ঐ পোস্টটি পড়ে থাকেন তাহলে জেনে থাকবেন যে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ে অবজেক্ট মানে যেকোন বাস্তব বস্তুর প্রোগ্রামিং রূপ। যেহেতু বাস্তবে প্রাণীরা তাদের পিতা-মাতা থেকে বৈশিষ্ট্য ইনহেরিট করে বা উত্তরাধিকার সূত্রে পায় তাই অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়েও একই কনসেপ্ট প্রযোজ্য।
আমি এখানে ইনহেরিটেন্স এর কোড স্যাম্পল দেখানোর জন্য পাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করেছি। আপনি চাইলে আপনার পছন্দের OOP ল্যাঙ্গুয়েজে একই কনসেপ্ট ব্যবহার করতে পারেন।

গল্প

আব্দুর রহিম মিয়া ৩ সন্তান এর বাবা। বড় ছেলেটা এবার পাশ করে বের হয়েছে। মেঝো ছেলেটা পড়তেছে ইন্টারমিডিয়েট ২য় বর্ষে। আর ছোট মেয়েটা এবার ক্লাস টেন এ।
আব্দুর রহিম মিয়া মাঝে মাঝে খুব চিন্তিত হয়ে যান। পাড়ার লোকেরা বলে “আব্দুর রহিম ভাইয়ের বড় ছেলেটা হয়েছে একদম তার মতো। কথা বার্তা, চাল চলন সব কিছুই যেনো বাবার নকল। কিন্ত মেঝো ছেলেটা একটু ব্যতিক্রম।
তিনি নিজে হয়েছেন একদম তার পিতা আব্দুল গাফফার মিয়ার মতো কিছু ব্যতিক্রম ছাড়া, সবাই এ নিয়ে কত কি বলতো কারণ আব্দুল গাফফার মিয়া ছিলেন বেজায় বোকা সোকা মানুষ। কিন্ত আব্দুর রহিম মিয়া যথেষ্ট চালাক মানুষ।
আব্দুর রহিম মিয়ার মেঝো ছেলেটা হয়েছে আব্দুল গাফফার মিয়ার মতো বোকা সোকা, মানে দাদার মতো। এ নিয়েই তিনি চিন্তিত। কি যে করা যায় ছেলেটা কে নিয়ে………

গল্প এনালাইসিস

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

প্রোগ্রামিং রূপ

প্রথমেই শুরু করি কোড লিখে, কোড এর পাশে তীর চিহ্ন দিয়ে ও মার্কিং করে দেখিয়ে দিয়েছি কিভাবে কি হচ্ছেঃ
আমি এখানে প্রথমেই দাদা আব্দুল গাফফার মিয়াকে ডিফাইন করেছি, যার স্বভাব “fool”, চুলের রং “black” ও চোখ “blue”
এরপর আবদুর রহিম মিয়াকে ইনহেরিট করেছি আব্দুল গাফফার মিয়া থেকে। ইনহেরিট করার ফলে আব্দুল গাফফার মিয়ার সব কিছু পেয়েছেন আবদুর রহিম মিয়া, তাই AbdurRahimMiya.hair_color প্রিন্ট করার ফলে আমরা রেজাল্ট পেয়েছিঃ black, কিন্ত আমরা আবদুর রহিম মিয়ার কোন hair_color দেই নি। সে এটা পেয়েছে তার বাবা আব্দুল গাফফার মিয়ার থেকে। এটাই ইনহেরিটেন্স।
আবার আমরা আবদুর রহিম মিয়ার স্বভাবকে ওভাররাইড/রিপ্লেস করেছি clever দ্বারা, অর্থাৎ আবদুর রহিম মিয়া তার পিতার সব কিছু পেলেও বুদ্ধিমত্তায় হয়েছেন চালাক।
আবদুর রহিম মিয়ার থেকে তার ২ পুত্রের মাঝেও সবকিছু ইনহেরিট করেছে। কিন্ত বড় ছেলে যেহেতু সবকিছু তার বাবার মত পেয়েছি তাই আমরা বড়ছেলের ক্লাস ডেফিনেশনে কোনকিছু ডিফাইন করিনি। তবুও BoroSele.habit প্রিন্ট করে পেয়েছি clever, যা সে তার পিতা থেকে পেয়েছে।
অপরদিকে, মেঝো ছেলে তার বাবার থেকে সবকিছু পেলেও বুদ্ধিমত্তার স্বভাব পেয়েছেন তার দাদার থেকে, যার ফলে MejhoSele.habit পেয়েছি fool, আর সাথে নতুন আরেকটা স্বভাব পেয়েছেন ফল খাওয়া যেটা তার দাদা বা পিতা কারোই ছিলো না।
লেখাগুলি কোড এর সাথে মিলিয়ে দেখুন আশা করি বুঝতে পারবেন।
সুতরাং আমি গল্পে গল্পে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের খুব গুরুত্বপূর্ন কনসেপ্ট ইনহেরিটেন্স বুঝালাম। ইনহেরিটেন্স আপনি সর্বত্র পাবেন। এমন ফীচারের জন্য অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এত জনপ্রিয় আর মজার।