সি শার্পে (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 | বিভিন্ন অ্যাক্সেস মডিফায়ার ব্যবহার করা যায় |
ইনস্ট্যান্স তৈরি | সরাসরি ইনস্ট্যান্স তৈরি করা যায় না | সরাসরি ইনস্ট্যান্স তৈরি করা যায় না |
সি শার্পে ইন্টারফেস হলো এমন একটি কাঠামো, যা কোনো ক্লাসের কার্যক্রমের জন্য একটি কনট্রাক্ট তৈরি করে। ইন্টারফেসের মাধ্যমে একাধিক ইনহেরিটেন্স সমর্থন, কোডের নমনীয়তা, এবং ইউনিট টেস্টিং সহজ হয়। এটি প্রোগ্রামে একটি স্ট্যান্ডার্ড তৈরি করে এবং নির্দিষ্ট নিয়ম অনুসারে বিভিন্ন ক্লাসে কাজ করতে সহায়ক। ইন্টারফেসের সঠিক ব্যবহার প্রোগ্রামিংয়ে শক্তিশালী এবং সহজে রক্ষণাবেক্ষণযোগ্য কোড লিখতে সহায়ক।
আরও দেখুন...