WEBVTT

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

00:00.920 --> 00:06.320
تو این ویدئو می‌خوام نشون بدم چطور می‌تونید به شکل معنادار  

00:06.320 --> 00:08.720
کنه.  getتغییر بدید وقتی کاربر می‌خواد یه پراپرتی رو 
 
00:08.720 --> 00:14.720
پس وقتی می‌خوایم مقدار brand رو از بیرون بگیریم، به جای اینکه فقط روی set کردنش کار کنیم  

00:14.720 --> 00:19.070
(که جلسه قبل تغییرش دادیم)، این بار می‌خوایم ببینیم چطور میشه گرفتنش رو هم به شکل معنادار تغییر داد.  

00:19.070 --> 00:21.710
پس من اینجا به یک مقدار کد اضافه‌تر نیاز دارم.  

00:21.710 --> 00:27.920
می‌خوام چیزی اضافه کنم که هم جذاب‌تر بشه و هم درک  

00:27.920 --> 00:28.520
کردنش راحت‌تر باشه. 

00:28.520 --> 00:34.280
boolپس میام یک متغیر عضو خصوصی دیگه می‌سازم از نوع 
 که فقط اطلاعات مربوط به  

00:34.280 --> 00:35.690
لوکس بودن یا نبودن رو نگه می‌داره.  

00:35.690 --> 00:38.450
یعنی اینکه ماشین لوکس هست یا نه.  

00:38.450 --> 00:41.810
 (constructor)و چیزی که می‌خوام اینه که اون رو به سازنده
 هم اضافه کنم.  

00:41.810 --> 00:47.210
bool isLuxuryاینجا می‌گم 
 و مقدار پیش‌فرضی براش در نظر نمی‌گیرم.  

00:47.210 --> 00:52.010
رو ست کنیم.  isLuxuryبعد اینجا باید مقدار 
 
00:52.010 --> 00:55.670
فعلاً می‌نویسم isLuxury = isLuxury؛ خب.  

00:55.670 --> 01:01.520
پس متغیر عضو ما میشه... اوه در واقع اینجا خودش به پایین هم اضافه شد.  

01:01.520 --> 01:08.030
 isLuxuryپس متغیر عضو 
 برابر با مقداری میشه که کاربر وارد کرده؛ 

01:08.030 --> 01:09.590
چه ماشین لوکس باشه چه نباشه.  

01:09.590 --> 01:16.070
مثلاً ممکنه فقط یک نسخه لوکس از A3 باشه یا نسخه اسپرت A3 یا هر مدل دیگه.  

01:16.070 --> 01:19.100
پس حالا واضحه که باید اینجا هم تغییرش بدیم.  

01:19.100 --> 01:23.360
می‌تونم بگم خب، این یکی ماشین لوکس خواهد بود.  

01:23.360 --> 01:31.370
ولی بیاید برعکسش رو انجام بدیم، چون A3 می‌تونه نسخه غیرلوکس باشه و  

01:31.370 --> 01:35.750
i7 می‌تونه نسخه لوکس باشه.  

01:35.750 --> 01:36.410
خب.  

01:36.410 --> 01:43.940
اینجا داریم می‌گیم که یک Audi مدل A3 غیرلوکس می‌سازیم  

01:43.940 --> 01:46.520
و یک BMW که در واقع لوکس هست.  

01:46.520 --> 01:47.300
اوکی.  

01:47.300 --> 01:53.930
اینجا می‌بینید که ما مستقیماً به متغیر عضو خصوصی دسترسی پیدا می‌کنیم،  

01:53.930 --> 01:54.200
که این روش درستی نیست.  

01:54.200 --> 01:57.230
نیاز داریم که اون رو در بر بگیره. property پس به یک 

01:57.230 --> 01:59.480
بسازیم؟  isLuxury property چطور می‌تونیم برای 

01:59.480 --> 02:00.830
خیلی ساده: کلیک راست،  

02:00.830 --> 02:09.230
Quick Actions → Encapsulate field in property،  

02:09.230 --> 02:13.700
رو برامون می‌سازه. property خودش IDEو 

02:13.700 --> 02:14.600
اینجا می‌بینیدش.  

02:14.600 --> 02:17.060
و حتی کدی که بالا نوشته بودیم رو هم اصلاح کرد.  

02:17.060 --> 02:21.590
یعنی IDE خیلی کار رو برامون راحت کرد، نیازی نبود دستی انجامش بدیم.  

02:21.590 --> 02:22.850
خیلی هم خوبه.  

02:22.850 --> 02:26.420
حالا یک جزئیات بیشتر هم به ماشین‌هامون اضافه کردیم.  

02:26.420 --> 02:29.690
اطلاعات بیشتری داریم که می‌تونیم ذخیره کنیم.  

02:29.690 --> 02:38.300
brandحالا می‌خوام تغییر بدم وقتی کاربر 
 رو می‌گیره، چه اتفاقی بیفته.  

02:38.300 --> 02:42.680
می‌خوام در صورتی که ماشین لوکس بود، کنار برند بگه   
Luxury Edition.

02:42.680 --> 02:43.880
چطور این کارو می‌کنیم؟  

02:43.880 --> 02:53.390
می‌تونم با get{} بنویسم: اگه isLuxury درست بود، برگردونه Brand + " Luxury Edition"،  

02:53.420 --> 03:03.110
رو برگردونه. Brand وگرنه فقط خود  

03:03.140 --> 03:11.270
 brand رپس دارم می‌گم وقتی کسی 
 رو صدا می‌زنه، اول یه شرط چک میشه،  

