هنر برنامه نویسی

چرا و چطور برنامه نویس خوبی باشیم ؟!

هنر برنامه نویسی

چرا و چطور برنامه نویس خوبی باشیم ؟!

۱۵ مطلب در ارديبهشت ۱۳۹۱ ثبت شده است

سطوح دسترسی در جاوا

فهیم آیت | جمعه, ۲۹ ارديبهشت ۱۳۹۱، ۱۰:۲۲ ب.ظ | ۱ نظر

در این مطلب ، سطوح دسترسی به فیلد ها ، متد ها و کلاس ها در زبان جاوا رو توضیح می دم.

اگر اولین برنامه ای که نوشتیم رو یادتون بیاد ، متدی داشتیم به نام main.

اولین کلمه ای که توی تعریف این متد ذکر شده بود ، کلمه public بود که سطح دسترسی به این متد رو نشون میده.

 

مقدمه

یکی از مفاهیم مهم زبان های برنامه نویسی پیشرفته ، مفهوم encapsulation یا بسته بندیه.

وقتی می خواهیم یک برنامه بزرگ بنویسیم ، خیلی خیلی مهمه که برنامه قابل خوندن باشه.

برای همین هست که به طور کلی مفهوم شی گرایی به وجود اومد ، زبان های شی گرا به برنامه نویس ها کمک می کنند که برنامه رو منظم بنویسند و اطلاعات رو تا حد امکان طبقه بندی کنند. از یک طرف برای اینکه کلاس هاتون رو تمیز و حرفه ای بنویسید ، سعی می کنید تا اوجایی که ممکنه کار ها رو خرد کنید و تبدیل کنید به متد های کوچک تر ، از طرف دیگه ، زیاد شده متد ها ، کسانی رو که می خوان از کلاستون استفاده کنند گیج و سردرگم می کنه.

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

برای افرادی که قراره از این کلاس استفاده کنند اهمیتی نداره که این کلاس چطوری نوشته شده ، داخلش چه فیلد ها و متد های دیگه ای هستند. فقط همون یک یا چند تا متد اصلی براشون مهمه. پس بهتره که اون فیلد ها و متد های اضافه رو نبینند.

نکته دیگه ای که هست اینه که خیلی وقت ها خود ما هم نمی خواهیم که دیگران یک سری متد یا فیلد رو ببینند.

 

راه چاره چیه ؟ خیلی ساده ، زمانی که کلاس رو می نویسیم ، یک سری سطح دسترسی تعریف می کنید. سطوح دسترسی تعریف می کنند که از کجای برنامه ، به کدوم اجزای کلاس می شه دسترسی داشت.

در نتیجه می تونید داخل کلاس تعداد زیادی متد ها و فیلد های کمکی داشته باشید که بیرون از کلاس دسترسی به اون ها وجود نداشته باشه و باعث سردرگم شده سایر افراد پروژه نشه.

 

در جاوا چه سطوح دسترسی داره و هر کدوم به چه معنی هستند ؟

 

1- public : سطح دسترسی عمومی که با کلمه کلیدی public  در ابتدای تعریف فیلد ها ، متد ها و کلاس ها مشخص می شه. سطح دسترسی عمومی به این معنی که از تمام نقاط برنامه می شه به اونها دسترسی پیدا کرد.

2- private : سطح دسترسی خصوصی که با کلمه کلیدی private در ابتدای تعریف فیلد ها و متد ها مشخص میشه. این سطح دسترسی به این معنیه که فقط از داخل همین کلاس می شه به این فیلد ها و متد ها دسترسی پیدا کرد.

3- protected : کاملا شبیه به private با این تفاوت که اگر یک متد private باشه ، حتی کلاس هایی که از این کلاس مشتق شدن ( به ارث بردن) به متد خصوصی دسترسی ندارند اما به متد حفاظت شده (protected) دسترسی دارند، به علاوه ، تمام کلاس های دیگه ای که توی همین پکیج باشن ، به اعضای حفاظت شده دسترسی دارند

4- package protected : این سطح دسترسی ، با نگذاشتن هیچ یک از کلمات کلیدی بالا در ابتدای تعریف کلاس ها ، متد ها و متغیر ها مشخص می شه. همون طور که از نامش پیداست (حفاظت شده در پکیج) تمام کلاس هایی که با این کلاس توی یک پکیج قرار دارند، به این متد ، فیلد یا کلاس دسترسی دارند.

 

  • فهیم آیت