
```
WEBVTT

00:00.000 --> 00:00.240
خیلی خوب.

00:00.240 --> 00:02.970
پس در این ویدیو به کلیدواژه Sealed نگاهی می‌کنیم.

00:02.970 --> 00:08.550
کلیدواژه sealed به شما اجازه می‌دهد که مطمئن شوید که یک کلاس نمی‌تواند از آن ارث برداری شود.

00:08.550 --> 00:15.300
و بنابراین در این مثال که ما کلاس شخص、کارمند、شخص و مدیر را داشتیم.

00:15.300 --> 00:15.810
خوب.

00:15.810 --> 00:19.860
پس برای ساده‌سازی، فقط می‌خواهم به شما نشان دهم که چگونه از آن استفاده کنید.

00:19.860 --> 00:25.200
و سپس یک مثال واقعی خوب را به شما نشان می‌دهم که به شما در درک اینکه چرا باید از آن استفاده کنید، کمک می‌کند.

00:25.200 --> 00:25.530
خوب.

00:25.530 --> 00:26.040
پس شما از کلیدواژه sealed درست قبل از کلیدواژه class استفاده می‌کنید.

00:26.040 --> 00:30.690
پس اینجا sealed را استفاده می‌کنید.

00:30.690 --> 00:32.610
بدین ترتیب شما کلاس را از ارث بری مسدود می‌کنید.

00:32.610 --> 00:37.110
حالا اگر به پایین بروید، می‌بینید که مدیر نمی‌تواند از کارمند ارث ببرد.

00:37.110 --> 00:42.630
می‌گوید که مدیر نمی‌تواند از نوع sealed کارمند ارث ببرد.

00:42.900 --> 00:47.490
پس کارمند اکنون sealed است.

00:47.700 --> 00:50.820
بنابراین هیچ کلاس دیگری نمی‌تواند از کارمند ارث ببرد.

00:50.820 --> 00:55.500
و واقعاً همین است.

00:55.710 --> 00:57.630
این کاری است که کلیدواژه sealed انجام می‌دهد.

00:57.630 --> 00:59.430
حالا چرا باید از آن استفاده کنید؟

00:59.430 --> 01:00.780
به نظر من سوال بهتری است.

01:00.780 --> 01:03.240
بیایید به یک مثال نگاه کنیم.

01:03.240 --> 01:04.680
می‌خواهم کدی آماده کنم و این کار را بسیار آسان‌تر می‌کند.

01:04.680 --> 01:09.300
خوب.

01:09.300 --> 01:10.020
پس اکنون من یک کلاس به نام حساب دارم که یک شماره حساب、یک موجودی、یک سازنده دارد، می‌توانید واریز کنید

01:18.630 --> 01:20.520
و می‌توانید برداشت کنید، خوب.

01:20.520 --> 01:23.790
و سپس یک زیرکلاس به نام حساب پس‌انداز داریم.

01:23.790 --> 01:26.550
اما این یکی sealed است.

01:26.550 --> 01:33.510
پس در حساب پس‌انداز برخی جزئیات اضافی راجع به نحوه کار برداشت تعریف می‌کنیم.

01:33.510 --> 01:35.250
و تقریباً همین است.

01:35.250 --> 01:36.090
درست است؟

01:36.090 --> 01:39.570
پس این یک کلاس sealed است.

01:39.570 --> 01:45.300
چرا اکنون باید حساب پس‌انداز را sealed کنیم و به طور کلی چرا باید از کلیدواژه sealed استفاده کنیم؟

01:45.300 --> 01:51.570
پس دلایلی برای استفاده از کلیدواژه sealed عبارتند از: اول، یکپارچگی طراحی.

01:51.570 --> 01:58.980
پس sealed کردن یک کلاس اطمینان می‌دهد که طراحی آن نهایی است و نمی‌تواند از طریق وراثت تغییر کند.

01:59.310 --> 02:06.480
این زمانی بسیار حیاتی است که می‌خواهید رفتار خاصی را تحمیل کنید و تغییراتی که ممکن است طراحی را به خطر بیندازد، را منع کنید.

02:06.480 --> 02:07.320
یک مثال در برنامه بانکی ما، کلاس حساب پس‌انداز است که دارای قوانین خاص برداشت است

02:07.320 --> 02:14.400
که نباید توسط هیچ کلاس مشتق دیگری تغییر یابد.

02:14.400 --> 02:18.870
دوم، امنیت است، پس جلوگیری از وراثت بیشتر می‌تواند امنیت را با جلوگیری از رفتارهای ناخواسته

02:18.870 --> 02:25.830
یا سوء استفاده افزایش دهد.

02:25.830 --> 02:27.870
با sealed کردن یک کلاس، شما اطمینان می‌دهید که عملکرد حیاتی ثابت و امن باقی می‌ماند.

02:27.870 --> 02:33.750
به عنوان مثال.

02:33.900 --> 02:34.590
با sealed کردن کلاس حساب پس‌انداز، شما اطمینان می‌دهید که هیچ تغییر غیرمجاز یا تصادفی نمی‌تواند انجام شود

02:34.590 --> 02:41.130
در نحوه پردازش برداشت، که امنیت عملیات حساب را حفظ می‌کند.

02:41.130 --> 02:46.830
سپس عملکرد وجود دارد.

02:46.830 --> 02:52.200
کلاس‌های sealed می‌توانند گاهی اوقات منجر به بهینه‌سازی‌های عملکرد شوند.

02:52.200 --> 02:58.170
زمان اجرا می‌تواند برخی فرضیات پیرامون کلاس‌های sealed انجام دهد، مانند اینکه نیاز به بررسی مجوزها در کلاس‌های مشتق وجود ندارد، که می‌تواند منجر به اجرای سریع‌تر شود.

03:03.720 --> 03:10.710
پس در برنامه‌های با عملکرد بالا، sealed کردن کلاس‌هایی که قرار نیست توسعه پیدا کنند، می‌تواند به بهبودهای جزئی در عملکرد منجر شود

03:10.710 --> 03:18.150
با کاهش بار مربوط به فراخوانی‌های متد مجازی و جلوگیری از سوء استفاده‌های ممکن.

03:18.150 --> 03:19.770
پس sealing یک کلاس از آن جلوگیری می‌کند. تا به عنوان یک کلاس پایه استفاده شود، که می‌تواند مهم باشد اگر کلاس

03:26.940 --> 03:29.670
طراحی نشده باشد که با گسترش در نظر گرفته شود.

03:29.670 --> 03:34.410
این از سوء استفاده‌های بالقوه یا خطاهای ناشی از گسترش نادرست کلاس جلوگیری می‌کند.

03:34.410 --> 03:40.260
پس اگر حساب پس‌انداز، به عنوان مثال، برای گسترش با انواع حساب‌های اضافی

03:40.260 --> 03:47.160
یا رفتارهایی طراحی نشده باشد، sealing آن اطمینان می‌دهد که توسعه‌دهندگان به اشتباه سعی در گسترش نادرست آن نداشته باشند.

03:47.160 --> 03:53.220
پس این‌ها برخی از دلایل خوب هستند، به اعتقاد من، تا ببینیم که چرا کلیدواژه sealed می‌تواند مفید باشد.

03:53.220 --> 03:57.030
شما ممکن است هر از چندگاه کلمه sealed را در حال توسعه عمومی ببینید.

03:57.030 --> 03:59.340
پس این برای شما خوب است که بدانید.

03:59.340 --> 03:59.940
خیلی خوب.

03:59.940 --> 04:01.380
پس برای این ویدیو همین است.

04:01.380 --> 04:02.280
در ویدیوی بعدی می‌بینمت.
```
