تیر ۱, ۱۳۹۸ Mostafa بدون دیدگاه

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

توجه : درخواست افزونه ،قالب، اسکریپت و نرم افزار و ... و سوالات و مشکلات خود را در انجمن ارسال نمایید

اینترفیس

در سی شارپ ، یک اینترفیس با استفاده از کلمه ی رزرو شده ی interface تعریف میشود. برای مثال در زیر یک مثال ساده از تعریف یک interface آمده است. این اینترفیس حاوی تعریف متد Log است. دقت کنید که فقط حاوی تعریف این متد بوده و بدنه ی آن توسط کلاسی که از این اینترفیس استفاده میکند پیاده سازی میشود :

interface ILog
{
    void Log(string msgToLog);
}

اکنون کلاس های مختلف با فراهم آوردن بدنه ی متد Log میتوانند اینترفیس ILog را پیاده سازی کنند. برای مثال کلاس ConsoleLog در مثال زیر اینترفیس ILog با چاپ یک پیغام در خروجی پیاده سازی کرده است ، در حالی که کلاس FileLog همین پیغام را در یک فایل متنی درج میکند.
اینترفیس را میتوان با استفاده از قاعده ی نوشتاری زیر پیاده سازی کرد :

<class name> : <interface name >
class ConsoleLog: ILog
{
    public void Log(string msgToPrint)
    {
        Console.WriteLine(msgToPrint);
    }
}

class FileLog :ILog
{
    public void Log(string msgToPrint)
    {
            File.AppendText(@"C:\Log.txt").Write(msgToPrint);
    }
}

اکنون میتوان از هرکدام از کلاس های FileLog و یا ConsoleLog شی ایی نمونه سازی کرد :

ILog log = new ConsoleLog();

//Or 

ILog log = new FileLog();

پیاده سازی صریح

میتوان یک اینترفیس را با قرار دادن نام آن ، قبل از نام متد به شکلی که در زیر آمده است به صورت صریح پیاده سازی کرد :

class ConsoleLog: ILog
{
    public void ILog.Log(string msgToPrint) // explicit implementation
    {
        Console.WriteLine(msgToPrint);
    }
}

تعریف صریح زمانی که کلاسی داریم که چندین اینترفیس را پیاده سازی میکند مفید است. در این صورت کد نوشته شده خوانا تر و پیچیدگی آن کمتر است. و وقتی مفید تر خواهد شد که اینترفیس ها دارای متد های با نام یکسانی باشند.


برچسب ها