সি শার্পে (C#) ইন্টারফেস এবং ইমপ্লিমেন্টেশন অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর মূল ধারণা। ইন্টারফেস হলো মেথড, প্রোপার্টি, ইভেন্ট, এবং ইনডেক্সারের সংজ্ঞা প্রদানকারী একটি কাঠামো, যা কোনো বাস্তবায়ন ছাড়াই থাকে। অন্যদিকে, ইমপ্লিমেন্টেশন হলো সেই ইন্টারফেসের মেথড বা প্রোপার্টিগুলোর বাস্তবায়ন, যা একটি ক্লাসে ইন্টারফেস ইমপ্লিমেন্ট করে করা হয়।
ইন্টারফেস হলো একটি রূপরেখা বা ব্লুপ্রিন্ট যা মেথড, প্রোপার্টি, ইভেন্ট, এবং ইনডেক্সারের শুধু সিগনেচার প্রদান করে, কিন্তু এর কোনো বাস্তবায়ন থাকে না। একটি ক্লাসে ইন্টারফেস ইমপ্লিমেন্ট করার সময় এই মেথডগুলোকে পূর্ণ বাস্তবায়ন করতে হয়।
public interface IAnimal
{
void MakeSound(); // মেথড সিগনেচার
}
একটি ক্লাস যখন কোনো ইন্টারফেস ইমপ্লিমেন্ট করে, তখন তাকে ইন্টারফেসের সব মেথড, প্রোপার্টি, ইত্যাদির সুনির্দিষ্ট বাস্তবায়ন প্রদান করতে হয়। ইমপ্লিমেন্টেশন নিশ্চিত করে যে ক্লাসটি নির্দিষ্ট ফাংশনালিটি ধারণ করবে।
public class Dog : IAnimal
{
public void MakeSound()
{
Console.WriteLine("Dog barks");
}
}
উপরে Dog
ক্লাস IAnimal
ইন্টারফেস ইমপ্লিমেন্ট করেছে এবং MakeSound()
মেথডের বাস্তবায়ন প্রদান করেছে।
নিচে একটি উদাহরণ দেয়া হলো যেখানে একটি IAnimal
ইন্টারফেস এবং দুটি ক্লাস (Dog
এবং Cat
) সেই ইন্টারফেস ইমপ্লিমেন্ট করেছে।
// ইন্টারফেস সংজ্ঞা
public interface IAnimal
{
void MakeSound();
}
// Dog ক্লাস যা IAnimal ইন্টারফেস ইমপ্লিমেন্ট করছে
public class Dog : IAnimal
{
public void MakeSound()
{
Console.WriteLine("Dog barks");
}
}
// Cat ক্লাস যা IAnimal ইন্টারফেস ইমপ্লিমেন্ট করছে
public class Cat : IAnimal
{
public void MakeSound()
{
Console.WriteLine("Cat meows");
}
}
class Program
{
static void Main(string[] args)
{
IAnimal dog = new Dog();
dog.MakeSound(); // Output: Dog barks
IAnimal cat = new Cat();
cat.MakeSound(); // Output: Cat meows
}
}
ইন্টারফেস ব্যবহারের মাধ্যমে পলিমরফিজম প্রয়োগ করা যায়। ইন্টারফেস টাইপের একটি ভেরিয়েবল বা রেফারেন্সের মাধ্যমে বিভিন্ন ক্লাসের মেথড কল করা যায়, যা পলিমরফিজমকে সম্ভব করে।
public interface IShape
{
double GetArea();
}
public class Circle : IShape
{
public double Radius { get; set; }
public Circle(double radius)
{
Radius = radius;
}
public double GetArea()
{
return Math.PI * Radius * Radius;
}
}
public class Rectangle : IShape
{
public double Width { get; set; }
public double Height { get; set; }
public Rectangle(double width, double height)
{
Width = width;
Height = height;
}
public double GetArea()
{
return Width * Height;
}
}
উপরের উদাহরণে, IShape
ইন্টারফেসে GetArea()
মেথডের সিগনেচার আছে। Circle
এবং Rectangle
ক্লাসগুলো IShape
ইন্টারফেস ইমপ্লিমেন্ট করেছে এবং নিজেদের মতো GetArea()
মেথডের বাস্তবায়ন করেছে।
class Program
{
static void Main(string[] args)
{
IShape circle = new Circle(5.0);
IShape 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
}
}
সি শার্পে ইন্টারফেস হলো একটি রূপরেখা যা ক্লাসগুলো ইমপ্লিমেন্ট করে নির্দিষ্ট ফাংশনালিটি প্রদান করতে বাধ্য হয়। ইন্টারফেস কেবল মেথড বা প্রোপার্টির সিগনেচার প্রদান করে, এবং ক্লাসগুলোর মাধ্যমে তাদের সুনির্দিষ্ট বাস্তবায়ন নির্ধারণ করা হয়, যা ইমপ্লিমেন্টেশন নামে পরিচিত। ইন্টারফেস এবং ইমপ্লিমেন্টেশন কোডের পুনঃব্যবহারযোগ্যতা, পলিমরফিজম, এবং ফাংশনালিটি নিয়ন্ত্রণে সহায়ক।
আরও দেখুন...