পলিমোরফিজম এমন একটি প্রোগ্রামিং ধারণা যা একই কার্যাবলী বিভিন্ন ধরনের অবজেক্টে ভিন্ন ভিন্ন আচরণ দেখাতে সক্ষম করে। এটি মূলত ক্লাসের কার্যাবলী (Methods) একাধিক ধরণের ইনপুটে ভিন্নভাবে কার্যকর করে। চলুন একটি বাস্তব জীবনের উদাহরণ দিয়ে সহজভাবে বুঝি।

বাস্তব জীবনের উদাহরণ:

অনেকে বিভিন্ন ধরনের যানবাহন ব্যবহার করেন, যেমন: গাড়ি (Car), ট্রাক (Truck), এবং বাইক (Bike)। প্রত্যেকটি যানবাহনের নিজস্ব একটি নাম এবং চলার পথ ভিন্ন ধরনের হয়ে থাকে। যেমন,

গাড়ি সাধারণত ছোট পথ দিয়ে, শান্তভাবে চলে।

ট্রাক বড় রাস্তা দিয়ে ভারী লোড নিয়ে চলে।

বাইক ছোট কিন্তু দ্রুতগতির জন্য পরিচিত।

যদিও প্রতিটি যানবাহনের জন্য একই ধরনের চলাচলের কার্যাবলী রয়েছে (যেমন: move() মেথড), কিন্তু প্রত্যেকটি যানবাহন তার নিজস্ব বৈশিষ্ট্য অনুযায়ী আলাদাভাবে কাজ করে। ঠিক তেমনই পলিমোরফিজম প্রোগ্রামিংয়ে ব্যবহৃত হয়।

কোড ও ব্যাখ্যা:

 class Car:
    car_name = "Wheeljack"
    def move(self):
        print(self.car_name, "Car is Moving")

class Truck:
    truck_name = "Optimus Prime"
    def move(self):
        print(self.truck_name, "Truck is moving")

class Bike:
    bike_name = "Elita-One"
    def move(self):
        print(self.bike_name, "Bike is moving")

# List of vehicles
vehicles = [Car(), Truck(), Bike()]

for vehicle in vehicles:
    vehicle.move()

আউটপুট:

Wheeljack Car is Moving
Optimus Prime Truck is moving
Elita-One Bike is moving

ব্যাখ্যা:

  1. এই কোডে তিনটি ভিন্ন ক্লাস রয়েছে (Car, Truck, Bike) যার প্রত্যেকটির নিজস্ব নাম এবং move মেথড রয়েছে।
  2. vehicles নামে একটি তালিকা তৈরী করা হয়েছে, যেখানে Car, Truck এবং Bike অবজেক্ট রাখা হয়েছে।
  3. প্রতিটি যানবাহনের জন্য একই ধরনের কার্যাবলী (move()) কিন্তু ভিন্ন ভিন্ন নাম এবং আচরণ দেখাচ্ছে।

পলিমোরফিজমের ধরণ:

  1. Compile-time Polymorphism:

Compile-time Polymorphism তখন হয় যখন একই মেথডের বিভিন্ন ভার্সন ক্লাসে একাধিকবার ডিফাইন করা হয় এবং আর্গুমেন্ট ভিন্ন থাকে। এতে, মেথড ওভারলোডিং ব্যবহার করা হয়।

উদাহরণ (Compile-time Polymorphism):