آشنایی با مفهوم اینترفیس


در زبان‌های برنامه نویسی شیء گرا، در کنار مفهوم وراثت، می بایست با مفهوم دیگری تحت عنوان اینترفیس نیز آشنا شویم که بسیار پر کاربرد است. باتوجه به این که واژه ی اینترفیس در دنیای کامپیوتر و آی تی دارای معانی مختلفی است و کاربردهای فراوانی نیز دارد، ممکن است برنامه نویسان مبتدی در درک مفهوم آن کمی دچار سردرگمی شوند. به طور مثال، ما چیزی داریم تحت عنوان User Interface که به همان رابط کاربری نرم‌افزار یا اپلیکیشن که کاربران با آن تعامل می‌کنند اطلاق می‌شود اما در برنامه نویسی شیء گرایی، اینترفیس به نوعی از کلاس‌ها گفته می‌شود که هیچ گونه عملکردی نداشته و صرفاً برای ذخیره سازی تعدادی متد مورد استفاده قرار می گیرند:

public interface Vehicle {

    void startEngine();
}

همان‌طور که در کد فوق ملاحظه می شود، در زبان برنامه نویسی جاوا به جای کلیدواژه ی class از کلیدواژه ی interface استفاده شده سپس نامی همچون Vehicle به معنی «وسیله ی نقلیه» برای آن در نظر گرفته ایم (همچون نام کلاس ها، نام اینترفیس ها نیز می بایست با حرف بزرگ شروع شوند.) سپس یک متد داخل آن قرار داده‌ایم تحت عنوان ()startEngine که دارای هیچ گونه Functionality یا «عملکردی» نمی باشد. در واقع، ما اصلاً اجازه نداریم تا برای متدهای قرار گرفته داخل اینترفیس عملکردی تعریف کنیم.

حال ممکن است این سؤال برای شما پیش بیاید که با توجه به این که اینترفیس ها هیچ گونه عملکردی ندارند، فایده ساخت یک اینترفیس چیست؟ در‌ واقع زمانی که ما از اینترفیس ها استفاده می کنیم، گویی به برنامه ی خود قول می‌دهیم که حتماً در کلاسی که از آن اینترفیس خاص استفاده می شود، از کلیه ی متدهای قرار گرفته داخل آن اینترفیس استفاده خواهیم کرد. برای روشن‌تر شدن این مطلب، ابتدا مثالی از اینترفیس ها در زبان برنامه نویسی جاوا می زنیم:

class Car implements Vehicle {
	
    public void startEngine() {
        return "Start!";
    }
}

همان‌طور که در کد فوق ملاحظه می شود، ابتدا کلیدواژه ی class را نوشته سپس نام کلاس که Car است را نوشته ایم. برای آن که کلاس ما بتواند از اینترفیسی تحت عنوان Vehicle تبعیت کند، از کلیدواژه ای تحت عنوان implements استفاده نموده و در نهایت هم نام اینترفیس که در اینجا Vehicle است را آورده ایم. از آنجا که قول داده‌ایم تا در این کلاس حتماً متدی تحت عنوان ()startEngine داشته باشیم، پس چنین کلاسی را تعریف کرده که خروجی آن، return کردن استرینگی تحت عنوان !Start است. برای نشان دادن اینترفیس ها در یو ام ال نیز از ساختار زیر می توان استفاده نمود:

همان طور که در تصویر فوق مشخص است، برای نمایش دادن اینترفیس ها در یو ام ال، از کلیدواژه ی Interface داخل علامت های « » استفاده کرده سپس نام اینترفیس را پایین آن می نویسیم و کلاسی هم که از آن اینترفیس تبعیت می کند را با علامت پیکان از سمت کلاس به اینترفیس مشخص می سازیم.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
mohammadjavadr
mohammadjavadr
سلام استاد..
در کلاس کار با توجه به type متد که void هست...نباید return داشته باشه....البته طبق اطلاعات من..لطفا توضیحی هرچند مختصر بدید و یا اگر اشتباهی صورت گرفته تصحیح بکنید..
ممنون
Nirvana
Nirvana
این متد void هست ولی مقدار برگشتی داره. میشه لطفا توضیح بدین؟
کاربر میهمان
کاربر میهمان
سلام ، تشکر از مطالب خوبتون...
فکر میکنم در مثالی که زدید مشکلی وجود داشته باشه ، متد رو از نوع void تعریف کردید و نباید مقداری رو برگردونه و استفاده از l return \"start\"; l نادرسته
pooya
pooya
با عرض سلام و خسته نباشید خدمت مولف این دوره اموزشی
اول میخاستم تشکر کنم بابت تالیف ساده و روان این اموزش ها که واقعا لطف بزرگی به من و امثال من میکنید و خیلی عالین
و دوم اینکه میخاستم بگم من علاقه زیادی به برنامه نویسی دارم اما تازه شروع کردم و از اموزش های خوب شما استفاده میکنم اما از فصل سه به بعد تا اینجایی که خوندم تقریبا مفاهیم برام سنگین و غیر قابل درک بودن به طوری که چیز زیادی ازشون متوجه نمیشم اما خب با دقت میخونم و ادامه میدم میخاستم ببینم این مطالب اهمیتشون تا چه اندازه مهم هست یعنی ممکنه در اینده برام مشکل ساز بشه که اینجا متوجه نمیشم یا اینکه چون من مبتدی هستم و بعد ها در اینده میتونم درکشون کنم؟
ممنون میشم اگه پاسخ بدید با تشکر.
بهزاد مرادی
بهزاد مرادی مدرس، کپی‌رایتر و دولوپر
سلام
ممنون از شما
اگر در این مرحله درک کنید که چه بهتر اما در آینده هم بسته به نوع زبانی که انتخاب می کنید به صورت عملی فرا خواهید گرفت. در این دوره صرفا منظور این بوده که دانشجویان یک ایده ی کلی نسبت به مطالب پیدا کنند.
تشکر

در پاسخ به

pouyanami84
pouyanami84
واقعا از این جوابتون امیدوار شدم مرسی از اموزش های عالیتون

در پاسخ به

امیر
امیر
سلام منظور از تبعیت همون ارث بری هستش ؟
کاربر میهمان
کاربر میهمان
متود استارت اينجين void ست return چرا؟
Shahin
Shahin
در کد دوم چرا با پابلیک یا پرایوت شروع نشد؟ class Car implements Vehicle
و اینکه چرا void با پابلیک شروع شد؟
ممنون
ccc ccc
ccc ccc
سلام
در مورد modifire ها یا حق دسترسی در آموزش جاوا هست. به آموزش ها مراجعه کنید متوجه میشید.

در پاسخ به

Shahin
Shahin
ممنونم

در پاسخ به