HOW 2 LEARN ASP.NET
نویسنده : delshad
تاریخ  : ۱۳۸۷/۶/۵
امتیاز :
بازدید : 5292
موضوع : مفاهیم ، مبانی و اصول شی گرایی (OOP) قسمت پنجم : چند ریختی
توضیحات : در این مقاله به آموزش شی گرایی (OOP) پرداخته ، با مفهوم پرکاربرد چند ریختی یا Polymorphism آشنا می شویم .
     

مفاهیم ، مبانی و اصول شی گرایی (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() + "<br>")

 

        Dim MyBird As New Bird

        Response.Write("Birds " + MyBird.Eating() + "<br>")

 

        Dim MyDog As New Dog

        Response.Write("Dogs " + MyDog.Eating() + "<br>")

 

 

    End Sub

End Class

 


خروجی صفحه  :

Animals Eats Food
Birds Eats Seed
Dogs Eats Meet




فایل پروژه را از اینجا دانلود کنید .


در قسمت بعد با مفهوم واسط یا Interface  آشنا خواهیم شد .




 

 

 
امتیاز بدهید :

نویسنده : احمدی mansooreh_ahmadi4676@yahoo.com ۱۳۸۹ بيست و نهم مرداد
اگر امکانش هست پلی مورفیسم را با معماری سرویس گرا مقایسه کنید
نویسنده : رضا aaaa@bbbb.com ۱۳۸۹ چهارم مرداد
سلام خسته نباشيد واقعا فوق العاده است. اميدوارم كه همنيطور ادامه داشته باشد.
نویسنده : اسماعیل h@h.vom ۱۳۸۹ هفتم ارديبهشت
خیلی مفید بود. ممنون
نویسنده : R ۱۳۸۸ يازدهم بهمن
واقعا به ساده ترین زبان مفاهیم پایه یی برنامه نویسی شی گرا رو آموزش دادی. واقعا ممنون
نویسنده : علی دلشاد ۱۳۸۷ پانزدهم شهريور
در اولین فرصت آموزش کامل ASP.NET از مقدماتی تا پیشرقته را برای دانلود قرار می دهم
موفق باشید
نویسنده : zz aa ۱۳۸۷ سيزدهم شهريور

کاملا موافقم

نویسنده : مريم MLM_31128_BARAN@YAHOO.COM ۱۳۸۷ هفتم شهريور

ميشه كلا روش برنامه نويسي با ASP را مثل يه كتابه ZIP شده بذارين تا بشه دانلود كرد اينا حتا SAVEنميشه كرد من لازم دارم اگه ميشه


 
نظر بدهید :
لطفا سوالات فنی خود را در تالار گفتگو www.forum.how2learnasp.net مطرح نمایید
نام :  
ایمیل :    
نظرات :
 
Xml rss feed

 

Valid CSS! Atom rss feed
Ali Delshad Official Site