مفاهیم ، مبانی و اصول شی گرایی (OOP) قسمت ششم : Interface
در مقاله قبلی به مفهوم چندریختی پرداختیم و دیدیم که به چه صورت می توان یک متد را به صور مختلف باز نویسی کرد .
در این مقاله به مفهوم مهم واسط (Interface) می پردازیم .
واسط ها این امکان را فراهم می کنند که یک ساختار جهت پیاده سازی یک کلاس فراهم کنید ، علاوه بر این یکی از روش های اجرای چند ریختی هستند .
مفهوم واسط در کنار مفهوم کلاس قرار می گیرد ، نحوه تعریف یک کلاس و یک واسط کاملا مشابه بوده ولی تفاوت های بسیار در ساختار آنها وجود دارد ، شما در یک کلاس می توانید متد ها ، خواص و متغیر مورد نظر خود را از انوع Public ، Private ، Protected یا… تعریف کنید ولی در یک واسط همه اعضای فوق از نوع Public هستند و غیر قابل تغییر .
در یک کلاس پس از تعریف مثلا یک متد ، در آن کد نویسی می کنید ، در صورتی که در یک واسط فقط آن را تعریف می کنید و هیچ کد نویسی در آن انجام نخواهید داد .
به زبان ساده تر ما در یک واسط متدهایی را که باید پیاده سازی شوند تعریف می کنیم بدون اینکه بگوییم این متدها به چه صورت پیاده سازی گردد .
برای روش شدن بیشتر این مطلب به سراغ مثال آشنای خودمان می رویم .
در مقاله قبل کلاس Animal را ایجاد کردیم و کلاس دیگر Dog و Bird را از آن مشتق نمودیم و متد Eating را در هر دو آنها باز نویسی کردیم .
در حقیقت در روش فوق ما ابتدا متد Eating را در کلاس مادر یعنی Animal پیاده سازی کردیم و دوباره آن را در دو کلاس فرزند یعنی کلاس های Bird و Dog باز نویسی نمودیم .
چه نیازی به این کار بود ؟ آیا بهتر نبود فقط نامی از متد Eating ذکر میشد بدون اینکه پیاده سازی شود ؟
بله ؛ این جواب ما نیاز به وجود واسط را بیان می کند .
حال واسط Animal را به صورت زیر تعریف کرده و نام آن را IAnimal می گذاریم :
Public Interface IAnimal
Function Eating() As String
End Interface
همانطور که ملاحظه می کنید تابع Eating فقط تعریف شده اند و پیاده سازی نشده اند .
حال کلاس واسط IAnimal را در کلاس Dog به صورت زیر اجرا (Implement) می کنیم :
Public Class Dog
Implements IAnimal
Public Function Eating() As String Implements IAnimal.Eating
Return
"Eats Food"
End Function
End Class
همانطور که ملاحظه کردید به محضی که Implements IAnimal را نوشته و اینتر کردید متد مورد نظر جهت پیاده سازی لود شد .
اکنون که با مفوهم Interface آشنا شدید با ذکرچند نکته این مطلب را به پایان می رسانیم :
- Implement کردن یک Interface به معنی قبول پیروی از تمام قوانین آن Interface می باشد بنابراین تمام متد ها و خواص و… آن بایددر کلاس مورد نظر شما پیاده سازی گردد .
- یک واسط از نوع داده می باشد ولی از کلاس Object مشتق نمی شود .
- همانطور که می دانید در دات نت یک کلاس فقط و فقط می تواند از یک کلاس دیگر ارث بری کند ولی قادر است چندین Interface را در خود Implement نماید .
آخرین دیدگاهها