اینترفیس چیست؟
کاوه طاهریدر۱۴۰۳/۲/۱۸
اینترفیس یا Interface یکی از پرکاربردترین اشاره گر ها در C# است، بله اینترفیس یک اشاره گر است و به همین دلیل سرعت بالایی در پردازش دارد.
اینترفیس شامل تعریف کلاس یا ثابت است که در آینده قرار است کلاس از مطابق این شکل ساخته شوند.
public interface IVehicle
{
int MaxSpeed { get; set; }
int Doors { get; }
}
در مثال بالا IVehicle یک اینترفیس وسیله نقلیه است که دارای 2 مشخصه حداکثر سرعت و تعداد درب است. در این مثال هر کلاسی که بعدا از این اینترفیس ساخته شود باید حداقل دارای این مشخصه باشد.
توجه داشته باشید مشخصه Doors به صورت Read-Only تعریف شده است.
public class Car : IVehicle
{
int maxSpeed = 200;
public int MaxSpeed { get => maxSpeed; set { maxSpeed = value; } }
public int Doors { get => 4; }
}
public class Truck : IVehicle
{
int maxSpeed = 120;
public int MaxSpeed { get => maxSpeed; set { maxSpeed = value; } }
public int Doors { get => 2; }
public bool Diesel { get; set; } }
برای تعریف کلاس از اینترفیس به این صورت عمل می کنیم. اینترفیس استفاده های زیادی دارد در اینجا به ساده ترین روش استفاده از اینترفیس می پردازیم.
public Demo()
{
List<IVehicle> vehicles = new List<IVehicle>();
vehicles.Add(new Car { MaxSpeed = 250 });
vehicles.Add(new Truck{ Diesel = true });
}
همانطور که در مثال بالا مشخص است لیستی از وسایل نقلیه بدون توجه به نوع آن ها ایجاد شده و ما از قبل می دانیم که همه وسایل نقلیه در این لیست دارای حداقل 2 مشخصه تعداد درب و حداکثر سرعت هستند.
توجه داشته باشید کامیونی که در لیست اضافه شده دارای مشخصه نوع سوخت است ولی از طریق vehicles نمی توانید به این مشخصه دسترسی داشته باشید.
اینترفیس ها دارای موارد استفاده زیادی هستند ولی در کل دلیل استفاده از اینترفیس بازگذاشتن دست برنامه نویس های بعدی برای توسعه نرم افزار است. در مثال عملی تر یک نرم افزار ویرایش گر صوت را در نظر بگیرید، بعد از انجام همه مراحل کاربر قصد ذخیره سازی فایل نهایی را دارد. اینجا برنامه نویس یک اینترفیس برای ذخیره سازی در نظر گرفته است که عملیات ذخیره سازی را به کامپونتت های دیگر واگذار می کند. کاربر می تواند انواع خروجی های wav، MP3 یا ... را ذخیره کند.
اینترفیس مانند یک کلاس Abstract است که همه متدهای آن نیز Abstract باشد. توجه داشته باشید ارث بری از اینترفیس ها محدودیتی ندارد ولی فقط از یک کلاس می توانید ارث بری کنید.