পলিমরফিজম এবং abstract ক্লাস সি শার্প (C#) এর অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর গুরুত্বপূর্ণ বৈশিষ্ট্য। পলিমরফিজমের মাধ্যমে একাধিক রূপে একই কার্যাবলী প্রকাশ করা সম্ভব হয়, এবং abstract ক্লাস এমন একটি ভিত্তি প্রদান করে যার ওপর ভিত্তি করে নির্দিষ্ট বাস্তবায়ন গঠন করা যায়।
পলিমরফিজম হলো এমন একটি বৈশিষ্ট্য যা একই মেথড বা অপারেশনের বিভিন্ন রূপ প্রকাশ করতে দেয়। এটি মূলত দুটি ধরনের হতে পারে:
মেথড ওভারলোডিং হলো একই নামের মেথড একাধিকবার সংজ্ঞায়িত করা, যেখানে প্রতিটি মেথডের প্যারামিটার ভিন্ন হয়। এটি কম্পাইল টাইমে কাজ করে, তাই একে স্ট্যাটিক পলিমরফিজম বলা হয়।
public class MathOperations
{
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
}
মেথড ওভাররাইডিং হলো বেস ক্লাসের virtual
মেথডকে ডেরাইভড ক্লাসে override
করে পুনরায় সংজ্ঞায়িত করা। এটি রানটাইমে কাজ করে, তাই একে ডায়নামিক পলিমরফিজমও বলা হয়।
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal makes a sound");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Dog barks");
}
}
class Program
{
static void Main(string[] args)
{
Animal animal = new Animal();
animal.MakeSound(); // Output: Animal makes a sound
Animal dog = new Dog();
dog.MakeSound(); // Output: Dog barks
}
}
Abstract ক্লাস হলো এমন একটি ক্লাস যেটি আংশিক বাস্তবায়ন প্রদান করে এবং পুরোপুরি ইনস্ট্যান্টিয়েট করা যায় না। অর্থাৎ, abstract
ক্লাস থেকে সরাসরি কোনো অবজেক্ট তৈরি করা যায় না। abstract ক্লাসে এমন কিছু মেথড থাকতে পারে যেগুলোর বাস্তবায়ন নির্ধারণ করা হয় না। ডেরাইভড ক্লাসে সেই মেথডগুলোকে override
করে বাস্তবায়ন করতে হয়।
public abstract class Shape
{
public abstract double GetArea(); // Abstract method
}
public abstract class Shape
{
// Abstract method, ডেরাইভড ক্লাসে ওভাররাইড করতে হবে
public abstract double GetArea();
// Non-abstract method
public void DisplayShapeType()
{
Console.WriteLine("This is a shape.");
}
}
public class Circle : Shape
{
private double radius;
public Circle(double radius)
{
this.radius = radius;
}
// Overriding the abstract method
public override double GetArea()
{
return Math.PI * radius * radius;
}
}
public class Rectangle : Shape
{
private double width;
private double height;
public Rectangle(double width, double height)
{
this.width = width;
this.height = height;
}
// Overriding the abstract method
public override double GetArea()
{
return width * height;
}
}
class Program
{
static void Main(string[] args)
{
Shape circle = new Circle(5.0);
Shape rectangle = new Rectangle(4.0, 6.0);
Console.WriteLine("Circle Area: " + circle.GetArea()); // Output: Circle Area: 78.5398
Console.WriteLine("Rectangle Area: " + rectangle.GetArea()); // Output: Rectangle Area: 24
}
}
abstract
মেথড ডেরাইভড ক্লাসে override
করতে হয়।abstract
মেথডগুলোকে আলাদাভাবে বাস্তবায়ন করে।বৈশিষ্ট্য | Abstract ক্লাস | ইন্টারফেস |
---|---|---|
ইনস্ট্যান্টিয়েট করা | সরাসরি ইনস্ট্যান্টিয়েট করা যায় না | সরাসরি ইনস্ট্যান্টিয়েট করা যায় না |
মেম্বার সংজ্ঞায়িত | Abstract এবং non-abstract মেথড থাকতে পারে | শুধুমাত্র Abstract মেথড থাকতে পারে |
মাল্টিপল ইনহেরিটেন্স | একাধিক Abstract ক্লাস থেকে ইনহেরিট করা যায় না | একাধিক ইন্টারফেস থেকে ইনহেরিট করা যায় |
অ্যাক্সেস মডিফায়ার | বিভিন্ন অ্যাক্সেস মডিফায়ার থাকতে পারে | মেথড সব সময় public থাকে |
পলিমরফিজম সি শার্পে বিভিন্ন পরিস্থিতিতে একই ফাংশনালিটির বিভিন্ন রূপ প্রকাশ করতে দেয়, যা কোডের কার্যকারিতা বৃদ্ধি করে। Abstract ক্লাস এমন একটি ক্লাস যা আংশিক বাস্তবায়ন প্রদান করে এবং নির্দিষ্ট মেথডগুলোর জন্য ডেরাইভড ক্লাসে বাস্তবায়ন নিশ্চিত করে। Abstract ক্লাস এবং পলিমরফিজম একসঙ্গে ব্যবহার করে কোডের পুনরায় ব্যবহারযোগ্যতা ও গঠন উন্নত করা যায়।
আরও দেখুন...