ফাংশনাল প্রোগ্রামিংয়ের মতো বিভিন্ন প্রোগ্রামিং প্যারাডিজম সম্পর্কে আমি যত বেশি শিখি, ততই আমি উত্তরাধিকার এবং পলিমারফিজমের মতো ওওপি ধারণাগুলির বুদ্ধি নিয়ে প্রশ্ন করা শুরু করি। আমি স্কুলে উত্তরাধিকার এবং পলিমারফিজম সম্পর্কে প্রথম জানতে পেরেছিলাম এবং সেই সময়ে পলিমারফিজমটি জেনেরিক কোডটি লেখার এক দুর্দান্ত উপায় বলে মনে হয়েছিল যা সহজ এক্সটেনসিবিলিটির অনুমতি দেয়।
তবে হাঁসের টাইপিংয়ের (উভয় গতিশীল এবং স্থির) এবং উচ্চতর অর্ডার ফাংশনগুলির মতো ক্রিয়ামূলক বৈশিষ্ট্যগুলির মুখের মধ্যে আমি উত্তরাধিকার এবং পলিমারফিজমের দিকে অবজেক্টের মধ্যে সম্পর্কের একটি ভঙ্গুর সেটকে ভিত্তি করে একটি অপ্রয়োজনীয় সীমাবদ্ধতা আরোপ করার মতো চেহারা শুরু করেছি। পলিমারফিজমের পিছনে সাধারণ ধারণাটি হ'ল আপনি একবার একটি ফাংশন লিখেছেন এবং পরে আপনি মূল ক্রিয়াকলাপটি পরিবর্তন না করেই আপনার প্রোগ্রামে নতুন কার্যকারিতা যুক্ত করতে পারেন - আপনাকে যা করতে হবে তা হল অন্য একটি উত্পন্ন শ্রেণি তৈরি করা যা প্রয়োজনীয় পদ্ধতিগুলি কার্যকর করে।
তবে হাঁসের টাইপিংয়ের মাধ্যমে এটি অর্জন করা অনেক সহজ, তা পাইথনের মতো গতিময় ভাষায় হোক বা সি ++ এর মতো স্থির ভাষা হোক।
উদাহরণস্বরূপ, নিম্নলিখিত পাইথন ফাংশনটি বিবেচনা করুন, এর স্থির সি ++ সমতুল্য:
def foo(obj):
obj.doSomething()
template <class Obj>
void foo(Obj& obj)
{
obj.doSomething();
}
ওওপি সমতুল্য নিম্নলিখিত জাভা কোডের মতো কিছু হবে:
public void foo(DoSomethingable obj)
{
obj.doSomething();
}
অবশ্যই প্রধান পার্থক্য হ'ল জাভা সংস্করণটির কাজ করার আগে একটি ইন্টারফেস বা উত্তরাধিকারের স্তরক্রম তৈরি করা দরকার। জাভা সংস্করণটি আরও কাজ জড়িত, এবং কম নমনীয়। অতিরিক্ত হিসাবে, আমি দেখতে পেলাম যে বেশিরভাগ আসল-ওয়ার্ল্ড ইনহের্যান্ট হায়ারার্কিগুলি কিছুটা অস্থির। আমরা সকলেই আকৃতি এবং প্রাণী সম্পর্কিত স্বতঃস্ফূর্ত উদাহরণ দেখেছি, কিন্তু বাস্তব বিশ্বে ব্যবসায়ের প্রয়োজনীয়তা পরিবর্তন হওয়ার সাথে সাথে নতুন বৈশিষ্ট্য যুক্ত হওয়ার সাথে সাথে "ইস-এ" সম্পর্ককে সত্যই প্রসারিত করার আগে কোনও কাজ করা কঠিন it's সাব-ক্লাস, অথবা অন্য প্রয়োজনীয়তা সামঞ্জস্য করার জন্য আরও বেস-ক্লাস বা ইন্টারফেস অন্তর্ভুক্ত করার জন্য আপনার শ্রেণিবিন্যাস পুনর্নির্মাণ / রিফ্যাক্টর। হাঁসের টাইপিংয়ের সাথে, আপনাকে মডেলিংয়ের বিষয়ে কোনও চিন্তা করার দরকার নেই - আপনার কেবলমাত্র আপনার প্রয়োজনীয় কার্যকারিতা সম্পর্কে চিন্তা করা উচিত।
তবুও, উত্তরাধিকার এবং পলিমারফিজম এতটাই জনপ্রিয় যে আমি সন্দেহ করি যে তাদেরকে এক্সটেনসিবিলিটি এবং কোডের পুনঃব্যবহারের জন্য প্রভাবশালী কৌশল বলাটা অত্যুক্তি হবে না। তাহলে উত্তরাধিকার এবং বহুমুখিতা কেন এত বন্যভাবে সফল? আমি কি কিছু গুরুতর সুবিধা উপেক্ষা করছি যে উত্তরাধিকার / পলিমারফিজমে হাঁসের টাইপিংয়ের বেশি রয়েছে?
obj
না থাকলে কী হতdoSomething
? একটি ব্যতিক্রম উত্থাপিত হয়? কিছুই হয় না?