اینترفیس Interface یکی از مفاهیم مهم و پر کاربرد در برنامه نویسی می باشند که به عنوان یک توسعه دهنده ضروری هست با آن اشنا باشید.
هدف از تعر یف اینترفیس مشخص کردن رفتارهایی است که یک کلاس می تواند داشته باشد.
به بیان دیگر، در یک اینترفیس با استفاده از متدهایی که تعریف می کنیم رفتارهایی را مشخص می کنیم، که یک کلاس می تواند داشته باشد و پیاده سازي این رفتارها را در کلاس هایی که از آن استفاده میکنند، انجام میدهیم.
این کار باعث می شود رفتارهاي یکسانی را در کلاس هاي مختلف قرار دهیم؛ اما پیاده سازي آن ها در هر کلاس تفاوت داشته باشد.
اینترفیس (Interface) در برنامهنویسی یک قرارداد (Contract) است که مشخص میکند کلاسها یا اشیاء چه متدها (توابع) و ویژگیها (متغیرها) را باید پیادهسازی کنند.
به عبارت دیگر، اینترفیس تعیین میکند که یک کلاس چه عملکردها و ویژگیها را باید دارا باشد، اما جزئیات اجرای آنها را مشخص نمیکند.
این به برنامهنویسها امکان میدهد که چندین کلاس مختلف با امکانات مشابه اما پیادهسازیهای متفاوت ایجاد کنند.
در بحث شی گرایی در زبان برنامه نویسی دارت ما یک کلاس ایجاد میکنیم و داخل این کلاس برحسب نیاز چندین متد میسازیم حال با ارث بری از این کلاس به متد ها دسترسی داریم و کاری که آنها انجام میدهند اجرا می شود.
در اینترفیس ها ما متدهایی که لازم داریم را تعریف میکنیم ولی هیچ پیاده سازی انجام نمیدهیم. در واقع فقط نوع, نام و پارامترهای ورودی متد را مشخص میکنیم. پیاده سازی این متدها بر عهده کلاسی است که از این اینترفیس استفاده میکند.
حال همانطور که از کلاس های مختلف ارث بری میکردیم همینکار را با اینترفیس انجام می دهیم ولی بجای ارث بری از کلمه implements استفاده می کنیم.
هرکلاسی که یک اینترفیس را implements می کند باید تمام متد های آن اینترفیس را بازنویسی کند پیاده سازی را انجام دهد.
در زبانهای برنامهنویسی شیگرا مانند جاوا (Java)، C# و دارت (Dart)، اینترفیس یک مکانیزم مهم برای پلهکاری (Polymorphism) استفاده میشود. با استفاده از اینترفیس، میتوانیم گروهی از کلاسها را تعریف کنیم که ویژگیها و رفتارهای مشترکی را دارند. سپس میتوانیم به جای استفاده مستقیم از یک کلاس خاص، از اینترفیس به عنوان نقطهی ورود به ارتباط با اشیاء استفاده کنیم.
مزایای استفاده از اینترفیس عبارتند از:
در زبان دارت برخلاف زبان های دیگر مثل جاوا یا C# مفهومی به نام اینترفیس به شکل مستقیم وجود ندارد.. به همین دلیل برای پیاده سازی این بخش از کلاس های Abstract استفاده میکنیم که عملکردی مشابه اینترفیس ها دقیقا دارند.
کلاس های Abstract را هم میتوانیم implement کنیم و هم از قابلیت ارث بری آنها استفاده کنیم.
abstract class IsSilly {
void makePeopleLaugh();
}
class Clown implements IsSilly {
void makePeopleLaugh() {
print("Hello")
}
}
در کلاس بالا یک کلاس به نام IsSilly از نوع abstract ایجاد کردیم که یک متد به نام makePeopleLaugh دارد.
در کلاس بعدی به نام Clown از این کلاس به شکل اینترفیس استفاده کردیم و آن را implements کردیم, در این حالت باید متد makePeopleLaugh را بازنویسی کنیم تا مشخص کنیم که این متد چه عملیاتی را نیاز دارد تا انجام دهد. در بدنه این متد یک دستور پرینت قرار داده ایم.
برخلاف ارث بری که هر کلاس فقط از یک کلاس میتواند ارث بری کند, در اینترفیس ها محدودیتی از نظر تعداد وجود ندارد.
نکته اي که باید به آن توجه کنید این است که کلمه extends حتما باید قبل از کلمه implements قرارگیرد؛ در غیر این صورت برنامه دچار خطا می شود.
خیلی مختصر و کوتاه توضیح دادید .
ghashang tozih dadin va ja oftad