WEBVTT

00:00.080 --> 00:00.920
خوش برگشتید.

00:00.920 --> 00:04.550
در این ویدیو می‌بینیم چرا این موضوع اهمیت دارد.

00:04.550 --> 00:10.130
propertyچرا استفاده از 
 و کپسوله‌سازی مهم است.

00:10.130 --> 00:15.500
قبلاً گفتم کلی عبارت لامبدا داشتیم و این چیزها.

00:15.500 --> 00:21.050
فعلاً نگرانش نباشید، چون می‌خواهیم این قسمت را ساده کنیم.

00:21.500 --> 00:22.940
چطور ساده کنیم؟

00:22.940 --> 00:23.720
بذارید نشون بدم.

00:23.720 --> 00:28.430
قراره از set و آکولاد استفاده کنیم.

00:28.430 --> 00:35.300
اینجا مشخص می‌کنیم مقدار brand چطور ست بشه.

00:35.300 --> 00:37.220
بذارید دوباره انجام بدم.

00:37.220 --> 00:38.330
اینطوری.

00:38.330 --> 00:40.490
این کد پیش‌فرضه.

00:40.490 --> 00:43.280
بذارید اینطوری بنویسم.

00:43.280 --> 00:45.470
هست.propertyاین کل 
 
00:45.470 --> 00:46.550
شروع میشه.brandاز 

00:46.550 --> 00:48.260
این بخش property هست.

00:48.260 --> 00:53.480
private stringاولی یعنی اگر بخوای بگیریش، 
 بالا رو برمی‌گردونم.

00:53.480 --> 00:58.760
و اگر بخوای ست کنی باید از منطقی که داخل آکولاد می‌ذارم رد بشی.

00:59.780 --> 01:00.290
خوب.

01:00.290 --> 01:02.180
بیایید یک منطق تعریف کنیم.

01:02.180 --> 01:10.640
مثلاً چک کنم اگر string خالی یا null بود، یعنی value.

01:10.640 --> 01:19.310
اون وقت روی کنسول بنویسم "چیزی وارد نکردی".

01:19.310 --> 01:26.150
و اگر کسی این کارو کرد، نمی‌تونیم برند ماشین رو ذخیره کنیم.

01:26.150 --> 01:28.130
پس می‌گیم چیزی وارد نکردی.

01:28.130 --> 01:35.900
هر وقت مقدار brand خالی باشه، میگه چیزی وارد نکردی.

01:35.900 --> 01:42.740
پس میگم اگه اینطور بود، برند رو با مقدار پیش‌فرض ست کن.

01:46.910 --> 01:48.290
وگرنه.

01:48.290 --> 01:55.640
توی else، برند میشه هر چی کاربر وارد کرده.

01:56.210 --> 01:57.710
خب چی شد؟

01:57.710 --> 01:58.880
بیایید نگاه کنیم.

01:58.880 --> 02:06.650
هر وقت مقداری به brand بدیم، میگه آیا خالی هستی؟

02:06.650 --> 02:13.730
اگر مقداری که ست میشه خالی یا null باشه...

02:14.630 --> 02:22.130
می‌گیم "چیزی وارد نکردی" روی کنسول.

02:23.360 --> 02:29.870
و مقدار brand رو می‌ذاریم "default value".

02:29.870 --> 02:32.180
و بعد ادامه می‌دیم.

02:36.890 --> 02:40.400
nullولی اگر خالی یا 
 نبود.

02:40.400 --> 02:46.520
brandیعنی رشته واقعی بود، همونو توی 
 ذخیره می‌کنیم.

02:50.720 --> 02:53.510
پس در این متغیر عضو، باشه.  

02:53.510 --> 02:59.420
حالا بیاییم جلو و واقعاً از پراپرتی استفاده کنیم و طبق دستورش پیش بریم.  

02:59.420 --> 03:07.340
مساوی باشه با . Audi.Dot.brandاینجا میگم
console.readLine

03:07.340 --> 03:11.030
یعنی می‌خوام کاربر نام برند رو وارد کنه.  

03:11.030 --> 03:16.760
پس میگم لطفاً نام برند رو وارد کنید.  

03:16.760 --> 03:25.640
و بعد میگم چیزی که کاربر وارد کرده: "شما وارد کردید" و بعد برند Audi.  

03:25.640 --> 03:36.770
پس کاری که الان داریم می‌کنیم اینه: اینجا داریم set می‌کنیم و اینجا داریم get می‌کنیم.  

