اینترفیس چیست؟
یک interface یا واسط، یک مفهومی است که به تعریف متدها بدون پیاده سازی آنها میپردازد، بنابراین میتوان گفت که از یک جهت بسیار شبیه به کلاس های انتزاعی یا Abstract است. کلاسهای مختلف میتوانند از این اینترفیسها ارث بری کنند و به پیاده سازی منطق آن بپردازند. یک interface میتواند شامل تعریف متد ها (Methods)، خصیصه ها (Properties) و رخداد ها (Events) باشد، اما نمیتواند دارای فیلد (اعضای خصوصی) باشد. استفاده از interface ها کار پیاده سازی منطق در برنامه را آسانتر کرده و خوانایی کدها را افزایش میدهد. پیاده سازی منطق در interface ها یکی از اصول طراحی SOLID نیز است، همچین در برنامه نویسی شی گرابرنامه نویسی شی گرا چیست؟ شی گرایی چیست؟این صفحه عالی به معرفی برنامه نویسی شی گرا پرداخته و توضیح داده شی گرایی یا همان object oriented یا OPP چیست؟ همچنین مزایای برنامه نویسی شی گرا را بیان کرده نیز به شدت مورد استفاده قرار میگیرد.
اینترفیس در سی شارپ
یکی از دلایل اصلی استفاده از interface در زبان #C این است که زبان سی شارپ برخلاف زبان C++برنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده امکان ارث بری چندگانه (Multiple Inheritance) ندارد و تنها از 1 کلاس میتواند ارث بری کند. پیاده سازی واسط (interface) در زبان #C به وسیلهی سینتکس رزرو شدهی “interface” انجام میپذیرد. به طور قراردادی، معمولا در زبان سی شارپ، نام interface ها را با I (آی بزرگ) شروع میکنند. به عنوان مثال فرض کنید میخواهیم یک interface برای حیوانات ایجاد کنیم، کد ایجاد این واسط (interface) به صورت زیر خواهد بود:
interface IAnimal
{
void animalSound(); // interface method (does not have a body)
}
در اینجا ما اینترفیسی با نام IAnimal ایجاد کردیم که در آن یک متد با نام animalSound وجود دارد که مقدار برگشتی آن از نوع void (یعنی متد چیزی Return نمی کند) است. همانطور که مشاهده میکنید، هیچ پیاده سازی برای این متد انجام نشده است زیرا اینترفیس animal یک تعریف انتزاعی است. اکنون کلاسهای دیگر میتوانند از این اینترفیس ارث بری کرده و به پیاده سازی متدهای آن بپردازند. به کد زیر توجه کنید:
class Cat : IAnimal
{
public void animalSound()
{
// The body of animalSound() is provided here
Console.WriteLine("Miow Miow !!");
}
}
class Dog : IAnimal
{
public void animalSound()
{
// The body of animalSound() is provided here
Console.WriteLine("Whoof Whoof !!");
}
}
در کد بالا دو کلاس Cat و Dog واسط IAnimal را پیاده سازی شده است، که هرکدام از این کلاسها، با توجه به منطق مشخص خودشان، عملیات پیاده سازی را انجام دادهاند. به عنوان مثال کلاس Cat صدای حیوان را به صورت Miow پیاده سازی کرده است و کلاس Dog به صورت Whoof.
اکنون اگر متد animalSound را در شیهای ساخته شده از کلاس Cat و Dog صدا بزنیم با نتایج مختلفی روبرو میشویم:
internal class Program
{
static void Main(string[] args)
{
Cat persianCat = new Cat();
Dog shiba = new Dog();
persianCat.animalSound();
shiba.animalSound();
}
}
خروجی این کد به صورت زیر است:
توجه شود به علت اینکه کلاسهای Cat و Dog از اینترفیس IAnimal ارث بری کردهاند، میتوان مستقیما به جای ذکر کردن نام کلاس، از نام اینترفیس نیز استفاده کرد:
IAnimal persianCat = new Cat();
IAnimal shiba = new Dog();
دوره برنامه نویسی سی شارپ
نمونه فیلمهایی از جلسات برنامه نویسی سی شارپ
نکاتی پیرامون interface در #C
- در اینترفیسها تنها توابع تعریف میشوند و هیچ پیاده سازی (Implementation) صورت نمیگیرد.
- به صورت قراردادی نامهای اینترفیسها با I (آی بزرگ) شروع میشود.
- همانند کلاسهای انتزاعی یا Abstract، امکان ساخت یک شی از نوع interface وجود ندارد.
- زمانی که یک کلاس، یک interface را پیاده سازی میکند، باید تمامی متدهای تعریف شده درون آن interface را پیاده سازی کند.
- تمامی تعاریفی که درون اینترفیسها صورت میگیرد به صورت پیشفرض Abstract و Public هستند و به طور کلی یک interface نمیتواند شامل اعضای Private باشد.
- اینترفیسها نمیتوانند دارای سازنده یا Constructor باشند.
- یک interface میتواند از یک یا چند interface دیگر ارث بری (Inheritance) کند.
- یک کلاس هیچ محدودیتی در تعداد اینترفیسهایی که پیاده سازی میکند، ندارد.
جمع بندی
اینترفیس (Interface) یکی از بخش های مهم در برنامه نویسی شی گرابرنامه نویسی شی گرا چیست؟ شی گرایی چیست؟این صفحه عالی به معرفی برنامه نویسی شی گرا پرداخته و توضیح داده شی گرایی یا همان object oriented یا OPP چیست؟ همچنین مزایای برنامه نویسی شی گرا را بیان کرده است و بسیاری از اصول برنامه نویسی مانند طراحی SOLID به نوشتن برنامههای اینترفیس محور تاکید کردهاند، در این مقاله به طور کامل به بحث در مورد اینترفیسها پرداختیم و با نحوه ی پیاده سازی آن آشنا شدیم، همچنین نکاتی که هنگام استفاده از اینترفیس باید به خاطر داشته باشید نیز گردآوری شدهاند.
اینترفیس (interface) چیست؟
یک interface یا واسط، یک مفهومی است که به تعریف متدها بدون پیاده سازی آنها میپردازد. بنابراین میتوان گفت که از یک جهت بسیار شبیه به کلاسهای انتزاعی یا Abstract است. کلاسهای مختلف میتوانند از این اینترفیسها ارث بری کنند و به پیاده سازی منطق آن بپردازند.
علت استفاده از interface در زبان #C چیست؟
با استفاده از اینترفیسها می توان منطق یک برنامه و یک مفهوم مشترک را تعریف کرد و در واقع متدهای قرار گرفته در interface همانند پروتکلهایی می باشند که کلاسی که این interface را پیاده سازی کرده، ملزم به پیاده سازی تمامی آنها است. از دیگر علت وجود interface در زبان #C این است که زبان #C خاصیت Multiple Inheritance یا ارثبری چند گانه ندارد.