خیلی خوب، پس بیایید یک قدم جلوتر برویم و از وراثت سازنده با کلاس‌های مشتق چندگانه استفاده کنیم.
در ویدیوی قبلی خود، این مثال از کارمند که یک شخص است را داشتیم.
اکنون، یک کارمند می‌تواند موقعیت‌های مختلفی داشته باشد و هر یک از این موقعیت‌ها می‌تواند به یک دسته‌ای مانند مدیر یا توسعه‌دهنده یا منابع انسانی و غیره تقسیم شود.
خیلی خوب.
بنابراین من یک کلاس جدید به نام مدیر ایجاد می‌کنم که همچنین یک کارمند خواهد بود.
پس این یک لایه دیگر از وراثت است.
پس به نوعی چند سطحی است.
و به وضوح نیاز به افزودن سازنده داریم.
بنابراین می‌خواهم سازنده را ایجاد کنم و می‌توانید ببینید که سازنده برای من به همراه تمام اطلاعات پایه‌ای که نیاز داریم ایجاد شده است.
پس ما باید نام، سن، عنوان شغلی و کارمند را به آن بدهیم.
و حالا می‌توانیم ویژگی‌های بیشتری به مدیر اضافه کنیم.
برای مثال، چند نفر را که آن مدیر مدیریت می‌کند.
بنابراین این می‌تواند اندازه تیم باشد، برای مثال.
که می‌تواند ویژگی خاصی برای مدیر باشد.
حالا می‌توانید جزئیات بیشتری به مدیر در این مرحله اضافه کنید که ما همچنین اندازه تیم را می‌گذرانیم.
پس می‌بینید که ID (شمارنده) به طور خودکار این کار را انجام داده است.
بنابراین اینجا می‌بینید که شناسنامه کارمند و بعد از آن اندازه تیم را به آن می‌دهیم.
و در سازنده.
بنابراین در داخل آکولادها، ما هر اندازه تیمی را که به مدیر داده‌ایم به ویژگی اندازه تیم مربوطه اختصاص می‌دهیم، تا به درستی نمایش داده و ذخیره شود.
و حالا علاوه بر این، من از یک متد دیگر که اطلاعات مدیر را نمایش می‌دهد استفاده می‌کنم.
و آنچه نمایش اطلاعات مدیر انجام می‌دهد، نمایش اطلاعات کارمند است.
به علاوه اینکه در مورد اندازه تیم به ما اطلاعات می‌دهد.
و به عنوان مثال اطلاعات کارمند.
بله، اینجا خوب است.
پس می‌گویم اندازه تیم را به دو نقطه‌گذاری می‌زنم.
و سپس در داخل آکولادها، ویژگی اندازه تیم را اضافه می‌کنم، خوب.
پس حالا زمانی که ما یک شی از مدیر خود را ایجاد می‌کنیم، خواهیم دید که تمام این موارد چگونه به هم می‌پیوندد.
ما جو داریم.
و حالا یک مدیر به نام کارل اضافه می‌کنیم.
و کارل قرار است یک مدیر جدید باشد.
و حالا باید تمام این اطلاعات را همراه کنیم تا بتوانیم نام و غیره را بگذرانیم.
بیایید ببینیم چه اتفاقی می‌افتد وقتی جو و اندازه تیم را بگذاریم.
متأسفانه، این کار نمی‌کند.
امیدوار بودم که چیزی با C-sharp 12 تغییر کرده باشد، جایی که فقط تمام ویژگی‌های جو را که مرتبط با مدیر است، بپذیرد.
پس ما باید نام را بگذرانیم.
پس من به او می‌گویم کارل.
من یک نام به او می‌دهم، سنی معادل 45.
او قرار است یک مدیر باشد و شناسنامه کارمندی او چیزی دیگر خواهد بود.
و اندازه تیم او قرار است، بگذارید بگوییم، هفت باشد که می‌گویند اندازه تیم ایده آلی است که یک مدیر می‌تواند مدیریت کند.
پس همین طور داریم.
ما مدیر کارل را داریم.
و بیایید از کارل استفاده کنیم تا نه فقط اطلاعات کارمند، بلکه اطلاعات مدیر را نمایش دهیم.
پس همه جزئیات آنجا هستند.
پس بیایید بیانیه جو را از اینجا حذف کنیم.
چون ما فقط می‌خواهیم کارل داشته باشیم و ببینیم چه اتفاقی با این سازنده چند سطحی می‌افتد.
پس می‌بینید که سازنده شخص فراخوانی می‌شود.
سپس سازنده کارمند فراخوانی می‌شود.
سپس جزئیات مربوط به نام را نشان می‌دهیم.
خوب، در مورد شخص.
سپس جزئیات مربوط به کارمند را نشان می‌دهیم و سپس اندازه تیم را نشان می‌دهیم.
بنابراین جزئیات مربوط به مدیر.
پس می‌بینید که این‌ها سه لایه هستند که الان ما فراخوانی می‌کنیم.
و ما به‌طور مؤثری بیشتر از آنچه را که در مورد وراثت آموخته‌ایم، به کار می‌بریم.
پس ما متد والد را در داخل متد فرزند فراخوانی می‌کنیم.
و ما همین کار را اینجا انجام می‌دهیم.
پس ما متد والد را فراخوانی می‌کنیم، نه متد اجدادی، بلکه متد والد که به طور داخلی
متد اجدادی را برای نمایش اطلاعات مدیر فراخوانی می‌کند.
حالا، شما به‌طور منطقی می‌توانید آن را به هر طریقی که می‌خواهید گسترش دهید، مانند ویژگی‌های قابل توجه تر.
اما نکته جالب اینجاست که ما می‌بینیم آنچه که ما انجام دادیم هم در چندین سطح و هم با کلاس‌های مشتق چندگانه کار می‌کند.
پس این فقط نشان می‌دهد که شما می‌توانید این کار را به اندازه‌ای که می‌خواهید پیچیده کنید.
و چرا مهم است که یک روش کاملاً واضح و تمیز برای ساخت کلاس پایه وجود داشته باشد، زیرا هرکسی که
کلاس پایه را بنا می‌کند، پایه‌ای برای کدهای دیگر ما می‌سازد.
پس حالا ممکن است درک کنید چرا مهم است که وقتی یک کلاس پایه ایجاد شد، شما نمی‌بایست تنها آن را ویرایش کنید.
اگر چندین کلاس مشتق وجود داشته باشد، زیرا در این صورت شما احتمالاً باید کلاس‌های مشتق را نیز ویرایش کنید.
زیرا اگر حالا بگویم خوب، ما تنها سن و نام را برای یک شخص نداریم، بلکه همچنین رنگ مو هم داریم.
پس بیایید بگوییم که public string یا آدرس، از آنجایی که ID به من می‌دهد آدرس را.
پس بیا از آن استفاده کنیم.
پس حالا می‌خواهم آدرس را نیز داشته باشم.
پس شما می‌بینید که آدرس به پارامترها در سازنده اضافه شده و همچنین در اینجا به آن اختصاص داده شده است.
اما حالا وقتی این کار را انجام می‌دهم می‌بینید که باید کارمند را تغییر دهم.
و سپس باید.
خب، مدیر فعلاً شاکی نیست.
اما وقتی اینجا را تغییر دهم، سپس احتمالاً نیاز خواهیم داشت که مدیر را نیز تغییر دهیم.
پس شما می‌بینید که این باعث بروز انواع خطاها می‌شود.
و در مورد ما این آسان است زیرا ما خودمان کنترل همه چیز را داریم.
ما کلاس شخص، کلاس کارمند و کلاس مدیر را کنترل می‌کنیم.
اما اگر ما تنها کنترل کلاس کارمند را داشته باشیم؟
و حالا ما از این تغییر در کلاس شخص آگاه نبودیم، و ناگهان کد ما دیگر کار نمی‌کند
دیگر.
که به همین دلیل است که گاهی اوقات وقتی به‌روزرسانی‌ها اتفاق می‌افتد، ناگهان افزونه‌هایی که شما استفاده می‌کنید دیگر کار نمی‌کنند
چون انتظار داشتند که یک کلاس به شکلی خاص باشد یا یک تکه کد به شکلی خاص کار کند.
اما با به‌روزرسانی که انجام شده، این تغییر کرده است و ناگهان API تغییر کرده است.
پس به‌طور اساسی، نقاط دسترسی که می‌توانید داده‌ها را از یک وب‌سایت دریافت کنید، به‌عنوان مثال، تغییر کرده است
و ناگهان شما دیگر داده‌ها را دریافت نمی‌کنید و اپلیکیشن شما دیگر هیچ چیزی نمایش نمی‌دهد و بی‌فایده است.
خوب.
و حالا باید بررسی کنید که چه چیزی تغییر کرده است.
و شاید مدارک به‌روزرسانی نشده باشد و هنوز نمی‌دانید که چه چیزی را باید تغییر دهید.
پس شما باید کمی اشکال‌زدایی کنید یا به عمق کد خود فرو بروید.
خوب، پس این فقط برای نشان دادند دلیل اینکه چرا ممکن است دردسر فراهم شود، بود که مجبور به به‌روزرسانی همه چیز باشید.
خوب، پس فکر می‌کنم این باید ایده خوبی به شما داده باشد و چیزهایی برای به خاطر سپردن.
پس زنجیره‌سازی سازنده یعنی سازنده‌ها در کلاس‌های مشتق باید سازنده کلاس پایه مربوطه را فراخوانی کنند تا اطمینان حاصل شود که
سازنده پایه به درستی اولیه‌سازی می‌شود.
سپس ما ترتیب اجرا را داریم.
سازنده کلاس پایه قبل از سازنده کلاس مشتق اجرا می‌شود.
این اطمینان می‌دهد که کلاس پایه به طور کامل اولیه‌سازی شده است قبل از آنکه هر گونه اولیه‌سازی خاص کلاس مشتق انجام شود.
سپس ما اولیه‌سازی سفارشی داریم، بنابراین کلاس مشتق می‌تواند منطق اولیه‌سازی خاص خود را اضافه کند و
پارامترهایی را به کار ببندد که عملکردی را که کلاس پایه ارائه می‌دهد گسترش دهد در حالی که کد اولیه‌سازی مشترک را دوباره استفاده می‌کند.
و سپس ما انعطاف‌پذیری و استفاده مجدد داریم.
پس وراثت سازنده انعطاف‌پذیری را در استفاده مجدد از کد ترویج می‌دهد که به شما اجازه می‌دهد تا سلسله‌مراتب شیء پیچیده بسازید
در حالی که کد تمیز و قابل نگهداری را حفظ می‌کند.
پس می‌توانم بگویم که برای این ویدیو اینجا تمام است.
به زودی در ویدیوی بعدی می‌بینمتان. ```