Skip to content

পলিমরফিজম

#পলিমরফিজম কি?

পলিমরফিজম একটি গ্রীক শব্দ। Poly মানে (many)অনেক morph মানে (forms) ধরন। সুতারং পলিমরফিজম মানে দ্বারায় অনেক ধরনের। এটা কোন প্রোগ্রামিং ল্যাংগুয়েজ এর কনসেপ্ট না । এটা হল অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর একটি প্রিন্সিপাল।অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এ চারটি মৌলিক প্রিন্সিপ্যাল রয়েছেঃএনক্যাপ্সুলেশন,অ্যাবস্ট্রাকশন,ইনহেরিটেন্স,পলিমরফিজম।পলিমরফিজম এর ধারণা টি কিছুটা ইনহেরিটেন্স এর ধারণার কাছাকাছি।
#রিয়াল লাইফ এ পলিমরফিজমআমাদের নিত্য দিনের জীবনে পলিমরফিজম এর ছড়াছড়ি। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং  কনসেপ্ট কে রিয়াল লাইফ অনুসারে তৈরি করা হয়েছে। যে কারনে এর বিভিন্ন কনসেপ্ট আমারা রিয়াল লাইফ থেকে পেয়ে থাকি। যেমনঃআমাদেরকে মানুষের সামনে বিভিন্ন পরিস্থিতিতে বিভিন্ন অবস্থায় থাকতে হয়। যখন আমারা ক্লাসের মধ্যে থাকি থখন আমাদের অবস্থা হয় একজন ছাত্র হিসেবে। যখন আমরা বাঁজারে থাকি তখন আমাদের অবস্থা হয় কাস্টোমার। যখন আমরা বাড়িতে তখন আমাদের অবস্থা হয় একজন পুত্র অথবা কন্যা হিসেবে।সুতারং একজন মানুষকে বিভিন্ন পরিস্থিতিতে ভিবিন্ন অবস্থায় পাওয়া যায়।Person- Student- Customer- Son/Daughter
তাহলে প্রশ্ন আসে পলিমরফিজম এর দরকার কেন?মনে করুন আপনি কোন স্কুল এর প্রধান শিক্ষক। আপনি টিচারদের নিয়ে একটি মিটিং করবেন। এখন টিচারদেরকে আপনি আলাদাভাবে যেমন ম্যাথের টিচার, বাংলা টিচার, ইংলিশ টিচার এভাবে না বলে বলতে পারেন সকল টিচার মিটিং এ উপস্থিত থাকবেন। এভাবে বললে আপনার কমপ্লেক্সিটি কমে যায়।জাভা প্রোগ্রামিং এর ক্ষেত্রে আমরা println() ফাংশন ব্যাবহার করি কোন কিছু কনসোল এ দেখানোর জন্য।একই ফাংশন স্ট্রিং, ইন্টেজার, ফ্লোট ভ্যালু দেখানোর জন্য ব্যাবহার করি। এটি আসলে পলিমরফিজম এর কনসেপ্ট।

#পিএইচপি তে পলিমরফিজম

পলিমরফিজম হল পিএইচপি এর অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং  একটি  ফিচার। মূলত দুই ধরনের পলিমরফিজম রয়েছেঃ

  1. Compile time (function overloading)
  2. Run time (function overriding)

পিএইচপি কম্পাইল টাইম পলিমরফিসম(function overloading) সাপোর্ট করে না।বিঃদ্রঃ পলিমরফিজম কে আমরা শুধুমাত্র ফাংশন অথবা মেথড এর মাধ্যমে ইমপ্লিমেন্ট করতে পারি।পিএইচপি তে পলিমরফিজম আমরা ইন্টারফেস অথবা অ্যাবস্ট্রাক্ট ক্লাসের মাধ্যমে ইমপ্লিমেন্ট করতে পারি।

ধরুন আপনি circle এবং rectangle ড্র করবেন। তাহলে সাধারণভাবে এদেরকে আমরা জেনেরালাইজ করে বলতে পারি circle এবং rectangle হল এক একটি shape।
এদের মধ্যকার সম্পর্ক হল- Circle is a shape. Rectangle is a shape.Shape-    Circle-    Rectangle

interface Shape {
    public function area();
}
class Circle implements Shape
{    
    
    private $radius;  
    const PI = 3.1416;   

    public function __construct($radius)  {    
        $this -> radius = $radius;  
    }   

    public function area()  {    
        return $this -> radius * $this -> radius *Circle::PI;  
    } 

}
class Rectangle implements Shape 
{
    private $width;
    private $height;  

    public function __construct($width, $height) {   
        $this -> width = $width;   $this -> height = $height;
    }  

    public function area() {
       return $this -> width * $this -> height;
    }
}

এখন আমরা কনক্রিট ক্লাস Rectangle এবং Circle এর মাধ্যমে অবজেক্ট তৈরি করতে পারি।

$circ = new Circle(3);
$rect = new Rectangle(3,4);

সকল অবজেক্ট এর area() মেথড রয়েছে কারন দুটি ক্লাসই Shape ইন্টারফেইসকে ইমপ্লিমেন্ট করেছে।তাই আমরা area() মেথড কল করে Rectangle এবং Circle এর area বা ক্ষেত্রফল বের করতে পারি।

echo $circ -> area();
echo $rect -> area();

Published inOOP

One Comment

  1. Hi, this is a comment.
    To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
    Commenter avatars come from Gravatar.

Leave a Reply

Your email address will not be published. Required fields are marked *

© Copyright hafij.me