ইন্টারফেস কী এবং এর প্রয়োজনীয়তা

সি শার্পে (C#) ইন্টারফেস (Interface) হলো একটি বিশেষ ধরনের কাঠামো, যা শুধুমাত্র মেথড, প্রোপার্টি এবং ইভেন্টের ডিক্লেয়ারেশন ধারণ করে, কিন্তু কোনো বাস্তবায়ন (implementation) দেয় না। ইন্টারফেসের মাধ্যমে আমরা এমন একটি কনট্রাক্ট বা চুক্তি তৈরি করি, যা নির্দিষ্ট মেথড এবং প্রোপার্টি ধারণ করবে, তবে তাদের বাস্তবায়ন করবে না। যে ক্লাস ইন্টারফেসকে ইমপ্লিমেন্ট করবে, সেটি নিজস্বভাবে এই মেথড এবং প্রোপার্টিগুলোর বাস্তবায়ন দেবে।

ইন্টারফেসের গঠন

ইন্টারফেস ডিফাইন করতে interface কীওয়ার্ড ব্যবহার করা হয়, এবং সাধারণত ইন্টারফেসের নাম I অক্ষর দিয়ে শুরু হয় (যেমন, IShape, IDisplayable)।

public interface IShape
{
    double GetArea();
    void Display();
}

উপরের উদাহরণে, IShape নামের একটি ইন্টারফেসে দুটি মেথড (GetArea() এবং Display()) ডিক্লেয়ার করা হয়েছে। এখানে মেথডগুলোর কোনো বাস্তবায়ন নেই।

ইন্টারফেস ইমপ্লিমেন্ট করা

কোনো ক্লাস যখন একটি ইন্টারফেসকে ইমপ্লিমেন্ট করে, তখন সেই ক্লাসে ইন্টারফেসের সব মেথড এবং প্রোপার্টির বাস্তবায়ন প্রদান করতে হবে। একাধিক ইন্টারফেস ইমপ্লিমেন্ট করা সম্ভব।

public class Circle : IShape
{
    private double radius;

    public Circle(double radius)
    {
        this.radius = radius;
    }

    public double GetArea()
    {
        return Math.PI * radius * radius;
    }

    public void Display()
    {
        Console.WriteLine("This is a circle with area: " + GetArea());
    }
}

এখানে Circle ক্লাস IShape ইন্টারফেসকে ইমপ্লিমেন্ট করেছে এবং GetArea() এবং Display() মেথডের বাস্তবায়ন প্রদান করেছে।

ইন্টারফেসের প্রয়োজনীয়তা

ইন্টারফেস ব্যবহার করে কোডের নমনীয়তা এবং পুনঃব্যবহারযোগ্যতা বাড়ানো যায়। ইন্টারফেস ব্যবহারের কিছু প্রধান কারণ হলো:

একাধিক ইনহেরিটেন্স সমর্থন: সি শার্প একাধিক ক্লাস থেকে ইনহেরিট করতে দেয় না, তবে একাধিক ইন্টারফেস ইমপ্লিমেন্ট করা সম্ভব। ফলে একই ক্লাসে একাধিক ইন্টারফেস থেকে নির্দিষ্ট ফাংশনালিটি পাওয়া যায়।

কোডের নমনীয়তা: ইন্টারফেসের মাধ্যমে বিভিন্ন ক্লাসে একই ফাংশনালিটি তৈরি করা যায়। উদাহরণস্বরূপ, একটি IDisplayable ইন্টারফেস ব্যবহার করে বিভিন্ন ক্লাসে Display() মেথড ইমপ্লিমেন্ট করা সম্ভব।

ডিপেন্ডেন্সি ইনভার্শন প্রিন্সিপল (Dependency Inversion Principle): ইন্টারফেসের মাধ্যমে কোডের বিভিন্ন অংশের মধ্যে ডিপেন্ডেন্সি কমানো যায়, যা কোডকে আরও ভালভাবে মেইনটেইন করা যায়।

কোডের একঘেয়েমি কমানো: ইন্টারফেসের কারণে বিভিন্ন ক্লাসে নির্দিষ্ট কনট্রাক্ট তৈরি করা যায়, যা কোডের গঠন ও কার্যকারিতা উন্নত করে।

ইউনিট টেস্টিং সহজ করে: ইন্টারফেস ব্যবহার করলে প্রোগ্রামের বিভিন্ন অংশকে আলাদাভাবে টেস্ট করা সহজ হয়। ইন্টারফেসের মাধ্যমে মক অবজেক্ট তৈরি করে নির্দিষ্ট অংশের কার্যকারিতা যাচাই করা যায়।

উদাহরণ: ইন্টারফেস ব্যবহার

নিচে IShape ইন্টারফেস এবং দুটি ক্লাস Circle এবং Rectangle দেখানো হলো, যা উভয়েই IShape ইন্টারফেসকে ইমপ্লিমেন্ট করেছে।

public interface IShape
{
    double GetArea();
    void Display();
}

public class Circle : IShape
{
    private double radius;

    public Circle(double radius)
    {
        this.radius = radius;
    }

    public double GetArea()
    {
        return Math.PI * radius * radius;
    }

    public void Display()
    {
        Console.WriteLine("This is a circle with area: " + GetArea());
    }
}

public class Rectangle : IShape
{
    private double width;
    private double height;

    public Rectangle(double width, double height)
    {
        this.width = width;
        this.height = height;
    }

    public double GetArea()
    {
        return width * height;
    }

    public void Display()
    {
        Console.WriteLine("This is a rectangle with area: " + GetArea());
    }
}

উদাহরণ প্রোগ্রাম: ইন্টারফেস ব্যবহার করে প্রোগ্রাম তৈরি

class Program
{
    static void Main(string[] args)
    {
        IShape circle = new Circle(5);
        IShape rectangle = new Rectangle(4, 6);

        circle.Display();     // Output: This is a circle with area: 78.54
        rectangle.Display();  // Output: This is a rectangle with area: 24
    }
}

আউটপুট

This is a circle with area: 78.54
This is a rectangle with area: 24

ইন্টারফেস বনাম অ্যাবস্ট্রাক্ট ক্লাস

বৈশিষ্ট্যইন্টারফেসঅ্যাবস্ট্রাক্ট ক্লাস
মেম্বার ডিক্লেয়ারেশনশুধুমাত্র মেথড, প্রোপার্টির ডিক্লেয়ারেশনআংশিক বা সম্পূর্ণ মেথড এবং ফিল্ড ডিক্লেয়ারেশন
মাল্টিপল ইনহেরিটেন্সএকাধিক ইন্টারফেস ইমপ্লিমেন্ট করা যায়একাধিক অ্যাবস্ট্রাক্ট ক্লাস ইনহেরিট করা যায় না
অ্যাক্সেস মডিফায়ারসব মেম্বার publicবিভিন্ন অ্যাক্সেস মডিফায়ার ব্যবহার করা যায়
ইনস্ট্যান্স তৈরিসরাসরি ইনস্ট্যান্স তৈরি করা যায় নাসরাসরি ইনস্ট্যান্স তৈরি করা যায় না

সারসংক্ষেপ

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

Content added By

আরও দেখুন...

Promotion