آراد جهان : وب مهراز - جامعه برنامه نویسان

مفاهیم ، مبانی و اصول شی گرایی (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 آشنا شدید با ذکرچند نکته این مطلب را به پایان می رسانیم :

  1. Implement کردن یک Interface به معنی قبول پیروی از تمام قوانین آن Interface می باشد بنابراین تمام متد ها و خواص و... آن بایددر کلاس مورد نظر شما پیاده سازی گردد .
  2. یک واسط از نوع داده می باشد ولی از کلاس Object مشتق نمی شود .
  3. همانطور که می دانید در دات نت یک کلاس فقط و فقط می تواند از یک کلاس دیگر ارث بری کند ولی قادر است چندین Interface را در خود Implement نماید .
تعداد بازدید : 2163
ارسال به دوستان

ارسال