مفاهیم ، مبانی و اصول شی گرایی (OOP) قسمت پنجم : چند ریختی

مفاهیم ، مبانی و اصول شی گرایی (OOP)  قسمت پنجم : Polymorphism

در بخش قبل با مفهوم بسیار مهم ارث بری اشنا شدید و آموختید که کلاس ها قادرند از یکدیگر ارث بری کنند . در این مقاله قصد داریم با مفهوم پرکاربرد چند ریختی یا Polymorphism آشنا شویم .
در مثال قبل یک کلاس برای حیوانات ایجاد کردیم و کلاسی برای سگ ها که این کلاس از کلاس حیوانات مشتق شده بود ، به عبارتی رفتار و خواصی مانند حیوانات داشت ولی رفتار و خواص منحصر به فردی نیز داشت (به عنوان مثال پارس کردن) .

حال فرض کنید که تمامی حیوانات یک عمل را انجام می دهند اما هر یک به شکلی متفاوت ، به عنوان مثال عمل خوردن را در نظر بگیرید ، هر حیوانی غدای متفاوی می خورد .
به عبارت دیگر کلاس های مشتق شده قادرند رفتاری از کلاس مادر را به اشکال گوناگون انجام دهند ، به این مفهوم چند ریختی یا PolyMorphism می گویند .

فرض کنید کلاس زیر کلاس حیوانات  باشد :

Imports Microsoft.VisualBasic

Public Class Animal

    Public Overridable Function Eating()

        Return “Eats Food”

    End Function

End Class

به متد Eating دقت نمایید ، کلیدواژه Overridable به آن اضافه شده است ، این کلیدواژه باعث می شود که این متد قابل باز نویسی به ریخت های گوناگون شود ، در صورتی که این کلیدواژه را به کار نبرید در کلاس مشتق شده قادر نخواهید بود متد را بازنویسی کنید .

حال دو کلاس سگ ها و پرندگان را در نظر بگیرید که از کلاس حیوانات مشتق شده اند :

Imports Microsoft.VisualBasic

Public Class Dog

    Inherits Animal

End Class

 

Imports Microsoft.VisualBasic

Public Class Bird

    Inherits Animal

End Class

همانطور که ملاحظه می کنید هر دو کلاس فوق از کلاس مادرشان یعنی Animal ارث بری می کنند .
حال میخواهیم متد Eating را برای هر یک از این کلاس ها به شکل منحصر به فردی بازنویسی کنیم :

Imports Microsoft.VisualBasic

Public Class Dog

    Inherits Animal

    Public Overrides Function Eating()

        Return “Eats Meet”

    End Function

End Class

 

Imports Microsoft.VisualBasic

 

Public Class Bird

Inherits Animal

 

Public Overrides Function Eating()

Return “Eats Seed”

End Function

 

 

End Class

همانطور که ملاحظه می کنید در کلاس Dog و Bird عمل خوردن بازنویسی شده است و مشخص شده که پرنده ها دانه و سگ ها گوشت می خورند  .
برای بازنویسی (Overrides) کلاس های قابل بازنویسی (Overridable) از کلیدواژه Overrides استفاده می شود .

حال  یک شی جدید از هر یک از این کلاس ها  در صفحه Default.aspx ایجاد کنید و متد Eating را فراخوانی نمایید و نتیجه را ملاحظه کنید :

Partial Class _Default

    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim MyAnimal As New Animal

        Response.Write(“Animals ” + MyAnimal.Eating() + ”
“)

        Dim MyBird As New Bird

        Response.Write(“Birds ” + MyBird.Eating() + ”
“)

        Dim MyDog As New Dog

        Response.Write(“Dogs ” + MyDog.Eating() + ”
“)

    End Sub

End Class

خروجی صفحه  :

Animals Eats Food
Birds Eats Seed
Dogs Eats Meet

شاید این مطالب را هم دوست داشته باشید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *