نمایش نتایج 1 تا 4 از 4

نام تاپیک: سوال در مورد مفهوم واسط(interface)

  1. #1

    سوال در مورد مفهوم واسط(interface)

    سلام.
    خواستم بپرسم اصولا واسط ها چه کاربردی دارند؟. چه لزومی داره یه کلاس مشتق شده از کلاس مبنا از واسط کلاس مبنای خود استفاده کند در صورتی که واسط کلاس مبنا هیچ گونه پیاده سازی ندارد.

  2. #2

  3. #3
    Interface یک قانون رو تعریف میکنه. قانونی که اگه عضو اون شده باید تک تک به مفاد اون عمل کنید. باید تک تک اعضای اونو پیاده سازی کنید.
    فرض کنید Interface ی بنام ماشن داریم که شامل اعضایی بنام چرخ ، دنده ، چراغ و شاسی هست.
    حالا می خواهید برای ماشین بنز و پژو یک کلاس بسازید. از اونجایی که تمام این کلاسها دارای اعضای یکسانی هستند که حتما همه اونها رو دارند و باید داشته باشند ، با پشتیبانی کردن این کلاسها از اینترفیس ماشین ، مطمئن میشیم که این اعضا حتما برای این کلاسها پیاده سازی میشه و همه دارای این اعضا یکسان میشند.
    ولی چون ممکنه مشخصات چرخ ، دنده و چراغ هر کدام از این کلاسها متفاوت باشه ، می توان برای اعضا هر کدام از این کلاسها پیاده سازی متفاوتی داشت.

    امیدوارم گویا باشه و دوستان عزیز دیگرمون بخصوص ارژنگ خان و PC2ir اطلاعات و اصلاحیات تکمیلی رو در اختیارمون قرار بدهند.

  4. #4
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    علاوه بر توضیحاتی که دوستان عزیز ارائه داشتند (چه در این تاپیک و چه در تاپیک قبلی)...

    interface یک نوع داده (از نوع reference) است ولی بر خلاف دیگر انواع داده، از کلاس object مشتق نمیشود!
    یک کلاس میتونه از چندین interface پیروی کنه و تنها از یک کلاس به ارث برسه. در سی# ارث بری چندگانه ی کلاسها معنا و مفهومی ندارد و interface ها جایگزین مناسبی به نظر میرسند.

    interface ها گروهی از رفتارهای وابسته را توصیف میکنند که میتواند به هر کلاس یا ساختاری تعلق داشته باشد (منبع این جمله MSDN). یعنی هر کلاس با پیاده سازی (یا پیروی از) یک interface، رفتارهایی که توسط interface توصیف شده است را از خود بروز میدهد، بعبارتی، اگر کلاس Abc از اینترفیس IUia پیروی کند، کلاس Abc رفتارهایی که از آن انتظار داریم را بروز میدهد چون اینترفیس IUia را پیاده سازی کرده است. تقریبا چیزی شبیه به قانون که آقای hassan razavi گفتند.

    خواستم بپرسم اصولا واسط ها چه کاربردی دارند؟
    اینکه یک کلاس میتونه رفتارهای بخصوصی از خودش بروز بده تا در جاهای مختلف، کارایی لازم رو داشته باشه. مثلا اگر کلاس Abc اینترفیس Ia و Ib و Ic رو پیاده سازی کرده باشه، در اینصورت کلاس Abc میتونه بعنوان یک پارامتر به متدهای زیر ارسال بشه که این یکی از مهمترین مزایای اینترفیسهاست:

    void Dooo(Ia item)
    {
    ...
    }

    void Dooo2(Ib item)
    {
    ...
    }

    void Dooo3(Ic item)
    {
    ...
    }

    درست مثل روابط پدری-فرزندی در ارث بری چندگانه... مثلا در متد سوم، هر شیئی که اینترفیس Ic رو پیاده سازی کرده باشه، میتونه بعنوان یک پارامتر به آن متد ارسال بشه، میبینید که با وجود interface کارایی یک متد میتونه بالاتر باشه. حال اگر interface وجود نداشت و فقط میشد از تنها یک کلاس ارث بری کرد، دیگر چنین قابلیتی وجود نداشت!

تاپیک های مشابه

  1. طراحی interface سه بعدی
    نوشته شده توسط m_abasi2004 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: یک شنبه 20 مرداد 1387, 19:59 عصر
  2. یه سوال خیلی مبتدی!!! -Interface به چه دردی می‌خوره؟
    نوشته شده توسط Cheetah در بخش C#‎‎
    پاسخ: 1
    آخرین پست: سه شنبه 25 مرداد 1384, 18:29 عصر
  3. چرا نمیشه یه همچین interface رو طراحی کرد؟
    نوشته شده توسط مهدی فهمیده غلامی در بخش برنامه نویسی در Delphi
    پاسخ: 10
    آخرین پست: یک شنبه 01 خرداد 1384, 13:31 عصر
  4. کار با interface
    نوشته شده توسط مهدی فهمیده غلامی در بخش برنامه نویسی در Delphi
    پاسخ: 10
    آخرین پست: جمعه 30 اردیبهشت 1384, 15:24 عصر
  5. what is interface?
    نوشته شده توسط khafanovich در بخش برنامه نویسی در Delphi
    پاسخ: 7
    آخرین پست: چهارشنبه 26 شهریور 1382, 22:50 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •