Interface چیست ؟

frameworknewlogo

frameworknewlogo

در طول روز به قراردادها و موارد بسیاری بر می خوریم که به قوانین بی چون و چرایی برای همه تبدیل شده ، برای مثال فرض کنید وقتی سوار یک ماشین می شوید انتظار دارید بدون اینکه کسی چیزی به شما بگوید ، با فشار دادن پدال سمت راست ماشین حرکت کند این به این معنی است که شماهمیشه انتظار دارید که همه شرکت های خودرو سازی پدال گاز را سمت راست پای شما قرار بدهند و به همین ترتیب مواردی از این دست . بعضی از این قراردادها به قدری روزمره شده که به شکلی یک استاندارد شده مثل همین پدال گاز که اگر شرکتی بجای سمت راست پدال گاز رو سمت چپ قرار بده باید اول به همه اشخاصی که اون ماشین رو می خرن آموزش بده که آقا پدال گاز وسطیه . و از اونجا که این کار غیر ممکنه و درصورت وجود همچین ماشینی احتمالا با استقبال عمومی روبرو نمیشه شرکت ها قراردادهایی رو برای راحتی کار خودشون و مشتری ها وضع کردن . معمولا این قراردادها برای مشتری یک خروجی رو به ارمغان میاره ولی شرکت های مختلف برای انجام اون کارو دادن خروجی به مشتری از روش های مختلفی استفاده می کنن . برای مثال یک شرکت برای اینکه سرعت ماشین رو بالا ببره از پدال مکانیکی استفاده کنه . درحالی که شرکت دیگه ممکنه از یک پدال الکترونیک بهره ببره درست مثل ترمزهای دیسکی و ترمزهای ABS . که در عمل تفاوت دارن اما نهایتا هر دو ترمز ، ماشین رو برای راننده نگه می دارن .

در دنیای برنامه نویسی هم موضوع به همین شکل هست . قراردادهای موجود با نام Interface شناخته میشن و معمولا برای تمام موارد پرکاربرد یک اینترفیس وجود داره ، از یک اینترفیس میشه استفاده های بسیار زیادی کرد . که جلوتر یک نمونه میارم . اما نکته ای که در اینترفیس وجود داره اینه که اینترفیس صرفا یک شکل ظاهریه یعن اینکه به شما ( برنامه نویس ) میگه که من باید به این شکل باشم و این خود برنامه نویس هست که با دانشی که داره به اشکال مختلفی اون اینترفیس رو پیاده سازی می کنه .

اینترفیس های موجود در .net Farmework در همه نسخه ها با کلمه I شروع میشن و یک نماد به شکل interfaceicon کنار اونها هست. توجه کنید که کلاس شما می تونه N تا اینترفیس داشته باشه . برای مثال اینترفیس IComparable  برای مقایسه استفاده میشه. اگر بخواهید دو تا چیز رو با هم مقایسه کنید ( بهتره ) که این اینترفیس رو implement کنید ( البته می تونید این کار رو هم نکنید و خودتون یک متد بنویسید ) این مقایسه می تونه به هر منظوری استفاده شه مثلا من در برنامه خودم از این مقایسه برای عمل Sort استفاده می کنم و شما این مقایسه رو برای بدست آوردن عدد کوچک تر و بزرگتر انجام میدید . اما هر دوی ما یک اینترفیس رو پیاده سازی کنیم .

نکته ای که در پیاده سازی اینترفیس ها وجود داره اینه که باید درصورت وجود یک Base Class که کلاس شما از اون به ارث رفته ، اسم کلاس باید اول بیاد و بعد اسم اینترفیس های شما ( تعداد اینترفیس ها بسته به نیاز شما نامحدود است ). برای اطمیناناز اینکه همه متدهای یک اینترفیس را پیاده سازی می کنید از خود Visual Studio کمک بگیرید برای اینکار وقتی اسم اینترفیس رونوشتید روی اون یکبار کلیک کنید تا یک منو باز بشه ( همچنین می تونید روی اسم اینترفیس برید و کلید میانبر Shift+Alt+F10 رو بزنید ) از منویی که باز میشه روی Implement Interface کلیک کنید .

Interface Implement Menu

Interface Implement Menu

بعد از این کار بصورت خودکار هر متدی که در کلاس خاص وجود داشته باشه برای شمانوشته میشه و شما فقط باید داخل متدها رو تکمیل کنید . بهشکل زیر دقت کنید که دو اینترفیس در اون پیاده سازی شده ( البته کد توی اون ننوشتم و صرفا برای نمایش نام متدها رومی بینید ) و البته از یک کلاس بالادستی هم به ارث رفته .

کلاس InterFaceTest از baseClassToInherit به ارث رفته و دو اینترفیس را پیاده سازی کرده است

کلاس InterFaceTest از baseClassToInherit به ارث رفته و دو اینترفیس را پیاده سازی کرده است

اینترفیس ها کاربردهای زیادی دارند که برنامه شما رو تحت پوشش قراربده . توصیه می کنم در صورت وجود یک اینترفیس خاص ، از همون استفاده کنید و خودتون اقدام به نوشتن متد اضافه نکنید. اینطوری برنامه شما بیشتر دید شیء گرایی پیدا می کنه .

3 Responses to Interface چیست ؟

  1. وحید says:

    ممنون دیدکاه خوبی دادید

  2. محمد says:

    سلام
    خوب بود مرسی

  3. asghar says:

    masalesh bemoon hal dad dash damet garm :)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: