WEBVTT

00:00.170 --> 00:00.890
خوش اومدید دوباره.

00:00.890 --> 00:06.830
access modifierتوی این ویدیو می‌خوام درباره دو 
 صحبت کنم که تا حالا استفاده کردیم.

00:06.830 --> 00:11.720
و هنوز در موردشون صحبت نکردم چون اول می‌خواستم همه چیزهای دیگه رو قبلش توضیح بدم.

00:11.720 --> 00:12.920
با این حال، 

00:12.920 --> 00:18.860
من به طور کلی توضیح داده بودم که چطور کار می‌کنن، ولی می‌خواستم این دو کلمه کلیدی

00:18.860 --> 00:24.980
 رو با یه مثال خاص نشون بدم تا بهتر درک کنید این دو تا کلمه کلیدی رو private و public

00:24.980 --> 00:25.730
پس موضوع اینه،

00:25.730 --> 00:32.900
بنابراین مسئله این است که اصلاح‌کننده‌های دسترسی private و publicبیشتری وجود دارند که 
 آنها داخلی هستند.

00:32.900 --> 00:34.910
پس access modifier internal.

00:34.910 --> 00:39.440
ولی ما تقریبا ازشون استفاده کردیم، درسته؟

00:39.440 --> 00:43.070
ما از public استفاده کردیم و از private هم استفاده کردیم.

00:43.070 --> 00:45.710
public پس 
 برای زمانیه که می‌خواید چیزی بیرون کلاس هم قابل دسترسی باشه،

00:45.710 --> 00:51.590
و private وقتی که نمی‌خواید بیرون کلاس قابل دسترسی باشه.

00:51.590 --> 00:54.110
می‌خواید بیرون کلاس هم قابل دسترسی باشه یا نه.

00:54.110 --> 01:00.980
پس می‌تونیم به numberOfCars دسترسی داشته باشیم، ولی نمی‌تونیم به brand از کلاس Program دسترسی پیدا کنیم.

01:00.980 --> 01:09.830
numberOfCarsپس اینجا می‌بینید می‌تونم از 
 public static استفاده کنم چون یه متغیر 
ه، ولی اگه بخوام

01:09.830 --> 01:11.330
اون رو private کنم،

01:11.330 --> 01:18.590
privateمثلا اگه 
Car باشه، فقط داخل همین کلاس خاص 
 قابل استفاده است.

01:18.620 --> 01:19.640
خارج از اون نمی‌شه استفاده کرد.

01:19.640 --> 01:21.410
قابل دسترسی نخواهد بود.

01:21.410 --> 01:25.370
inaccessibleپس میگه 
 به دلیل سطح حفاظتیش.

01:25.370 --> 01:30.260
public به privateپس ما سطح حفاظت رو از 
 افزایش دادیم.

01:30.290 --> 01:37.970
حالا سطوح حفاظت بیشتری هم هستن مثل protected و internal و protected internal، ولی ما

01:37.970 --> 01:42.830
inheritanceتا زمانی که به 
 نگاه نکنیم، نیازی بهشون نداریم، که این موضوعی هست که بعدا بررسی خواهیم کرد.

01:42.830 --> 01:43.550
بعدا.

01:43.550 --> 01:51.620
propertiesولی فعلا فقط حواستون باشه که باید 
 رو public تعریف کنید تا

01:51.620 --> 01:55.400
بتونید از بیرون بهشون دسترسی داشته باشید، مگر اینکه نخواهید.

01:55.400 --> 02:02.630 
properties رو public  ولی معمولا همیشه  
  می‌کنید و رو
 member variables یا backing fields

02:02.630 --> 02:03.410
private نگه می‌دارید.

02:03.410 --> 02:11.720
و برای متدها، وقتی می‌خواید متدها فقط داخل یک کلاس خاص قابل دسترسی باشن،

02:11.720 --> 02:13.100
می‌کنید.privateاون‌ها رو 
 
02:13.100 --> 02:18.410
و اگر می‌خواید از همه کلاس‌ها قابل دسترسی باشه، اون می‌کنید.publicرو 
 
02:18.410 --> 02:22.010
publicو معمولا کاری که انجام می‌دید اینه که متد رو 
 می‌کنید.

