حامد ذاکری میاب
حامد ذاکری میاب
خواندن ۳ دقیقه·۳ سال پیش

نکته ظریف سطوح دسترسی در سی شارپ #C

خلاصه سطوح دسترسی از زبان مایکروسافت
خلاصه سطوح دسترسی از زبان مایکروسافت

سطوح دسترسی در هر زبانی به ما اجازه پیاده سازی مفهومی بنام Encapsulation رو میدن که یکی از پایه‌ای ترین مفاهیم شئ‌گرایی هست.

انکپسولیشن به ما این اجازه رو میده که جزئیات و پیچیدگی های یک کلاس رو از دید دیگر کلاس ها جدا کنیم.

به کلیدواژه هایی که این سطوح دسترسی رو برای متدها و پراپرتی های یک کلاس تعیین میکنن Access Modifier گفته میشه. (تغییر دهنده دسترسی)

این کلیدواژه ها در زبان سی شارپ عبارتند از

  • عمومی Public
  • خصوصی Private
  • محافظت شده Protected
  • داخلی Internal

که البته دو نوع مودیفایر دیگه هم داریم که مقصود من از نوشتن این متن کوتاه، توضیح این دو هست در اصل:

  • داخلی یا محافظت شده - Protected Internal
  • خصوصی و محافظت شده - Private Protected

در مورد کلید واژه های دسته اول که تو اکثر زبانهای کامپایلی هست، توضیح مختصری میدم تا دوستانی که شاید از ذهنشون پریده باشه دوباره یادآوری بشه، اگه شما از اون دسته هستین که اون 4 کلیدواژه رو میدونین، میتونین به ادامه متن مراجعه کنین

کلیدواژه های پرکاربرد

خود شما یک نمونه (instance) از کلاس انسان هستین، بیاین با همین مثال سطوح دسترسی رو مورد بررسی قرار بدیم. تو این مثال شما چندتا ویژگی دارین که سطح دسترسی اونها برای دیگران متفاوته

  • قلب
  • نام و نام خانوادگی
  • دی ان ای DNA
  • حس ملی گرایی
  • لذت بردن از شعر فارسی
  • قابلیت ثبت نام برای رئیس جمهور شدن!

عمومی: کلیدواژه public به یک عضو اجازه میده تا بیرون از کلاس و از هر جایی قابل دسترس باشه. مثلا نام و نام خانوادگی شما برای همه انسانهای روی زمین و حتی دیگر موجودات قابل دسترسی هست.

خصوصی: کلیدواژه private این دسترسی به عضو رو محدود به داخل خود کلاس میکنه یعنی این عضو تحت هیچ شرایطی از بیرون کلاس قابل دسترسی نیست. مثلا قلب شما فقط مختص شماست و هیچ انسان ویا موجود دیگه ای نمیتونه ازش استفاده کنه.


محافظت شده: کلیدواژه protected یک عضو رو فقط برای کلاسهایی که از کلاس جاری ارث بردن قابل دسترسی میکنه. مثل DNA شما، که فقط برای شما و انسانهایی که از شما به ارث میبرن مثل فرزندان شما قابل دسترسی هست.

داخلی: کلیدواژه internal یک عضو رو فقط برای کلاسهایی که داخل یک Assembly هستن قابل دسترس میکنه. مثلا در نظر بگیرید کشور عزیزمون ایران، یک Assembly باشه، در اینصورت، فقط هموطنان شما به حس ملی گرایی شما دسترسی دارن.

کلیدواژه‌های کم کاربرد اما مهم

دو کلیدواژه مهم دیگه، ترکیبی از کلیدواژه های بالا هستن در ظاهر ولی عملکردشون قابل تأمله.

داخلی یا محافظت شده: کلیدواژه Protected Internal اگه برای یک عضو در نظر گرفته بشه، اون عضو رو فقط قابل دسترس به دو گروه میکنه، یا از کلاس ما به ارث برده باشن، یا در همون اسمبلی باشن. مثلا کسانی که نه از شما به ارث بردن و نه ایرانی هستن، شاید هیچوقت از شعر فارسی لذت نبرن! البته مثال واقعی این موضوع در دنیای واقعی خیلی کمه ولی در دنیای برنامه نویسی، نیازه که بعضی جزئیات از دید خارجی ها پوشیده باشه.

خصوصی و محافظت شده: کلیدواژه Private Protected برای یک عضو، سطح دسترسی اون رو به خصوصی و محافظت شده محدود میکنه. بعنوان مثال، شما اگه فرزندی غیر ایرانی داشته باشین (یعنی از یک همسر غیر ایرانی صاحب فرزند شده باشین) طبق قوانین کشور ما، حق ثبت نام برای کاندیداتوری ریاست جمهوری رو نداره. این حق فقط برای شما و برای فرزندان ایرانی شما قابل دسترسیه.


شاید مثالم خیلی گویا نبود ولی اگه کمی روش فوکوس کنین قطعا متوجه داستان میشین :)


خوشحال میشم نظر شما رو در مورد متن بدونم.

برنامه نویسیnet
هر از گاهی برای اینکه دوستانم رو از یافته های جدید و قدیمم آگاه کنم، مینویسم و ویدئو میسازم
شاید از این پست‌ها خوشتان بیاید