
---

**WEBVTT**

00:00.080 --> 00:04.880
الان شاید برات سؤال پیش بیاد که «چه زمانی» و «چرا» ارث‌بری سازنده‌ها مفیده.

00:04.880 --> 00:09.020
دلیل شماره‌ی یک: اطمینان از مقداردهی کلاس پایه.

00:09.020 --> 00:17.360
در مثال قبلی‌مون، کلاس پایه‌ی Person ویژگی‌هایی مثل name و age داره
که باید با فراخوانی base(name, age) مقداردهی بشن.

00:17.360 --> 00:26.990
با این کار، مطمئن می‌شیم این فیلدها قبل از اجرای ادامه‌ی سازنده‌ی Employee
به‌درستی مقداردهی شدن، و از تکرار کد جلوگیری می‌کنیم.

00:26.990 --> 00:30.110
منطق مقداردهی name و age داخل کلاس Person متمرکز شده.

00:30.110 --> 00:41.840
اگر قرار بود این مقداردهی جداگانه توی هر کلاس فرزند انجام بشه،
باعث تکرار کد و احتمال بروز خطا می‌شد.

00:41.840 --> 00:49.610
و اگر بعداً لازم می‌شد منطق مقداردهی تغییر کنه،
نگهداری اون کد سخت‌تر و پرخطاتر می‌شد.

00:49.610 --> 00:55.610
دلیل بعدی، حفظ «ناورایی» یا همون **invariant**‌هاست.

00:55.610 --> 01:03.500
سازنده‌ی کلاس پایه می‌تونه بررسی‌های خاصی مثل اعتبارسنجی یا محدودیت‌ها رو اجرا کنه.

01:03.500 --> 01:07.550
مثلاً اگر کلاس Person بررسی می‌کرد که مقدار age منفی نباشه،
همه‌ی کلاس‌های فرزند هم به طور خودکار از اون منطق استفاده می‌کردن.

01:07.550 --> 01:09.680
و بعد می‌رسیم به قابلیت گسترش‌پذیری (Extensibility).

01:09.680 --> 01:17.630
کلاس‌های فرزند می‌تونن فرآیند مقداردهی رو گسترش بدن
و پارامترها و فیلدهای خودشون رو هم اضافه کنن،

01:17.630 --> 01:23.720
در حالی که همچنان از سازنده‌ی کلاس پایه برای فیلدهای مشترک استفاده می‌کنن.

01:23.720 --> 01:30.470
پس می‌بینی که این ویژگی واقعاً کاربردیه —
هم باعث صرفه‌جویی در زمان و حجم کد می‌شه،

01:30.470 --> 01:33.950
و هم باعث می‌شه در پروژه‌های پیچیده‌تر درک بهتری از روند کار داشته باشی.

---
