نسخه آزمایشی

آموزش تصویری رابط ها در سی شارپ

رابط ها (Interface ها در سی شارپ)

***در تاریخ ۶ مهر ۹۲ ویدئوی جدیدی با کیفیت بهتری آپلود شد و لینک ها اصلاح شدند***

آموزش تصویری رابط ها در سی شارپ

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

interface نشان می دهد که می خواهید یک شی به چه نحو مورد استفاده قرار گیرد و به این که چگونه پیاده سازی می شود کاری ندارد.به عبارت دقیقتر از اینترفیس ها می توان تعبیر به نوعی قرار داد کرد. مهمترین قابلیت interface ها این است که به ما امکان می دهد تا اسم متد را کاملا از پیاده سازی آن جدا کنید.در مفاهیم کلی شیء گرایی، interface ها یکی از بنیادی ترین و کلیدی ترین مفاهیمی هستند که در صورت به کاربردن صحیح آن،  بسیار مفید واقع می‌شوند. یکی از مثالهای کاربردی و ملموس درباره interface ها  رابطهای کاربر گرافیکی (GUI) هستند. کاربر تنها با این رابط (مثلا یک فرم) سروکار دارد و کاری به نحوه عملیات پشت پرده آن ندارد و اعمال تغییرات در پیاده‌سازی interface کاربر را تحت تاثیر قرار نمی‌دهد.به عبارتی کاربر از چزئیات  پیاده سازی آن اطلاعی ندارد………….

توصیه می کنم که حتما ویدئو را ببنید و پیشاپیش از نظرات و انتقادات  و پیشنهاد های شما متشکریم

۱۳ نظر برای "آموزش تصویری رابط ها در سی شارپ"


  1. sharp گفت:

    سلام.
    ضمن تشکر از آموزش های مفیدتون. ویدئوی مروبط به oop6 خطای زیر رو میده. لطفا بررسی کنید.
    خطا : ۰
    توضیح : Could not connect to server.

  2. محمد گفت:

    سلام .
    ممنون از آموزش های خوبتون !
    فقط کاش میشد کیفیت صدا رو توی آموزش ها بالا ببرید .
    تو بعضی قسمت ها خیلی صدا نامفهومه !

    با تشکر …

  3. مهدی گفت:

    سلام. این فیلم ادامه آموزش های سی شارپ خودتونه؟

    • سید حامد گفت:

      سلام
      ما توی سایت دو نوع آموزش سی شارپ رو دنبال می کنیم.
      اولی:
      مخصوص دانشجویان مهندسی نرم افزار هست و خود زبان سی شارپ رو آموزش میده که البته مدرسش هم برادرم هست.
      دومی:
      مخصوص موتور بازی سازی یونیتی که مدرسش خودم هستم.

      والسلام
      سید

  4. عاطف گفت:

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

  5. سید عبداله محمودزاده گفت:

    متشکر از نظر و توجه شما.
    اینترفیس به طور خلاصه همه جا کاربرد داره 😉
    خب شما ببنید خیلی از کارها و کتابخانه های مایکروسافت هم از این مفهوم استفاده کرده.مثلا چطور در یک حلقه ی foreach اشیاء مختلف با نوع های مختلف در یک ساختمان داده مثلا لیست پیوندی ، یا لیست پیمایش می شوند درحالی که اشیاء متمایز هستند.
    خب ساده است مایکروسافت یک اینترفیس تعریف کرده مثلا IEnumerable خب حالا کلاس های مختلف از این اینترفیس پیاده سازی می کنند.این میشه یک قرار داد بین همه ی کلاس های مختلف.حالا هر چند تا شی از کلاس های مختلف ساخته بشه و در یک لیست قرار بگیره براحتی قابل شمارش و پیمایش هست چرا چون کلاس اون شی این قرارداد(اینترفیس) رو پیاده سازی کرده است.

    در اینترفیس ما فقط کلیات را بیان می کنیم و هر کلاس که از اینترفیس ارث بری می کنه این کلیات را به صورت جزئی پیاده سازی می کنه.

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

    اما اگر از یک Interface استفاده می شد آنگاه برای ایجاد این تغییر مشکلی نبود زیرا کلاس یا برنامه ما به پیاده سازی در پشت صحنه آن اینترفیس کاری ندارد و از آن خبری ندارد و هر تغییری صورت بگیرد از برنامه ما پنهان است. پس تغییرات درون آن تاثیری بر رفتار و عملکرد برنامه ما(برنامه وابسته) نخواهد داشت و این برنامه از آن تغییرات بی خبر است.

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

    یک مثال چرا سخت افزار ها روز به روز در حال رشد هستند و نرم افزار ها هم همین طور.خب هر نرم افزاری برای اجرا به سخت افزار خود نیاز دارد.وقتی سخت افزاری بهینه تر می شود یعنی در پیاده سازی دستورات آن تغییراتی به وجود آمده پس از این پس باید نرم افزار های نوشته شده هم دوباره باید تغییر کنند حال آنکه این طور نیست.مثلا CPU ها چرا همواره در حال رشد هستند و هیچ اخلالی در نرم افزار ها پیش نمی آید به این علت که یک واسط (ISA=instruction set abstraction) نوشته می شود که هر تغییر در لایه سخت افزار صورت گرفت از دید نرم افزار پنهان باشد.به عبارتی نقش مرز استقلال دو لایه را دارد.این خیلی خوب شدهه است دیگه .حالا نرم افزار هایی تولید می شود که نگرانی از تغییرات سخت افزاری ندارند. و سخت افزار هایی تولید می شوند که نگرانی از نرم افزار ها ندارند.

ارسال دیدگاه

نام (*)
پست الکترونیکی (*)
وبسایت