مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

tabesh73

عضویت از 1399/02/08

سوال در مورد چندریختی در دوره مقدماتی سی شارپ

  • دوشنبه 8 اردیبهشت 1399
  • 09:41
تشکر میکنم

سلام استاد مدائنی

خیلی ممنون از آموزش خوبتون

یه سوال داشتم

در دوره مقدماتی سی شارپ برای ساخت ماشین حساب اومدید از چندریختی استفاده کردید

ICalculate calc = new Calculate()

چرا مستقیم از خود کلاس Calculate استفاده نکردید ؟

من خودم مستقیم از Calculate استفاده کردم و درست کار میکرد

فقط دلیل استفاده شما از چندریختی رو متوجه نشدم

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

psymhosein

عضویت از 1399/02/11

  • یکشنبه 14 اردیبهشت 1399
  • 01:44

سلام دوست عزیز 

بله قطعا کار می کنه

ولی دلیل ما برای استفاده از اینترفیس و چند ریختی چیز دیگری است

برای مثال شما یک اینترفیس برای ارسال ایمیل تعریف می کنید که یک متد ارسال در آن تعریف شده است و هر کلاسی از آن ارث بری کند موظف است آن متد را ایمپلیمنت کند

حاللا یک کلاس می سازیم به نام GmailSender  و یک کلاس به نام YahooSender و در هر دو کلاس از اینترفیس ارث بری می کنیم و متد ارسال ایمیل را کامل می کنیم

حالا برای استفاده و نمونه سازی ابتدا از GmailSender  استفاده می کنیم

IEmailSender EmailSender = new GmailSender()

و برای ارسال ایمیل از این اینستنس ساخته شده استفاده می کنیم

ولی فرضا گوگل ما را تحریم می کند و ما دیگر نمی توانیم از آن استفاده کنیم

در صورتی که کد را به این شکل پیاده سازی کرده باشیم تنها کاری که انجام می دهیم تغییر اینستنس است

IEmailSender EmailSender = new YahooSender ()

با این کار بدون تغییر زیاد کد ما می تونیم این مشکل رو کنترل کنیم

در کل مباحثی مربوط به چند ریختی یا تزریق وابستگی و غیره باعث میشن که در آینده توسعه پروژه راحت تر بشه

و حرف آخر هم این که اگر کد شما کار کنه خیلی خوبه ولی مهم اینه که شما تمیز کد بزنی، از معماری و دیزاین پترن ها استفاده کنی، اصول شی گرایی و سالید رو رعایت کنی تا پروژه شما یک پروژه تمیز و قابل توسعه باشه

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)