C# – رابط‌ها (Interfaces)

رابط‌ها در C#

یکی دیگر از روش‌های دستیابی به انتزاع (Abstraction) در C# استفاده از رابط‌ها (Interfaces) است.

یک رابط (Interface) به‌طور کامل یک “کلاس انتزاعی” است که تنها می‌تواند شامل متدها و ویژگی‌های انتزاعی (بدون بدنه) باشد.

تعریف رابط

رابط‌ها تنها شامل متدها و ویژگی‌هایی هستند که بدنه ندارند. این متدها باید در کلاس‌هایی که رابط را پیاده‌سازی می‌کنند، پیاده‌سازی شوند.

مثال:

using System;

// رابط
interface IAnimal  // رابط (Interface)
{
    void animalSound(); // متد رابط (بدنه ندارد)
    void run(); // متد رابط (بدنه ندارد)
}

نکات درباره رابط‌ها

  • پیشوند “I”: به‌طور معمول، پیشوند “I” (برای مثال IAnimal) در نام رابط‌ها استفاده می‌شود تا مشخص شود که این یک رابط است و نه یک کلاس. این کار به یادآوری آسان‌تر کمک می‌کند.

  • ویژگی‌ها و متدها: رابط‌ها می‌توانند شامل ویژگی‌ها و متدها باشند، اما نمی‌توانند شامل فیلدها (fields) باشند.

  • متدهای رابط: متدهای رابط بدنه ندارند. بدنه این متدها باید در کلاس‌هایی که رابط را پیاده‌سازی می‌کنند، ارائه شود. برای پیاده‌سازی رابط از کلیدواژه : استفاده می‌شود، مشابه وراثت (Inheritance). نیازی به استفاده از کلیدواژه override نیست.

  • محدودیت‌ها:

    • عدم توانایی در ایجاد شیء: مانند کلاس‌های انتزاعی، نمی‌توان از رابط‌ها شیء مستقیم ایجاد کرد. (در مثال بالا، ایجاد شیء از IAnimal ممکن نیست.)
    • عدم پشتیبانی از سازنده‌ها: رابط‌ها نمی‌توانند سازنده (constructor) داشته باشند زیرا نمی‌توان از آن‌ها شیء ایجاد کرد.
    • پیش‌فرض‌ها: اعضای رابط به‌طور پیش‌فرض انتزاعی (abstract) و عمومی (public) هستند.

پیاده‌سازی رابط

برای پیاده‌سازی یک رابط، کلاس باید متدهای رابط را پیاده‌سازی کند. در اینجا یک مثال از پیاده‌سازی رابط IAnimal در کلاس Pig آمده است:

مثال:

using System;

// رابط
interface IAnimal 
{
    void animalSound(); // متد رابط (بدنه ندارد)
}

// کلاس Pig رابط IAnimal را پیاده‌سازی می‌کند
class Pig : IAnimal 
{
    public void animalSound() 
    {
        // بدنه متد animalSound() در اینجا ارائه می‌شود
        Console.WriteLine("The pig says: wee wee");
    }
}

class Program 
{
    static void Main(string[] args) 
    {
        Pig myPig = new Pig();  // ایجاد شیء از Pig
        myPig.animalSound();   // فراخوانی متد پیاده‌سازی شده
    }
}

خروجی:

The pig says: wee wee

چرا و چه زمانی از رابط‌ها استفاده کنیم؟

  1. دستیابی به امنیت: با استفاده از رابط‌ها می‌توانیم جزئیات خاصی را پنهان کرده و تنها اطلاعات ضروری را برای کاربر نمایش دهیم.

  2. وراثت چندگانه: C# از وراثت چندگانه (Multiple Inheritance) پشتیبانی نمی‌کند (یک کلاس می‌تواند تنها از یک کلاس پایه به ارث ببرد). با این حال، می‌توان از رابط‌ها برای دستیابی به وراثت چندگانه استفاده کرد، زیرا یک کلاس می‌تواند چندین رابط را پیاده‌سازی کند. توجه: برای پیاده‌سازی چندین رابط، آن‌ها را با کاما جدا کنید.

مثال:

using System;

// رابط‌های متعدد
interface IAnimal 
{
    void animalSound(); // متد رابط (بدنه ندارد)
}

interface IMovable
{
    void run(); // متد رابط (بدنه ندارد)
}

// کلاس Pig رابط‌های IAnimal و IMovable را پیاده‌سازی می‌کند
class Pig : IAnimal, IMovable 
{
    public void animalSound() 
    {
        Console.WriteLine("The pig says: wee wee");
    }
    
    public void run()
    {
        Console.WriteLine("The pig is running");
    }
}

class Program 
{
    static void Main(string[] args) 
    {
        Pig myPig = new Pig();  // ایجاد شیء از Pig
        myPig.animalSound();   // فراخوانی متد پیاده‌سازی شده
        myPig.run();           // فراخوانی متد پیاده‌سازی شده
    }
}

خروجی:

The pig says: wee wee

The pig is running

استفاده از رابط‌ها به شما این امکان را می‌دهد که طراحی‌های نرم‌افزاری را انعطاف‌پذیرتر و مقیاس‌پذیرتر کنید و به پیاده‌سازی‌های مختلف از یک قرارداد مشترک دست یابید.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.