تبليغاتX
آموزش برنامه نویسی کامپیوتر و الکترونیک
آموزش برنامه نویسی کامپیوتر و الکترونیک

آموزش برنامه نویسی کامپیوتر و الکترونیک

این وبلاگ پاسخگوی مشکلات شما در زمینه الکترونیک,کامپیوتر و اینترنت می باشد.

شعر دانستنیهای قبل و بعد از ازدواج من در کلوب ایران مارکت سنتر تجارت الکترونیکی برنامه نویسی صفحه اصلی
پیوندهای ویلاگ
صبا
مهر
عاشقانه
آموزش الکترونیک
وبلاگ آموزش ایرانیان
آموزش آنلاین زبان انگلیسی
آموزش درس مبانی علم رايانه
پلکهای خیس
تقدیم به عاشقان
وبلاگی دیگر از ما
* آموزش برنامه نويسي ايرانيان *
عکسهای عاشقانه،عرفانی ومختلف
بزرگترين فروشگاه فيلم و سريال
یه روزایی ...
تجارت در ایران مارکت سنتر
خرس قهوه ای (مهسا)
پیوندهای روزانه
Username & Password For NOD 32
حق و صبر
فعال کردن ویندوز XP با استفاده از Windows_xp_Genuine_Advantage دانلود آن
کرمانشاه -راهنمای جامع -
شرکت نانو Nano Kurd
---- وبلاگ آموزش ایرانیان -----
حقوق زن
زندگی !
$$$$ تجارت بدون سرمایه $$$$
برترین وبلاگ شعر دنیا
کلاه برداران و معتبر ترین سایت
برترین تجارت جهان
تمام پیوندها
OUR COMPANY



Powered By
 
BLOGFA.COM

طراحی قالب

کدهای شخصی وبلاگ





Powered by WebGozar



 


 






Welcome to 700dolar.blogfa.com


در این وبلاگ می توانید اطلاعات مفیدی در مورد آموزش برنامه نویسی کامپیوتر و الکترونیک بیابید.


درس نهم _ چند ريختي (Polymorphism)

درس نهم _ چند ريختي (Polymorphism)

 

در اين درس به بررسي چند ريختي در زبان ‍C# خواهيم پرداخت. اهداف اين درس عبارتند از :

 

·         چند ريختي چيست؟

·         پياده‌سازي متد مجازي (Virtual Method)

·         Override كردن متد مجازي

·         استفاده از چند ريختي در برنامه‌ها

 

يكي ديگر از مفاهيم پايه‌اي در شي‌گرايي، چند ريختي (Polymorphism) است. با استفاده از اين ويژگي، مي‌توان براي متد كلاس مشتق شده پياده‌سازي متفاوتي از پياده‌سازي متد كلاس پايه ايجاد نمود. اين ويژگي در جايي مناسب است كه مي‌خواهيد گروهي از اشيا‌ء را به يك آرايه تخصيص دهيد و سپس از متد هر يك از آنها را استفاده كنيد. اين اشياء الزاما نبايد از يك نوع شي‌ء باشند. هرچند اگر اين اشياء بواسطه ارث‌بري به يكديگر مرتبت باشند، مي‌توان آنها را بعنوان انواع ارث‌بري شده به آرايه اضافه نمود. اگر هر يك از اين اشياء داراي متدي با نام مشترك باشند، آنگاه مي‌توان هر يك از آنها را جداگانه پياده‌سازي و استفاده نمود. در اين درس با چگونگي انجام اين عمل آشنا مي‌گرديد.

 

متد مجازي (Virtual Method)

using System;

 

public class DrawingObject

{

public virtual void Draw()

{

Console.WriteLine("I'm just a generic drawing object.");

}

}

مثال 1-9 كلاس DrawingObject را نشان مي‌دهد. اين كلاس مي‌تواند بعنوان كلاسي پايه چهت كلاسهاي ديگر در نظر گرفته شود. اين كلاس تنها داراي يك متد با نام Draw() مي‌باشد. اين متد داراي پيشوند virtual است. وجود كلمه virtual بيان مي‌دارد كه كلاسهاي مشتق شده از اين كلاس مي‌توانند، اين متد را override نماييد و آنرا به طريقه دلخواه پياده‌سازي كنند.

using System;

 

public class Line : DrawingObject

{

public override void Draw()

{

Console.WriteLine("I'm a Line.");

}

}

public class Circle : DrawingObject

{

public override void Draw()

{

Console.WriteLine("I'm a Circle.");

}

}

public class Square : DrawingObject

