কম্পিউটার

পলিমরফিজমের ধরন - অ্যাড-হক, অন্তর্ভুক্তি, প্যারামেট্রিক এবং জবরদস্তি


এখানে আমরা বিভিন্ন ধরনের পলিমরফিজম দেখতে পাব। প্রকারগুলি হল −

  • অ্যাড-হক
  • অন্তর্ভুক্তি
  • প্যারামেট্রিক
  • জবরদস্তি

অ্যাড-হক পলিমারফিজমকে ওভারলোডিং বলা হয়। এটি একই নামের ফাংশনকে বিভিন্ন ধরণের জন্য বিভিন্ন পদ্ধতিতে কাজ করার অনুমতি দেয়। ফাংশন এবং অপারেটর উভয়ই ওভারলোড হতে পারে। কিছু ভাষা অপারেটর ওভারলোডিং সমর্থন করে না, তবে ফাংশন ওভারলোডিং সাধারণ৷

উদাহরণ

#include<iostream>
using namespace std;
int add(int a, int b) {
   return a + b;
}
string add(string a, string b) {
   return a + b; //concatenate
}
int main() {
   cout << "Addition of numbers: " << add(2, 7) << endl;
   cout << "Addition of Strings: " << add("hello", "World") << endl;
}

আউটপুট

Addition of numbers: 9
Addition of Strings: helloWorld

অন্তর্ভুক্তি পলিমারফিজমকে সাবটাইপিং বলা হয়। এটি বেস ক্লাস পয়েন্টার এবং রেফারেন্স ব্যবহার করে উদ্ভূত ক্লাস নির্দেশ করতে দেয়। এটি রানটাইম পলিমরফিজম। এটি কার্যকর না হওয়া পর্যন্ত আমরা প্রকৃত বস্তুর ধরন জানি না। এই অন্তর্ভুক্তি পলিমরফিজম অর্জনের জন্য আমাদের C++ এ ভার্চুয়াল ফাংশন দরকার।

উদাহরণ

#include<iostream>
using namespace std;
class Base {
   public:
      virtual void print() {
         cout << "This is base class." << endl;
      }
};
class Derived : public Base {
   public:
      void print() {
         cout << "This is derived class." << endl;
      }
};
int main() {
   Base *ob1;
   Base base_obj;
   Derived derived_obj;
   ob1 = &base_obj; //object of base class
   ob1->print();
   ob1 = &derived_obj; //same pointer to point derived object
   ob1->print();
}

আউটপুট

This is base class.
This is derived class.

জবরদস্তি পলিমারফিজমকে ঢালাই বলা হয়। এই ধরনের পলিমরফিজম ঘটে যখন কোনো বস্তু বা আদিমকে অন্য কোনো প্রকারে নিক্ষেপ করা হয়। ঢালাই দুই ধরনের আছে. অন্তর্নিহিত কাস্টিং নিজেই কম্পাইলার ব্যবহার করে করা হয়, এবং স্পষ্ট কাস্ট করা হয় const_cast, dynamic_cast ইত্যাদি ব্যবহার করে।

উদাহরণ

#include<iostream>
using namespace std;
class Integer {
   int val;
   public:
      Integer(int x) : val(x) {
   }
   operator int() const {
      return val;
   }
};
void display(int x) {
   cout << "Value is: " << x << endl;
}
int main() {
   Integer x = 50;
   display(100);
   display(x);
}

আউটপুট

Value is: 100
Value is: 50

প্যারামেট্রিক পলিমারফিজমকে বলা হয় আর্লি বাইন্ডিং। এই ধরণের পলিমরফিজম বিভিন্ন ধরণের কোডের একই অংশ ব্যবহার করতে দেয়। আমরা টেমপ্লেট ব্যবহার করে এটি পেতে পারি।

উদাহরণ

#include<iostream>
using namespace std;
template <class T>
T maximum(T a, T b) {
   if(a > b) {
      return a;
   } else {
      return b;
   }
}
int main() {
   cout << "Max of (156, 78): " << maximum(156, 78) << endl;
   cout << "Max of (A, X): " << maximum('A', 'X') << endl;
}

আউটপুট

Max of (156, 78): 156
Max of (A, X): X

  1. DBMS-এ নির্ভরতার প্রকারভেদ

  2. সি প্রোগ্রামে বিভিন্ন ধরনের এক্সপ্রেশন ব্যাখ্যা কর

  3. সি ল্যাঙ্গুয়েজে প্রাথমিক ডাটা টাইপ কি কি?

  4. C/C++ এ আর্গুমেন্ট জবরদস্তি?