WEBVTT

00:00.110 --> 00:06.650
خب بیایم به کلمه‌ی polymorphism نگاه کنیم و مفهومش رو توی کدنویسی مخصوصاً تو C# درک کنیم.

00:06.650 --> 00:09.710
چون قبلاً یه بخش از polymorphism رو دیدیم.

00:09.710 --> 00:11.480
ولی حالا می‌خوایم عمیق‌تر بریم سراغش.

00:11.480 --> 00:13.400
خب polymorphism یعنی چی؟

00:13.400 --> 00:18.290
polymorphism یه کلمه‌ی یونانیه که معنی «چند شکل بودن» می‌ده.

00:18.290 --> 00:24.890
توی برنامه‌نویسی یعنی یه Interface یا یه Method بتونه بسته به شیئی که باهاش کار می‌کنه، رفتار متفاوتی داشته باشه.

00:24.890 --> 00:28.700
به polymorphism این‌طوری فکر کن.

00:28.700 --> 00:30.800
فرض کن یه کنترل از راه دور همه‌کاره داری.

00:30.800 --> 00:34.070
این کنترل می‌تونه چند تا دستگاه مختلف رو کنترل کنه.

00:34.070 --> 00:41.030
مثل یه تلویزیون، یه DVD Player و یه سیستم صوتی.

00:41.030 --> 00:47.540
حتی اگه دکمه‌ی Play رو بزنی، ممکنه باعث شه تلویزیون یه فیلم پخش کنه،

00:47.540 --> 00:52.400
یا DVD Player یه ویدیو رو شروع کنه، یا سیستم صوتی موزیک پخش کنه.

00:52.400 --> 00:59.540
همون دکمه، همون متد، ولی بسته به دستگاهی که کنترل می‌کنی، عملکردش فرق می‌کنه.

00:59.540 --> 01:02.990
نکته‌ی اصلی اینه: یه Interface ولی چند تا پیاده‌سازی.

01:02.990 --> 01:08.030
یعنی یه تابع یا متد می‌تونه با اشیای مختلف کار کنه.

01:08.030 --> 01:13.700
و نحوه‌ی اجرای واقعی‌ش بستگی به اون شیئی داره که در اون لحظه بهش ارجاع داده می‌شه.

01:13.700 --> 01:19.640
مثلاً اگه چند نوع حیوان مختلف داشته باشی، هرکدوم صدای متفاوتی درمیارن.

01:19.640 --> 01:25.760
با polymorphism می‌تونی متد makeSound رو برای هر حیوان صدا بزنی، و اون حیوان صدای مخصوص خودش رو تولید می‌کنه.

01:25.760 --> 01:28.040
خب چرا اصلاً باید از polymorphism استفاده کنیم؟

01:28.040 --> 01:31.490
اول از همه به خاطر انعطاف‌پذیری.

01:31.490 --> 01:33.770
polymorphism بهت اجازه می‌ده کد منعطف‌تر و قابل‌استفاده‌مجدد بنویسی.

01:33.770 --> 01:38.210
می‌تونی متدهایی بنویسی که با انواع مختلفی از objectها کار کنن، بدون این که دقیق بدونی نوعشون چیه.

01:38.210 --> 01:44.900
و بعد هم نگهداری کد ساده‌تر می‌شه.

01:44.900 --> 01:45.650
یعنی چی؟

01:45.650 --> 01:48.140
یعنی وقتی بخوای کدت رو تغییر بدی یا گسترش بدی، راحت‌تره.

01:48.140 --> 01:51.680
می‌تونی نوع‌های جدیدی از objectها اضافه کنی،

01:51.680 --> 01:59.420
فقط کافیه مطمئن شی که اون‌ها با Interface یا کلاس پایه‌ی موردانتظار سازگارن، بدون اینکه لازم باشه کد اصلی رو تغییر بدی.

01:59.420 --> 02:02.390
و این خیلی مهمه،

02:02.390 --> 02:07.400
چون بعضی وقت‌ها کنترلی روی کلاس والد یا Interface نداری.

02:07.400 --> 02:09.410
ولی باز کدت ساده‌تر می‌شه.

02:09.410 --> 02:12.230
polymorphism باعث می‌شه بتونی کد مرتب‌تر و منسجم‌تری بنویسی.

02:12.230 --> 02:19.250
چون می‌تونی با انواع مختلف objectها یه‌جور رفتار کنی، بدون اینکه لازم باشه برای هرکدوم جداگانه بنویسی.

02:19.250 --> 02:19.850
دقیقاً همین‌طور.

02:19.850 --> 02:27.470
پس در جمع‌بندی، polymorphism یه مفهوم قدرتمنده که باعث می‌شه متدها با objectهای مختلف کار کنن.

02:27.470 --> 02:28.250
و این یعنی چی؟

02:28.250 --> 02:35.030
یعنی کدت انعطاف‌پذیر، قابل‌استفاده‌مجدد و قابل‌نگهداری‌تر می‌شه،

02:35.030 --> 02:42.260
چون یه Interface می‌تونه برای یه سری عملکرد کلی استفاده بشه، در حالی که عمل خاصش بستگی به موقعیت یا نوع دقیق object داره.

02:42.260 --> 02:45.110
خب، همین بود برای این ویدیو.

02:45.110 --> 02:46.880
تو ویدیوی بعدی می‌بینمت.

02:46.880 --> 02:47.750
فعلاً خداحافظ.