02:22.010 --> 02:29.450
publicیعنی کلمه کلیدی 
 رو به متد اضافه می‌کنید، مثل اینجا 
void drive.

02:29.450 --> 02:32.660
member variablesو 
نگه می‌دارید.private تون رو 
 
02:32.660 --> 02:35.210
تقریبا همینه که می‌خواستم در موردش بگم.

02:35.240 --> 02:38.630
حالا بیایم به مثال خودمون نگاه کنیم.

02:38.630 --> 02:45.230
static numberOfCars را
privateستی، منطقی نیست که این  رو 
 کنیم، چون اون موقع فقط می‌تونستیم

02:45.230 --> 02:47.150
Carاز داخل خود کلاس 
 بهش دسترسی داشته باشیم.

02:47.150 --> 02:50.720
Programولی ما واقعا می‌خوایم از فایل 
 بهش دسترسی داشته باشیم.

02:50.720 --> 02:52.820
ش می‌کنم.public پس دوباره 

02:52.820 --> 02:56.300
driveولی اگر به متد 
 خودمون نگاه کنیم، درسته؟

02:56.300 --> 02:59.420
این متد drive، اگه بخوام drive رو

02:59.420 --> 03:08.540
car3.driveمثلا 
private کنم و اون رو 
 کنم، دیگه نمی‌تونم این خط کد رو اجرا کنم.

03:08.540 --> 03:10.070
ولی فعلا اجراش می‌کنیم.

03:10.070 --> 03:11.660
ببینیم چه اتفاقی میفته.

03:11.660 --> 03:15.290
میگه: "I'm an A3 and I'm driving."

03:15.290 --> 03:19.760
حالا اگه به کلاس Car برم، می‌بینید که دلیلش اینه که publicه.

03:19.760 --> 03:23.000
referenceراستی، یه 
 هم اضافه کرده چون میگه: "هی، این متد استفاده شده."

03:23.000 --> 03:29.810
پس حالا می‌بینیم که میگه، خوب، یه reference داخل کلاس App/Program.cs هست.

03:29.810 --> 03:34.400
car.driveو بعد در خط 11 از عبارت 
 استفاده می‌کنه.

03:34.400 --> 03:35.420
خوبه.

03:35.420 --> 03:44.360
privateولی اگه بخوام این متد رو 
drive کنم، فقط می‌تونم 
 رو از داخل سازنده خودم یا

03:44.360 --> 03:51.470
هر متد دیگه‌ای که داخل کلاس Car هست استفاده کنم، ولی از خارج کلاس Car دیگه نمی‌تونم استفاده 

03:51.470 --> 03:53.510
privateه کنم چون الان .

03:53.510 --> 03:55.040
می‌بینید که اینجا این خطا رو دریافت می‌کنم.

03:55.040 --> 03:57.800
inaccessibleمیگه 
 به دلیل سطح حفاظتیش.

03:57.800 --> 04:01.460
پس حالا حتی نمی‌تونم این خط رو اجرا کنم چون مستقیما میگه خطا وجود داره.

04:01.460 --> 04:04.130
دیگه قبولش نمی‌کنه.

04:04.130 --> 04:06.110
خب، چرا اصلا بخواید این کارو انجام بدید؟

04:06.110 --> 04:12.830
access modifier کاربرد عملی اینه که 
ها برای مدیریت نحوه دسترسی به کلاس‌ها و اعضای کلاس

04:12.830 --> 04:14.930
تو پروژه‌های نرم‌افزاری حیاتی هستن.

04:14.930 --> 04:22.070
با کنترل دسترسی، می‌تونید وضعیت داخلی آبجکت‌ها رو محافظت کنید، وابستگی بین

04:22.070 --> 04:25.190
کامپوننت‌ها رو کاهش بدید و نگهداری پروژه رو راحت‌تر کنید.

04:25.190 --> 04:31.700
به طور خلاصه، کار کردن روی پروژه در آینده و اضافه کردن ویژگی‌های جدید به

04:31.700 --> 04:32.390
پروژه رو ساده‌تر می‌کنه.

04:32.390 --> 04:35.630
پس بله، تقریبا همینه برای این ویدیو.

04:35.630 --> 04:36.530
می‌بینمتون در ویدیوی بعدی.
