خوش اومدید دوباره.
access modifierتوی این ویدیو می‌خوام درباره دو صحبت کنم که تا حالا استفاده کردیم.
و هنوز در موردشون صحبت نکردم چون اول می‌خواستم همه چیزهای دیگه رو قبلش توضیح بدم.
با این حال،
من به طور کلی توضیح داده بودم که چطور کار می‌کنن، ولی می‌خواستم این دو کلمه کلیدی
رو با یه مثال خاص نشون بدم تا بهتر درک کنید این دو تا کلمه کلیدی رو private و public
پس موضوع اینه،
بنابراین مسئله این است که اصلاح‌کننده‌های دسترسی private و publicبیشتری وجود دارند که آنها داخلی هستند.
پس access modifier internal.
ولی ما تقریبا ازشون استفاده کردیم، درسته؟
ما از public استفاده کردیم و از private هم استفاده کردیم.
public پس برای زمانیه که می‌خواید چیزی بیرون کلاس هم قابل دسترسی باشه،
و private وقتی که نمی‌خواید بیرون کلاس قابل دسترسی باشه.
می‌خواید بیرون کلاس هم قابل دسترسی باشه یا نه.
پس می‌تونیم به numberOfCars دسترسی داشته باشیم، ولی نمی‌تونیم به brand از کلاس Program دسترسی پیدا کنیم.
numberOfCarsپس اینجا می‌بینید می‌تونم از public static استفاده کنم چون یه متغیر ه، ولی اگه بخوام
اون رو private کنم،
privateمثلا اگه Car باشه، فقط داخل همین کلاس خاص قابل استفاده است.
خارج از اون نمی‌شه استفاده کرد.
قابل دسترسی نخواهد بود.
inaccessibleپس میگه به دلیل سطح حفاظتیش.
public به privateپس ما سطح حفاظت رو از افزایش دادیم.
حالا سطوح حفاظت بیشتری هم هستن مثل protected و internal و protected internal، ولی ما
inheritanceتا زمانی که به نگاه نکنیم، نیازی بهشون نداریم، که این موضوعی هست که بعدا بررسی خواهیم کرد.
بعدا.
propertiesولی فعلا فقط حواستون باشه که باید رو public تعریف کنید تا
بتونید از بیرون بهشون دسترسی داشته باشید، مگر اینکه نخواهید.
properties رو public ولی معمولا همیشه می‌کنید و رو member variables یا backing fields
private نگه می‌دارید.
و برای متدها، وقتی می‌خواید متدها فقط داخل یک کلاس خاص قابل دسترسی باشن،
می‌کنید.privateاون‌ها رو
و اگر می‌خواید از همه کلاس‌ها قابل دسترسی باشه، اون می‌کنید.publicرو
publicو معمولا کاری که انجام می‌دید اینه که متد رو می‌کنید.
publicیعنی کلمه کلیدی رو به متد اضافه می‌کنید، مثل اینجا void drive.
member variablesو نگه می‌دارید.private تون رو
تقریبا همینه که می‌خواستم در موردش بگم.
حالا بیایم به مثال خودمون نگاه کنیم.
static numberOfCars را privateستی، منطقی نیست که این رو کنیم، چون اون موقع فقط می‌تونستیم
Carاز داخل خود کلاس بهش دسترسی داشته باشیم.
Programولی ما واقعا می‌خوایم از فایل بهش دسترسی داشته باشیم.
ش می‌کنم.public پس دوباره
driveولی اگر به متد خودمون نگاه کنیم، درسته؟
این متد drive، اگه بخوام drive رو
car3.driveمثلا private کنم و اون رو کنم، دیگه نمی‌تونم این خط کد رو اجرا کنم.
ولی فعلا اجراش می‌کنیم.
ببینیم چه اتفاقی میفته.
میگه: "I'm an A3 and I'm driving."
حالا اگه به کلاس Car برم، می‌بینید که دلیلش اینه که publicه.
referenceراستی، یه هم اضافه کرده چون میگه: "هی، این متد استفاده شده."
پس حالا می‌بینیم که میگه، خوب، یه reference داخل کلاس App/Program.cs هست.
car.driveو بعد در خط 11 از عبارت استفاده می‌کنه.
خوبه.
privateولی اگه بخوام این متد رو drive کنم، فقط می‌تونم رو از داخل سازنده خودم یا
هر متد دیگه‌ای که داخل کلاس Car هست استفاده کنم، ولی از خارج کلاس Car دیگه نمی‌تونم استفاده
privateه کنم چون الان .
می‌بینید که اینجا این خطا رو دریافت می‌کنم.
inaccessibleمیگه به دلیل سطح حفاظتیش.
پس حالا حتی نمی‌تونم این خط رو اجرا کنم چون مستقیما میگه خطا وجود داره.
دیگه قبولش نمی‌کنه.
خب، چرا اصلا بخواید این کارو انجام بدید؟
access modifier کاربرد عملی اینه که ها برای مدیریت نحوه دسترسی به کلاس‌ها و اعضای کلاس
تو پروژه‌های نرم‌افزاری حیاتی هستن.
با کنترل دسترسی، می‌تونید وضعیت داخلی آبجکت‌ها رو محافظت کنید، وابستگی بین
کامپوننت‌ها رو کاهش بدید و نگهداری پروژه رو راحت‌تر کنید.
به طور خلاصه، کار کردن روی پروژه در آینده و اضافه کردن ویژگی‌های جدید به
پروژه رو ساده‌تر می‌کنه.
پس بله، تقریبا همینه برای این ویدیو.
می‌بینمتون در ویدیوی بعدی.