به فصل رابط‌ها خوش آمدید.
در این ویدیو به این می‌پردازیم که رابط چیست و چگونه به نظر می‌رسد، و همچنین چرا رابط‌ها اهمیت دارند.
خوب.
بیایید با این آغاز کنیم که رابط چیست.
خوب، یک رابط در C# نوع مرجعی است که قرارداد روش‌ها و ویژگی‌ها (properties) را تعریف می‌کند
که یک کلاس باید پیاده‌سازی کند.
این فقط شامل امضاهای روش‌ها، ویژگی‌ها، رویدادها یا ایندکس‌ها است، نه پیاده‌سازی خودشان.
پس چرا باید از رابط‌ها استفاده کنید؟
خوب، دلیل اول، انتزاع است.
پس رابط‌ها مشخص می‌کنند که یک کلاس چه روش‌هایی باید پیاده‌سازی کند
بدون اینکه مشخص کنند که چگونه باید پیاده‌سازی شوند.
دلیل دوم چندشکلی (polymorphism) است که به کلاس‌های مختلف اجازه می‌دهد به عنوان نمونه‌هایی از نوع رابط
در نظر گرفته شوند.
پس ما در فصل‌های بعدی بیشتر به چندشکلی خواهیم پرداخت.
سپس کاهش وابستگی (decoupling) وجود دارد که وابستگی‌ها را بین کلاس‌ها کاهش می‌دهد،
کد را ماژولارتر و استفاده از آن را آسان‌تر می‌کند.
و ما همچنین به عمق بیشتری در مورد کاهش وابستگی خواهیم پرداخت.
سپس قابلیت استفاده مجدد وجود دارد.
پس رابط‌ها اطمینان حاصل می‌کنند که کلاس‌های مختلف می‌توانند از روش‌های مشترک استفاده کنند که قابلیت استفاده مجدد کد را افزایش می‌دهد.
سپس تست‌پذیری وجود دارد.
پس این امکان را برای تست واحد فراهم می‌کند، با اجازه دادن به پیاده‌سازی‌های تقلبی از رابط‌ها.
و یک فصل کامل مختص به توسعه مبتنی بر تست و تست واحد با یانیک در فصل‌های بعدی داریم.
بیایید به یک مثال عملی نگاه کنیم.
پس من در یک پروژه جدید هستم که آن را اپلیکیشن رابط‌ها نامیده‌ام.
و اولین چیزی که می‌خواهم به شما نشان دهم این است که کد یا نحو یک رابط چگونه است.
پس شما با کلیدواژه public شروع می‌کنید، سپس کلیدواژه interface و سپس نام رابط خود را می‌دهید.
پس می‌بینید که با I بزرگ شروع می‌کنم، سپس حرف بزرگ برای کلمه‌ای که می‌خواهم استفاده کنم یا نامی که می‌خواهم برای آن رابط استفاده کنم.
پس I بیانگر این است که این یک رابط خواهد بود.
و می‌توانید ببینید که سبز است.
پس این یک سبز روشن است.
این مانند یک سبز فیروزه‌ای برای کلاس‌ها و برای رابط‌ها است.
شما همیشه خواهید دید که دست‌کم در ویژوال استودیو،
آن‌ها با این رنگ سبز روشن نمایش داده می‌شوند.
پس هر وقت این را دیدید می‌دانید که یک رابط است، یا هر وقت که I را در ابتدای نام یک کلاس یا نام چیزی دیدید،
پس باید یک رابط باشد.
پس به اینجا می‌رویم و مشخص می‌کنیم چه روش‌هایی باید در کلاسی که این رابط را پیاده‌سازی می‌کند باشد.
برمی‌گردیم به مثالی که قبلاً با حیوانات استفاده کردیم.
پس من این رابط IAnimal را دارم که در آن می‌گویم
به عنوان مثال، یک روش به نام MakeSound وجود دارد که هیچ چیزی باز نمی‌گرداند.
بنابراین void است.
سپس نام متد را دارم، پرانتزهای باز و بسته و همچنین یک نقطه‌ویرگول.
پس می‌بینید که در اینجا هیچ آکولادی وجود ندارد.
بنابراین هیچ پیاده‌سازی برای این روش به طور مستقیم در رابط وجود ندارد.
من می‌توانم در رابط‌ها این کار را انجام دهم.
می‌توانم بگویم که می‌دانید، این روش پیاده‌سازی ندارد.
اما هر کسی که این رابط را پیاده‌سازی می‌کند باید این روش را به روش خود پیاده‌سازی کند.
و این همان چیزی است که من قبلاً درباره قابلیت استفاده مجدد و همچنین داشتن یک قرارداد مشترک صحبت می‌کردم.
پس یک نمونه دیگر would be eat.
خوب.
پس این یک مثال دیگر از آنچه که یک روش می‌تواند به نظر برسد است.
می‌بینید که دوباره یک نوع بازگشتی وجود دارد.
نوع بازگشتی می‌تواند چیز دیگری باشد.
لازم نیست که void باشد.
می‌تواند یک رشته (string) باشد، می‌تواند یک عدد صحیح (int) باشد، می‌تواند هر چیزی باشد.
و ما می‌توانیم پارامترهایی هم داشته باشیم.
پس می‌توانید بگویید که حیوان باید چه چیزی بخورد.
پس غذا به عنوان مثال، string food می‌تواند هر چیزی باشد که یک حیوان باید بخورد.
و می‌توانیم بگوییم که در پیاده‌سازی باید کاری انجام شود.
و قطعاً می‌توانید بگویید که خوب، eat یک رشته باز می‌گرداند.
به عنوان مثال، سگ خورده‌است یا گربه خورده‌است یا چیزی شبیه به این، اما من فقط می‌خواهم آن را void بگذارم
چون فقط باید یک بیانیه باشد که چیزی را روی صفحه نمایش دهد.
خوب.
پس این فقط مثالی از نحوه نگارش رابط بود، شامل رویه نام‌گذاری و شامل اعلامیه‌های متد بدون پیاده‌سازی ما.
راستی، در مورد رویه نام‌گذاری، IAnimal یک مثال است.
اما اگر این IAnimalFood بود، به عنوان مثال، پس من حرف اول در کلمه بعدی را نیز بزرگ می‌کردم.
پس ما هنوز از حالت camelCase اینجا استفاده می‌کنیم، خوب؟
پس بیایید ببینیم که چگونه می‌توان یک رابط را در یک کلاس پیاده‌سازی کرد در ویدیوی بعدی میبینمتان. ```