مردم جهان به دو دسته تقسیم می شوند دسته اول کسانی که موافقند مردم جهان به دو دسته تقسیم میشن و دسته دوم کسانی که مخالفند مردم جهان به دو دسته تقسیم میشن

وبلاگ آموزش سی شارپ

سلام خدمت همه شما دوستان عزیز که به من لطف داشتید و وبلاگ رو دنبال کردین...از مباحثی که قصد داشتم مطرح کنم
File,delegate,event
هنوز باقی مونده که احتمالاً تو تابستون می گم...شاید هم نگفتم هیچ وقت!:D
به هر حال ادامه آموزش رو تو درس ساختمان داده می گم! به آدرس زیر:
http://datastructurekelas.blogspot.com
تا اطلاع ثانوی موفق باشید!:D

۱۳۸۸ شهریور ۳۱, سه‌شنبه

Override & Virtual

مطلبی که می خواستم بگم در مورد تابع virtual و override کردن بود!

از همون برنامه پایین! به این کد نگاه کنین:

class Kaaj : Dereakht
{
public virtual void derakht()
{
base.derakht();
Console.WriteLine("رشد به صورت طبقه طبقه برگهای سوزنی و همیشه سبز");
}
}

اگر ما درختی رو که می خوایم تعریف کنیم! از جنس کاج تعریف کنیم! مشکلی نداریم! اما اگه بگیم درخت اون وقته که خاصیت کاج براش نوشته نمیشه! یعنی خروجی برنامه فقط این میشه:
ریشه ، ساقه ، برگ
چرا این اتفاق میافته؟! واسه این که تابع کلاس کاج رو override نکردیم!

اما مال سرو رو نگاه کنین:


class Sarv : Kaaj
{
public override void derakht()
{
base.derakht();
Console.WriteLine("برگهای لطیف تر ، رشد منظم");
}
}
اگر سرو رو از جنس درخت تعریف کنیم خروجی برنامه این میشه:
ریشه ، ساقه ، برگ
برگهای لطیف تر ، رشد منظم

چرا این اینجوری میشه؟! برای این که تابع کلاسی رو که ازش سرو رو مشتق کردیم Virtual بوده و تابع سرو رو override کردیم! یعنی دیگه خاصیت های مال کاج رو نمایش نمیده! بلکه فقط خاصیت مربوط به سرو رو نمایش میده!
نکته مهم اینه که تا وقتی تابع کلاس پایه virtual نباشه نمی تونم تابع کلاس مشتق شده رو override کنیم!

مثل این هست که مثلاً بدن شما از نظر فیزیکی به پدرتون رفته! این 2تا حالت داره یا تابع بدن پدر شما Virtual نبوده واسه همین شما ناچراً ازش استفاده می کنین! یا این که Virtual بوده ولی شما می خواستید که بدنتون مثل پدرتون بشه!(البته بحث مربوط به استخوان بندی و دوران طفولیت داخل شکم مادره!( خنده )

اما در مورد اخلاقتون ، اخلاقتون به پدرتون رفته ولی رفتار های مربوط به خودتون رو هم دارین!
این یعنی این که متد اخلاق پدر شما Virtual بوده و شما ازش استفاده کردین و override کردینش و اخلاق های مربوط به خودتون رو هم بهش اضافه کردین!

البته این مثال خیلی دقیق نیست ولی کمک می کنه برای درک بیشتر!

۱۳۸۸ شهریور ۱۶, دوشنبه

نمونه برنامه وراثت

using System;
class Dereakht
{
public virtual void derakht()
{
Console.WriteLine("ریشه ، ساقه ، برگ");
}
}
class Tabrizi : Dereakht
{
public virtual void derakht()
{
base.derakht();
Console.WriteLine("بلند و دارای برگ های پهن");
}
}
class Kaaj : Dereakht
{
public virtual void derakht()
{
base.derakht();
Console.WriteLine("رشد به صورت طبقه طبقه برگهای سوزنی و همیشه سبز");
}
}
class Sarv : Kaaj
{
public override void derakht()
{
base.derakht();
Console.WriteLine("برگهای لطیف تر ، رشد منظم");

}
}
Blogged with the Flock Browser

۱۳۸۸ شهریور ۱۳, جمعه

وراثت

خب...! امروز می خوام وراثت رو بگم !

اوایل این بحث مثل علم پزشکی می مونه!

شما یک کلاس اصلی یا پدر رو ایجاد می کنید! فرزند یا فرزندان اون کلاس ، کلاس هایی هستن که خاصیتی رو از کلاس اصلی به ارث می برن یا به زبون دیگه مشتق میشن! حالا اگه از اون کلاس های مشتق شده ما فرزند یا فرزندان دیگه ای رو مشتق کنیم این فرزندان هم خاصیت پدر خودشون رو دارن و هم خاصیت کلاس اصلی رو دارن!

مثل این می مونه! اپر پدربزرگ شما رو کلاس اصلی فرض کنیم(بی حترامی نباشه یه وقت) پس پدر شما میشه کلاس فرزند و شما هم میشید فرزند کلاس فرزند! شما هم خصوصیت هایی از پدرتون رو به ارث می برید! هم خصوصیت هایی از پدرتون رو و هم خصوصیاتی که مربوط به خودتون هست رو دارین!

یکی از مهم ترین چیز هایی که باید بدونیم اینه که هیچ وقت خصوصیت ها از شما به پدرتون به ارث نمیرسهخنده بلکه همیشه از پدرتون بهتون به ارث میرسه!

حالا یه مثال می زنم فردا هم با برنامه یه مثال می زنم که خوب متوجه بشید!

ما می خوایم فاییده ی وراثت رو بدونیم!

ما می خوایم برای یک شرکت باغداری (حالا مثلاً، گیر ندهکل کل ) یه برنامه بنویسیم که توش 100 نوع درخت تعریف شده باشه!
حالا به جای این که بیایم برای هر 100 نوع بگیم که ریشه داره ساقه داره شاخه داره برگ داره میام یه بار تو یه کلاس اصلی می گیم که درخت ریشه و ساقه و شاخه و برگ داره!
حالا که می خوایم مثلاً نوع تبریزی درخت رو مثال تعرف کنیم می گیم که درخته و مثلاً ارتقاعش هم زیاده و برگ هاش هم پهنه! یعی علاوه بر خصوصیات کلاس اصلی خصوصیات مربوط به خودش رو هم داره!
بعد می خوایم درخت کاج رو تعریف کنیم! می گیم که درخته و برگ های سوزنی داره و در تمام مدت سال برگهاش سبز هستن! و مثلاً به صورت طبقه طبقه رشد پیدا می کنه!
حالا وقتی که بخوایم درخت سرو رو معرفی کنیم! دوباره نمیایم بگیم که تمام اون چیز های بالا رو در موردش! پس چی کار می کنیم؟! به جای این که بگیم درخته! میگیم کاجه و مثلاً برگهاش لطفیف تره و منظم رشد پیدا می کنه!

این هم مقدمات بحث وراثت Smile

برای این که خستگیتون هم در بره 2تا عکس براتون می ذارم!دسته گل
این عکس ها برای اینه که متوجه بشید منظورم از طبقه طبقه و منظم رشد کردن چیه:پیرمرد
کاج: http://www.botaniewebsite.nl/araucaria/a...hylla1.jpg
سرو: http://upload.wikimedia.org/wikipedia/co...tricta.jpg
Blogged with the Flock Browser