{

public override void Draw()

{

Console.WriteLine("I'm a Square.");

}

}

در مثال 2-9، سه كلاس ديده مي‌شود. اين كلاسها از كلاس DrawingObject ارث‌بري مي‌كنند. هر يك از اين كلاسها داراي متد Draw() هستند و تمامي آنها داراي پيشوند override مي‌باشند. وجود كلمه كليدي override قبل از نام متد، اين امكان را فراهم مي‌نمايد تا كلاس، متد كلاس پايه‌ خود را override كرده و آنرا به طرز دلخواه پياده‌سازي نمايد. متدهاي override شده بايد داراي نوع و پارامترهاي مشابه متد كلاس پايه باشند.

 

پياده‌سازي چند ريختي

using System;

 

public class DrawDemo

{

public static int Main( )

{

DrawingObject[] dObj = new DrawingObject[4];

dObj[0] = new Line();

dObj[1] = new Circle();

dObj[2] = new Square();

dObj[3] = new DrawingObject();

foreach (DrawingObject drawObj in dObj)

{

drawObj.Draw();

}

return 0;

}

}

 

مثال 3-9 برنامه‌اي را نشان مي‌دهد كه از كلاسهاي مثال 1-9 و 2-9 استفاده مي‌كند. در اين برنامه چند ريختي پياده‌سازي شده است. در متد Main() يك آرايه ايجاد شده است. عناصر اين آرايه از نوع DrawingObject تعريف شده است. اين آرايه dObj نامگذاري شده و چهار عضو از نوع DrawingObject را در خود نگه مي‌دارد.

 

سپس آرايه dObj تخصيص‌دهي شده است. به دليل رابطه ارث‌بري اين عناصر با كلاس DrawingObject، عناصر Line، Circle و Square قابل تخصيص به اين آرايه مي‌باشند. بدون استفاده از اين قابليت، قابليت ارث‌بري، براي هر يك از اين عناصر بايد آرايه‌اي جدا مي‌ساختيد. ارث‌بري باعث مي‌شود تا كلاسهاي مشتق شده بتوانند همانند كلاس پايه خود عمل كنند كه اين قابليت باعث صرفه‌جويي در وقت و هزينه توليد برنامه مي‌گردد.

 

پس از تخصيص‌دهي آرايه، حلقه foreach تك تك عناصر آنرا پيمايش مي كند. درون حلقه foreach متد Draw() براي هر يك از اعضاي آرايه اجرا مي‌شود. نوع شيء مرجع آرايه dObj، DrawingObject است. چون متد Draw() در هر يك از اين اشياء override مي‌شوند، از اينرو متد Draw() مربوط به هر يك از اين اشياء اجرا مي‌شوند. خروجي اين برنامه بصورت زير است :

I'm a Line.

I'm a Circle.

I'm a Square.

I'm just a generic drawing object.

متد override شده Draw() مربوط به هر يك از كلاسهاي مشتق شده در برنامه فوق همانند خروجي اجرا مي‌شوند. آخرين ط خروجي نيز مربوط به كلاس مجازي Draw() از كلاس DrawingObject است، زيرا آخرين عنصر آرايه شيء DrawingObject است.

 

خلاصه

در اين درس با مفهوم كلي چند ريختي آشنا شديد. چند ريختي امكاني است كه مخصوص زبان‌هاي برنامه‌نويسي شي‌گرا است و از طريق آن مي‌توان براي يك متد موجود در كلاس پايه، چندين پياده‌سازي متفاوت در كلاسهاي مشتق شده داشت

 

+ نوشته شده توسط اقبال سهرابی در 2002/3/29 و ساعت 1:17 AM | | >





 



 

درباره ما

BLOGTITLE

آموزش C# ، آموزش برنامه نویسی ، آموزش کامپیوتر ، آموزش الکترونیک ، و خرید برخی محصولات بسیار مهم و کاربردی .
راهنمایی جهت ایجاد وبسایت و معرفی بهترین سرویس دهنگان اینترنتی .
و همچنین معرفی بهترین سایتهای تجارت الکترونیکی در ایران.
با تشکر
برای مشکلات خودتان میتوانید با شماره های ضروری تماس بگیرید.
1-پزشکی(دکتر محسن) - 09189789116
2-موبایل(کمال بهرامی) - 09183744878
3-تعمیرات لوازم(فرزاد حسنی)-09183747489
با تشکر
- اقبال سهرابی -
مدیر وبلاگ


 
  Copyright © 2003 - 2009 http://700dolar.blogfa.com - All rights reserved -