اینترفیس در برنامهنویسی چیست ؟
Interface یا اینترفیس در برنامهنویسی یکی از مفاهیم در برنامهنویسی شیء گرا است که با هدف ایجاد کلاسهایی استاندارد و دارای ویژگیهای خاص تعریف میشود.
استفاده از اینترفیسها در کنار ارثبری یا Inheritance از قابلیتهای زبانهای برنامهنویسی شیءگرا است که تضمین میکند تا کلاسهای ایجاد شده توسط برنامهنویس دارای ویژگیهای خاص و مورد نظر باشند.
مثال استفاده از اینترفیس
برای روشنتر شدن موضوع فرض کنید یک تابع در یک کلاس، پارامتری را قبول میکند که باید یک شیء ناشناس ولی با ویژگیهای خاص باشد. مثلا یک تابع برای ارسال پیام سه پارامتر، «شناسه مخاطب»، «متن پیام» و «شیء ارسال کننده پیام» را میپذیرد.
با توجه به اینکه نوع ارسال پیام میتواند در آینده هم توسعه پیدا کند، کلاسهایی که کار ارسال پیام را انجام میدهند همگی باید دارای ویژگیهای خاصی باشند. در حال حاضر دو کلاس برای ارسال پیامک و ایمیل در سیستم موجود است ولی در آینده ممکن است ارسال پیام از طریق نوتیفیکیشن، شبکههای اجتماعی و پیجر هم به سیستم اضافه شود.
کلاسهای جدیدی که بعدا باید پیادهسازی شوند، اگر استانداردهای مورد نیاز را رعایت نکنند و مثلا نام یکی از توابع را درست ننویسند، ممکن است در زمان توسعه و تست، خطای ایجاد شده به آسانی قابل تشخیص نباشد.
اینترفیس چطور مشکل را حل میکند ؟
اینترفیسها شبیه کلاسها هستند با این تفاوت که کدی در آنها نوشته نمیشود و تنها ساختار توابع و پارامترهای آنها در آن وجود دارد. کلاسها میتوانند یک یا چند اینترفیس را پیادهسازی یا از آن پیروی کنند. در این صورت لازم است تا کلیهی توابع موجود در اینترفیس را دقیقا پیادهسازی کنند وگرنه هنگام کامپایل یا اجرا با یک خطای مهلک یا Fatal روبرو خواهند شد.
به عبارت دیگر تعریف اینترفیس مثل یک دستورالعمل استاندارد است که اگر کلاسی میخواهد مهر استاندارد مربوط را دریافت کند، دقیقا باید این دستورالعملها را رعایت کرده باشد.
پارامترهای توابع میتوانند نوع توابع خود را از نوع یک اینترفیس خاص تعریف کنند و هر کلاسی که ویژگیهای تعریف شده در اینترفیس را دارا باشد، میتواند به عنوان پارامتر تابع فوق پذیرفته شود.
مثال اینترفیس در زبان php
در ادامه یک مثال از تعریف اینترفیس در زبان php و استفاده از آن در یک کلاس را مشاهده میکنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
interface messageSender { public function setRecipient( $user_id ); public function setMessage( $message ); public function send(); } class smsSender implements messageSender { private $recipient; private $message; public function setRecipient( $user_id ) { // codes here } public function setMessage( $message ) { // codes here } public function send() { // codes here } } |