PDA

View Full Version : سوال: interface



corona
پنج شنبه 22 اسفند 1387, 10:59 صبح
سلام به همگی برنامه نویسان سایت برنامه نویس .
دوستان من در مورد واسط ها یکم گیج شدم . مطلب به اندازه کافی براش خوندم . خیلی ها میگین وقتی قرار باشه به صورت تیمی کار بشه خیلی این واسط ها بدرد می خورن . سوال من در مورد استفاده واسط ها در برنامه نویسی تیمی . مثلا وقتی قراره هر قسمت رو یک برنامه نویس بنویسه می شینن با هم interface ها رو طراحی می کنن و بعد هر کدام جداگانه یک کلاس تعریف می کنن و اون interface رو به ارث می برن و توابع اونو تعریف می کنن و بعد وقتی قرار شد این واسط ها که توسط افراد مختلف تعریف شده رو در کلاس اصلی برنامه به کار ببریم کافیه که از کلاسهایی که برنامه نویسان مختلف نوشتن و واسط ها رو در اونها پیاده کردن به ارث ببریم (البته باز با توجه به اینکه وراثت چندگانه نداریم این چجوری ممکنه ؟). تا اینجا اون دیدیه که من از واسط دارم و نمیدونم درسته یا نه ؟ اگه درسته خوب این وسط من نیاز به وجود interface رو درک نمی کنم ، چون که هر کدوم از اونا باید تو یک کلاس پیاده سازی بشن ، پس ما چرا بیایم یک واسط تعریف کنیم و بعد باز بخوایم اونا رو تو یک کلاس پیاده سازی کنیم ؟ چرا نیایم مستقیم کلاسهایی برای پیاده سازی توابع مورد نظرمون نگیریم . شرمنده زیادی حرف زدم . یکی لطف کنه منو از ابهام در مورد این واسط ها و کاربرد واقعیشون نجات بده . ممنون

mtaboy
پنج شنبه 22 اسفند 1387, 11:33 صبح
هر کلاس میتونه از n تا اینتر فیس به ارث بره....

corona
پنج شنبه 22 اسفند 1387, 12:36 عصر
خوب این قبول ، ولی من میگم این ربطش به برنامه نویسی تیمی چیه ! n تا اینترفیس رو هم که به ارث ببره بازم باید همه اونا رو پیاده سازی کنه . خوب چرا همه اون اینترفیس ها رو نیایم تو خود کلاس تعریف کنیم و اصلا اینجا دیگه به اینترفیس چه نیازی میشه ؟

mtaboy
پنج شنبه 22 اسفند 1387, 13:55 عصر
http://www.csharptuning.blogfa.com/ اینجا توقسمت 28 و 29 در مورد اینتر فیس ها توضیح کاملی داده

alireza_tavakol
پنج شنبه 22 اسفند 1387, 23:32 عصر
چيزي که به ذهن من ميرسه را با يک مثل واست توضيح ميدهم

فرض کن ميخواهيم يک سيستم دانشگاه رو پياده سازي کنيم.متشکل از اشيائ دانشجو ، استاد ، و ...

حالا مدير پروژه مياد و يک interface به اسم human تعريف ميکنه شامل متد ADD از اين به بعد
برنامه نويس شماره يک قرار کلاس دانشجو را پياده سازي کنه . پس بايد متدد ADD رو واسه ثبت نام دانشجو overload کنه
و برنامه نويس شماره دو قرار کلاس استاد را پياده سازي کنه. پس بايد متدد ADD رو واسه استخدام استاد overload کنه

پس تا اينجا توي دو کلاس جداگانه به يک استاندارد رسيديم (مشترک بودن نام ADD در متديها) . توي زمان پشتيباني اين استاندارد ها خيلي به ما کمک خواهد کرد ولي اگه interface اوليه توسط مدير پروژه تعريف نشده بود ممکن بود برنامه نويس اول از کلمه ADD استفاده کنه و برنامه نويس دوم از کلمه Insert و برنامه نويس سوم از کلماتي مانند build ، make ، create ,...

اميد وارم تونسته باشم جوابت رو بدم

corona
سه شنبه 27 اسفند 1387, 08:53 صبح
alireza_tavakol (http://barnamenevis.org/forum/member.php?u=17033) جان من هنوز لینکی که mtboy داده رو نخوندم . با دید فعلیم میخوام به جواب شما ، جواب بدم . ببینید خوب در چنین موردی که شما میخوای به یک نظام قانونمند توی کلاسهایی که برنامه نویسای شما تعریف می کنند برسیم مدیر میتونه به جای تعریف واسطhuman بیاد یک کلاس Abstract به نام human بگیره و تابع Add رو در داخل اون تعریف کنه ، و برنامه نویساش اون کلاس رو به ارث ببرن و اینجوری دیگه برنامه نویسای ما مجبور میشن اون تابع Add رو override کنن . پس اینجا هم من نیازی به وجود interface رو درک نمی کنم .

mohsen_csharp
سه شنبه 27 اسفند 1387, 09:24 صبح
مدیر میتونه به جای تعریف واسطhuman بیاد یک کلاس Abstract به نام human بگیره و تابع Add رو در داخل اون تعریف کنه ، و برنامه نویساش اون کلاس رو به ارث ببرن و اینجوری دیگه برنامه نویسای ما مجبور میشن اون تابع Add رو override کنن . پس اینجا هم من نیازی به وجود interface رو درک نمی کنم .

دوست عزیز اگر مدیر بیاد کلاس های Abstract تعریف کنه اونوقت دیگه ارث بری چندگانه نداریم ولی اگه بیاد واسط تعریف کنه ، میتونیم ارث بری چندگانه داشته باشیم.