03:36.770 --> 03:38.600
خب این یعنی چی؟  

03:38.600 --> 03:46.160
یعنی در این خط این بخش اجرا میشه و در این خط این بخش اجرا میشه.  

03:46.160 --> 03:47.150
اینجا.  

03:47.150 --> 03:53.750
brandاینجا فقط میگه متغیر 
 رو از بالا برام بگیر.  

03:53.750 --> 03:54.920
باشه.  

03:54.920 --> 03:55.910
خب.  

03:55.910 --> 03:59.570
حالا کدمون رو اجرا کنیم و ببینیم چی میشه.  

03:59.570 --> 04:01.880
میگه لطفاً نام برند رو وارد کنید.  

04:01.880 --> 04:03.410
مثلاً می‌نویسم Audi.  

04:03.860 --> 04:05.600
میگه شما وارد کردید Audi.  

04:05.780 --> 04:06.770
آفرین.  

04:06.770 --> 04:09.470
حالا بریم هیچی وارد نکنیم.  

04:09.470 --> 04:13.070
یعنی رشته خالی، میگه شما چیزی وارد نکردید.  

04:13.070 --> 04:16.670
و بعد میگه شما وارد کردید مقدار پیش‌فرض.  

04:16.670 --> 04:22.790
یا شاید بهتر باشه بگیم برند مساوی مقدار پیش‌فرض.  

04:22.790 --> 04:24.620
تا واضح‌تر باشه.  

04:24.620 --> 04:27.050
حالا دوباره اجرا کنیم و هیچی وارد نکنم.  

04:27.050 --> 04:28.640
میگه شما چیزی وارد نکردید.  

04:28.640 --> 04:30.590
برند مساوی مقدار پیش‌فرض.  

04:30.590 --> 04:38.810
و این بخشی از کپسوله‌سازی هست، جایی که دقیقاً شرایط دسترسی به متغیرهات رو مشخص می‌کنی.  

04:38.810 --> 04:44.060
اینجا برای دسترسی به پراپرتی.  

04:44.060 --> 04:49.490
چون میگیم اگه می‌خوای پراپرتی رو ست کنی، باید از قوانین من پیروی کنی.  

04:49.490 --> 04:51.890
قوانین من اینه: رشته خالی نده.  

04:51.890 --> 04:57.200
و اگه کاربر رشته خالی بده یا بخوایم رشته خالی ست کنیم،  

04:57.200 --> 04:59.600
میره روی مقدار پیش‌فرض. چون اینطوری تعریف کردیم.  

04:59.830 --> 05:00.430
و اینجا.  

05:00.430 --> 05:03.730
getterحالا همین کار رو می‌تونیم برای 
 هم انجام بدیم.  

05:03.730 --> 05:10.810
اینجا می‌تونیم بگیم وقتی می‌خوای متغیر رو بگیری، اونجا هم قوانین خاص بذاریم.  

05:10.810 --> 05:12.880
می‌تونیم این کارو بکنیم.  

05:12.880 --> 05:16.060
ولی میگم بذاریم برای ویدئوی بعد.  

05:16.060 --> 05:22.060
فقط سریع می‌خواستم مطمئن بشم این کلمه value رو هم خوب می‌فهمی.  

05:22.060 --> 05:24.550
چون زیاد توضیح ندادم.  

05:24.550 --> 05:30.610
valueاین 
 در واقع همون چیزیه که اینجا وارد کردیم.  

05:30.610 --> 05:42.820
مثلاً اگه اینجا نوشتم car، اون car مقداریه که دارم به brand پاس میدم.  

05:42.820 --> 05:45.040
brandو دارم توی 
 ست می‌کنم.  

05:45.040 --> 05:47.470
valueو این کاریه که 
 انجام میده.  

05:47.470 --> 05:47.830
باشه.  

05:47.830 --> 05:48.970
فقط بدونی.  

05:48.970 --> 05:51.640
چی هست.  valueاینجا هم داره بررسی می‌کنه 

05:51.640 --> 05:58.180
breakpointبیا اینو با 
 اجرا کنیم تا دقیق ببینی چی میشه.  

05:58.180 --> 06:04.480
تقریباً از خط اول بررسی می‌کنه چون همونجاست که یک شیء از  

06:04.480 --> 06:05.230
ساختیم.  car

