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

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

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

۱۳۸۸ دی ۲۴, پنجشنبه

Interface یا اعضای واسط

درست شد
سلاملکم!
قبل از هر چیزی می خواستم تشکر کنم از کسایی که نظر می دن و روح ما رو شاد می کنن! هرچی نظرات بیشتر باشه روح ما شاد تر میشه!:D
یه آقا یا خانومی هم تو اولین پستم خواسته بودن که بگم چرا سی شارپ! اما از اونجایی که به معرفی زبان های برنامه نویسی نمی پردازم بهتره بود یک آدرس وبلاگ یا ای میل می دادن که توضیح بدم!
ولی در کل C# برای این که از نظر شی گرایی زبان خیلی قویی هست و در زمینه WEB APP هم خیلی خیلی قوی عمل می کنه و همین طور زبان آسونیه از نظر دستوراتش خیلی زبان مفیدیه گرچه که هنوز خیلی ها با VB.Net حال می کنن!
interface چیه؟!
یه چیزی تو مایه های کلاس های Abstract هست که همه اعضاعش public هستن بی چون و چرا
حالا چراش رو برو از خود کسی که طراحیش کرده بپرس!:D
فاییده اصلی interface اینه که ارث بری چندگانه (Multi inheritance) رو برای ما ممکن می کنه که خیلی فاییده داره (دقیقاً نمی دونم فاییده اش چیه...ولی مفیده دیگه...ایشالا وقتی حرفه ای شدیم می فهمیم فاییده اش چیه) که این کار از عهده کلاس های معمولی و کلاس های گنگ(Abstract ) بر نمیاد
توی interface نمیشه field تعریف کرد! ولی انواع event,indexer,property,method رو میشه تعریف کرد!
event چیه؟!
بعداً می رسیم بهش....عجله نکن!
از خاصیت های Interface اینه که چی؟!
؟!
آهان..ببخشید...از خاصیت های interface اینه که هر کلاسی که ازش مشتق بشه...وظیف داره یعنی وظیفه داره که تمامیه event,indexer,property,method هایی رو که تو interface وجود داره رو برای خودش تعریف کنه!
و این موضوع حتماً باید اتفاق بیفته....اگر تعریف نشه error میده که خیلی خوشایند نیست برای انسان!
تا یادم نرفته بگم که یک interface رو میشه از یک interface مشتق گرفت

بعضی وقتا...ما احتیاج داریم که یکی از متد ها یا ویژگی ها یا حادثه ها رو پنهان کنیم از کلاس هایی که از interface مشتق شدن (البته این کار عین خودزنیه تو تفاوت Abstract و Interface میگم چرا) به هر حال! باید اسم interface interface رو موقع تعریف ضابطه درج کنیم که پنهان بشه
برای دست رسی به این عضو پنهان شده کافیه که به صورت cast اسم اینترفیس رو بیاریم
مثلاً در تعریف اعضا:(ishape اسم interface هست)
int ishape.shapeshifter(int val)
{
...
..
.
}
مثلاً در Main
ishape tmp = (ishape)myshape;

برخلاف متدهای Abstract که باید اونها رو override می کردیم تا بتونیم ازشون استفاده بکنیم متد ها و چیزهایه دیگه interface رو باید پیاده سازی بکنیم...یعنی با همون نام مثلاٌ متد و مقدار برگشتی و غیره! به لطف یکی از بچه های دانشگاه که من رو از جهل مرکب در اورد(آن کس که نداند و نداند که نداند...درجهل مرکب ابدالدهر بماند!)من فکر می کردم می دونم جریان اینترفیس رو...ولی به لطف ایشون فهمیدم که نه خیر...در جهل مرکب دارم به سر می برم!...خلاصه متوجه شدیم که اگر اینترفیس ها رو پاک کنیم و وراثت ها رو هم بگیریم...همچنان برنامه کار می کنه! علتش هم اینه که کلاس هایی که از اینترفیس ها مشتق میشن وابستگی به اینترفیس ندارن و فقط باید و باید حتماً تمامی متدها و غیره ی اینترفیس رو پیاده سازی کنن! اما در صورتی که از کلاس مشتق بگیریم یا Abstract ها به خاطر این که باید override بکنیم متدها و غیره رو وابستگی ایجاد میشه بین کلاس پدر(یا مادر) و کلاس های فرزند!
این هم مثال اینترفیس!:
interface IMyInterface
{
void MethodToImplement();
}

class InterfaceImplementer : IMyInterface
{
static void Main()
{
InterfaceImplementer iImp =
new InterfaceImplementer();
iImp.MethodToImplement();
}

public
void MethodToImplement()
{
Console.WriteLine("MethodToImplement() called.");
}
}




Blogged with the Flock Browser

هیچ نظری موجود نیست:

ارسال یک نظر