03:11.270 --> 03:14.810
و بعد مقدار اصلاح‌شده برگردونده میشه.  

03:14.810 --> 03:17.330
یعنی همیشه فقط برند خام برنمی‌گرده.  

03:17.330 --> 03:23.990
+ Luxury Edition بلکه اگه ماشین لوکس باشه، برند 
 رو می‌گیریم.  

03:23.990 --> 03:24.560
پس اطلاعات بیشتری داده میشه.  

03:24.560 --> 03:36.200
حالا اگه بیایم brand رو برای Audi و BMW بگیریم،  

03:36.200 --> 03:38.840
ببینیم چه خروجی میده.  

03:38.870 --> 03:42.920
چون این دوتا فرق دارن دیگه: Audi غیرلوکس هست و BMW لوکس.  

03:42.920 --> 03:43.310
خب.  

03:43.310 --> 03:44.930
البته Audi هم نسخه‌های لوکس داره.  

03:44.930 --> 04:04.580
اینجا می‌بینید که خروجی میگه: brand is Audi و brand is BMW - Luxury Edition.  

04:04.580 --> 04:12.020
پس ما تغییر دادیم که چه چیزی هنگام گرفتن مقدار برگرده.  

04:12.020 --> 04:15.950
getter این در واقع مثل یک متد 
 عمل می‌کنه.  

04:15.950 --> 04:22.730
شکلش مثل متد نوشته نشده، ولی دقیقاً کار همونه.  

04:22.730 --> 04:28.670
getter method یعنی اینجا یک 
 داریم، فقط ساده‌تر.  

04:28.670 --> 04:38.270
 encapsulation و دیدید که چطور با
 میشه متغیر عضو رو از بیرون پنهان کرد  

04:38.270 --> 04:45.980
property و دسترسی رو فقط از طریق 
 ممکن کرد.  

04:45.980 --> 04:48.620
 propertyاین 
 مثل دروازه‌بان عمل می‌کنه  

04:48.620 --> 04:57.350
و مطمئن میشه قواعدی که تعریف کردیم رعایت بشن، چه موقع 

04:57.350 --> 04:59.810
گرفتن مقدار چه موقع 

05:00.040 --> 05:02.230
کردنش.  set و

05:02.230 --> 05:10.660
این هم ایده پشت properties هست و دلیل اینکه ما فقط نمیایم بنویسیم public brand یا مثلاً  

05:10.660 --> 05:12.310
public string brand.  

05:12.310 --> 05:14.950
پس نباید این کارو بکنیم، اوکی؟  

05:14.950 --> 05:20.920
private همیشه باید فیلدها رو 
 نگه داریم، ولی می‌تونیم از این روش جالب استفاده کنیم  

05:20.920 --> 05:22.270
تا به متغیرها دسترسی پیدا کنیم.  

05:22.270 --> 05:26.800
و خب، این‌قدر برای الان کافیه.  

05:26.800 --> 05:31.750
یه چیزی که توضیح ندادم  و بابتش معذرت می‌خوام  اینه که نمی‌خوام وارد مباحث  

05:31.750 --> 05:37.600
بشم.  C#خیلی پیشرفته 
 
05:37.810 --> 05:39.460
مثلاً lambda expressions.  

05:39.460 --> 05:42.190
که البته بعداً توی دوره اون‌ها رو یاد می‌گیریم.  

05:42.190 --> 05:47.530
lambda expression فعلاً فقط اینو بدونید که این یک 
 هست و اینجا  

05:47.530 --> 05:49.390
نسخه ساده‌شده‌ی اون کد بالاست.  

05:49.390 --> 05:50.320
اوکی.  

05:50.320 --> 05:57.220
این خط کد و اون بلاک چندخطی دقیقاً یک کار رو انجام میدن.  

05:57.220 --> 06:04.300
فقط اینجا خیلی جمع‌وجورتره و جا نمی‌گیره.  

06:04.300 --> 06:06.910
یعنی با یک خط کل کار انجام میشه،  

06:06.910 --> 06:11.500
ولی اون یکی رو مجبور شدیم چند خط بنویسیم تا مرتب باشه.  

06:11.500 --> 06:18.880
property می‌بینید برای یک 
 ساده حدود ۱۰ خط نوشتیم،  

06:18.880 --> 06:23.380
 lambdaدر حالی که با 
 همه‌اش توی یک خط خلاصه شده.  

06:23.380 --> 06:27.970
اینجا وقتی get صدا زده بشه، مقدار _model برمی‌گرده،  

06:27.970 --> 06:28.480
اوکی.  

06:28.480 --> 06:33.250
بذارید این قسمت رو با کامنت چندخطی غیرفعال کنم.  

06:33.250 --> 06:35.350
این روش دیگه‌ای برای کامنت‌گذاریه.  

06:35.410 --> 06:42.430
با ‎/* ... */‎ می‌تونیم چند خط پشت سر هم رو کامنت کنیم.  

06:42.430 --> 06:53.530
lambda expressionو می‌بینید نتیجه‌ش همونه، فقط اینجا از 
 استفاده کردیم  

06:53.530 --> 06:58.210
که خیلی ساده‌تر و خلاصه‌تره.  

06:58.210 --> 06:59.710
خب، همین دیگه.  

06:59.710 --> 07:00.610
امیدوارم لذت برده باشید.  

07:00.610 --> 07:02.830
و حالا properties رو خوب درک کرده باشید.  

07:02.830 --> 07:07.000
توی ویدیوهای بعدی بیشتر می‌ریم سراغ مفاهیم شی‌ءگرایی.  

07:07.000 --> 07:08.050
پس می‌بینمتون اونجا.  