06:05.230 --> 06:08.020
بررسی می‌کنه برند خالی نباشه.  

06:08.020 --> 06:10.360
هست.  Audiو برند خالی نیست چون 

06:10.360 --> 06:10.840
درسته.   

06:10.840 --> 06:12.790
پس میریم مرحله بعد.  

06:12.790 --> 06:13.270
بررسی کرد.  

06:13.270 --> 06:13.960
خالی نیست.  

06:13.960 --> 06:14.290
خوبه.  

06:14.290 --> 06:18.250
بود.valueپس میره اینجا و میگه هرچی   

06:18.250 --> 06:21.190
اینجا می‌بینی وقتی موس می‌بری روی value نوشته Audi.  

06:21.190 --> 06:22.960
چرا value برابر Audi هست؟  

06:22.990 --> 06:29.920
constructor چون اینجا در این خط داریم 
پاس میدیم. Audi رو به

06:29.920 --> 06:32.020
رو ببینیم.constructorحالا   

06:32.020 --> 06:33.160
چی کار می‌کنه؟  

06:33.160 --> 06:34.540
constructor ماشین.  

06:34.540 --> 06:42.220
وقتی یک شیء از car ساخته میشه میگه هر برندی دادی رو ذخیره می‌کنم.  

06:42.220 --> 06:47.860
یا می‌فرستم به پراپرتی brand.  

06:47.890 --> 06:53.470
این پراپرتی میگه: قوانین منو رعایت کن.  

06:53.470 --> 07:02.170
قوانین من اینه: اگه می‌خوای مقداری ست کنی نباید null یا خالی باشه.  

07:02.170 --> 07:08.920
و اگه نه null بود نه خالی، هرچی وارد کردی قبوله و ذخیره می‌کنم توی متغیر brand.  

07:08.920 --> 07:13.240
باشه.  

07:13.240 --> 07:16.270
و واسه همینه که مستقیم اجرا میشه.  

07:16.270 --> 07:18.220
و دیگه چیزی نمی‌بینی.  

07:18.220 --> 07:20.140
پس می‌تونم برم عمیق‌تر.  

07:20.170 --> 07:20.830
باشه.  

07:20.830 --> 07:24.370
بعد دوباره برای بار دوم انجام میشه.  

07:24.370 --> 07:27.460
این بار برای BMW.  

07:27.460 --> 07:31.030
خب new car A3 Audi.  

07:31.300 --> 07:33.370
بعد میره BMW.  

07:33.400 --> 07:34.330
دوباره چک می‌کنه.  

07:34.330 --> 07:35.380
خالیه؟ BMWآیا   

07:35.410 --> 07:36.160
نه.  

07:36.160 --> 07:37.930
پس مقدار رو ست می‌کنه.  

07:37.930 --> 07:41.620
constructorبعد دوباره میره توی 
 و میگه باشه.  

07:41.620 --> 07:41.830
آره.  

07:41.830 --> 07:46.270
 brandتو مقدار خوبی دادی و حالا دوباره به 
 دسترسی پیدا می‌کنه.  

07:46.270 --> 07:54.250
اینجا میگه خب برند مدل ساخته شد، بعد ازش خارج میشه و میره اینجا.  

07:54.250 --> 07:55.390
لطفاً نام برند رو وارد کنید.  

07:55.390 --> 07:57.190
هست.  carمیگیم نام برند 

07:57.190 --> 07:59.200
دوباره بررسی می‌کنه.  

07:59.350 --> 08:00.520
value چی هست؟  

08:00.520 --> 08:01.600
این بار car هست.  

08:01.600 --> 08:02.890
کردیم.  overrideچون همین‌جا  

08:02.890 --> 08:05.680
باشه. باشه. carگفتیم   

08:05.680 --> 08:07.480
بعد سعی می‌کنه بهش دسترسی پیدا کنه.  

08:07.480 --> 08:10.690
و این برنامه‌مونه.  

08:10.690 --> 08:11.740
میگه Audi مدل A3 ساخته شد، BMW ساخته شد.  

08:11.740 --> 08:15.910
نام برند رو وارد کنید. برند مساوی car باشه.  

08:15.910 --> 08:18.190
خب الان باید جریان کار رو بفهمی.  

08:18.190 --> 08:22.090
و در ویدئوی بعدی می‌بینیم چطور میشه getter رو هم override کرد.  

08:22.090 --> 08:26.920
پس می‌بینمتون اونجا.  
