خوش برگشتید.
تو این ویدئو می‌خوام نشون بدم چطور می‌تونید به شکل معنادار
کنه. getتغییر بدید وقتی کاربر می‌خواد یه پراپرتی رو
پس وقتی می‌خوایم مقدار brand رو از بیرون بگیریم، به جای اینکه فقط روی set کردنش کار کنیم
(که جلسه قبل تغییرش دادیم)، این بار می‌خوایم ببینیم چطور میشه گرفتنش رو هم به شکل معنادار تغییر داد.
پس من اینجا به یک مقدار کد اضافه‌تر نیاز دارم.
می‌خوام چیزی اضافه کنم که هم جذاب‌تر بشه و هم درک
کردنش راحت‌تر باشه.
boolپس میام یک متغیر عضو خصوصی دیگه می‌سازم از نوع که فقط اطلاعات مربوط به
لوکس بودن یا نبودن رو نگه می‌داره.
یعنی اینکه ماشین لوکس هست یا نه.
(constructor)و چیزی که می‌خوام اینه که اون رو به سازنده هم اضافه کنم.
bool isLuxuryاینجا می‌گم و مقدار پیش‌فرضی براش در نظر نمی‌گیرم.
رو ست کنیم. isLuxuryبعد اینجا باید مقدار
فعلاً می‌نویسم isLuxury = isLuxury؛ خب.
پس متغیر عضو ما میشه... اوه در واقع اینجا خودش به پایین هم اضافه شد.
isLuxuryپس متغیر عضو برابر با مقداری میشه که کاربر وارد کرده؛
چه ماشین لوکس باشه چه نباشه.
مثلاً ممکنه فقط یک نسخه لوکس از A3 باشه یا نسخه اسپرت A3 یا هر مدل دیگه.
پس حالا واضحه که باید اینجا هم تغییرش بدیم.
می‌تونم بگم خب، این یکی ماشین لوکس خواهد بود.
ولی بیاید برعکسش رو انجام بدیم، چون A3 می‌تونه نسخه غیرلوکس باشه و
i7 می‌تونه نسخه لوکس باشه.
خب.
اینجا داریم می‌گیم که یک Audi مدل A3 غیرلوکس می‌سازیم
و یک BMW که در واقع لوکس هست.
اوکی.
اینجا می‌بینید که ما مستقیماً به متغیر عضو خصوصی دسترسی پیدا می‌کنیم،
که این روش درستی نیست.
نیاز داریم که اون رو در بر بگیره. property پس به یک
بسازیم؟ isLuxury property چطور می‌تونیم برای
خیلی ساده: کلیک راست،
Quick Actions → Encapsulate field in property،
رو برامون می‌سازه. property خودش IDEو
اینجا می‌بینیدش.
و حتی کدی که بالا نوشته بودیم رو هم اصلاح کرد.
یعنی IDE خیلی کار رو برامون راحت کرد، نیازی نبود دستی انجامش بدیم.
خیلی هم خوبه.
حالا یک جزئیات بیشتر هم به ماشین‌هامون اضافه کردیم.
اطلاعات بیشتری داریم که می‌تونیم ذخیره کنیم.
brandحالا می‌خوام تغییر بدم وقتی کاربر رو می‌گیره، چه اتفاقی بیفته.
می‌خوام در صورتی که ماشین لوکس بود، کنار برند بگه Luxury Edition.
چطور این کارو می‌کنیم؟
می‌تونم با get{} بنویسم: اگه isLuxury درست بود، برگردونه Brand + " Luxury Edition"،
رو برگردونه. Brand وگرنه فقط خود
brand رپس دارم می‌گم وقتی کسی رو صدا می‌زنه، اول یه شرط چک میشه،
و بعد مقدار اصلاح‌شده برگردونده میشه.
یعنی همیشه فقط برند خام برنمی‌گرده.
+ Luxury Edition بلکه اگه ماشین لوکس باشه، برند رو می‌گیریم.
پس اطلاعات بیشتری داده میشه.
حالا اگه بیایم brand رو برای Audi و BMW بگیریم،
ببینیم چه خروجی میده.
چون این دوتا فرق دارن دیگه: Audi غیرلوکس هست و BMW لوکس.
خب.
البته Audi هم نسخه‌های لوکس داره.
اینجا می‌بینید که خروجی میگه: brand is Audi و brand is BMW - Luxury Edition.
پس ما تغییر دادیم که چه چیزی هنگام گرفتن مقدار برگرده.
getter این در واقع مثل یک متد عمل می‌کنه.
شکلش مثل متد نوشته نشده، ولی دقیقاً کار همونه.
getter method یعنی اینجا یک داریم، فقط ساده‌تر.
encapsulation و دیدید که چطور با میشه متغیر عضو رو از بیرون پنهان کرد
property و دسترسی رو فقط از طریق ممکن کرد.
propertyاین مثل دروازه‌بان عمل می‌کنه
و مطمئن میشه قواعدی که تعریف کردیم رعایت بشن، چه موقع
گرفتن مقدار چه موقع
کردنش. set و
این هم ایده پشت properties هست و دلیل اینکه ما فقط نمیایم بنویسیم public brand یا مثلاً
public string brand.
پس نباید این کارو بکنیم، اوکی؟
private همیشه باید فیلدها رو نگه داریم، ولی می‌تونیم از این روش جالب استفاده کنیم
تا به متغیرها دسترسی پیدا کنیم.
و خب، این‌قدر برای الان کافیه.
یه چیزی که توضیح ندادم و بابتش معذرت می‌خوام اینه که نمی‌خوام وارد مباحث
بشم. C#خیلی پیشرفته
مثلاً lambda expressions.
که البته بعداً توی دوره اون‌ها رو یاد می‌گیریم.
lambda expression فعلاً فقط اینو بدونید که این یک هست و اینجا
نسخه ساده‌شده‌ی اون کد بالاست.
اوکی.
این خط کد و اون بلاک چندخطی دقیقاً یک کار رو انجام میدن.
فقط اینجا خیلی جمع‌وجورتره و جا نمی‌گیره.
یعنی با یک خط کل کار انجام میشه،
ولی اون یکی رو مجبور شدیم چند خط بنویسیم تا مرتب باشه.
property می‌بینید برای یک ساده حدود ۱۰ خط نوشتیم،
lambdaدر حالی که با همه‌اش توی یک خط خلاصه شده.
اینجا وقتی get صدا زده بشه، مقدار _model برمی‌گرده،
اوکی.
بذارید این قسمت رو با کامنت چندخطی غیرفعال کنم.
این روش دیگه‌ای برای کامنت‌گذاریه.
با ‎/* ... */‎ می‌تونیم چند خط پشت سر هم رو کامنت کنیم.
lambda expressionو می‌بینید نتیجه‌ش همونه، فقط اینجا از استفاده کردیم
که خیلی ساده‌تر و خلاصه‌تره.
خب، همین دیگه.
امیدوارم لذت برده باشید.
و حالا properties رو خوب درک کرده باشید.
توی ویدیوهای بعدی بیشتر می‌ریم سراغ مفاهیم شی‌ءگرایی.
پس می‌بینمتون اونجا.