menusearch
javapro.ir
جستجو
۱۳۹۵/۸/۶ پنج شنبه
(1)
(0)
♨️ جلسه شانزدهم - کنترل سطح دسرسی (Modifiers)
♨️ جلسه شانزدهم - کنترل سطح دسرسی (Modifiers)

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

 

اما اگر تمایل نداشته باشیم که هر کسی از آن استفاده کند آن را در مکانی می گذاریم که دسرسی ان برای عموم مردم محدود باشد!!! مثال دومی که می توان برای کنترل سطح دسرسی زد همان چت کردن در شبکه های اجتماعی می باشد!! مثلا شما در واتس اپ می توانید در یک گروه عمومی با سایر دوستان خود چت کنید و همه اعضای گروه از پیام شما با خبر می شوند اما اگر خواستید بصورت کنترل شده و خصوصی چت کنید به pv یا private هم دیگر می روید و هرکسی هم نمی تواند به pv شما دسرسی داشته باشد!

 

همه این مثال ها را گفتم که کنترل سطح دسرسی را برای شما ملموس تر کرده باشم.حالا برویم سراغ اصل مطلب در جاوا برای کنترل سطح دسرسی از واژه ای تحت عنوان اصلاح کننده های سطح دسرسی (Access level modifiers) استفاده میکنیم.خب این یعنی چه؟! مثلا برای کنترل سطح دسرسی به تلفن خود و محدود کردن دسرسی به ان،تلفن را از یک مکان عمومی به یک مکان خصوصی می بریم که در دسرس مردم نباشد یعنی دسرسی به تلفن خود را از حالت عمومی به خصوصی تغییر یا اصلاح کردیم به این حالت عمومی (public) یا خصوصی (private) اصلاح کننده (modifiers) سطح دسرسی می گویند.


اصلاح کننده های (تغییر دهنده ها یا modifiers) سطح دسرسی در جاوا تعیین می کنند که سایر کلاس ها تا چه اندازه می توانند از ویژگی ها و رفتار های کلاس فعلی شما استفاده کنند.


پس تا اینجا این اصلاح کننده ها برای کنترل دسرسی سایر کلاس ها به ویژگی ها و رفتار های شما می باشند.در ادامه آموزش به هر یک از اصلاح کننده های سطح دسرسی می پردازیم:


اصلاح کننده سطح دسرسی عمومی – کلمه کلیدی public

 

💡 کلمه کلیدی public از شناخته شده ترین کلمه های کلیدی جاوا هست و زیاد می بینیمش و باهاش کار کردیم و کار داریم!!!

 

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

 

💡 پس وقتی یک متغیر یا متد از نوع public در کلاس خود تعریف میکنیم برای سایر کلاس ها این ویژگی ها و متدها قابل دسرسی می باشد.

 

💡 در کل یک کلاس ، متغیر ، متد ، اینترفیس (درآینده بررسیش میکنیم) ، سازنده و... وقتی public اعلام می شود،توسط سایر کلاس ها قابل دسرس هستند.

 

💡 این کلمه کلیدی زمانی مفید است که متغیر ها و متدهای یک کلاس در یک اپلیکیشن باید قابل دسرس برای کل کلاس های برنامه ما باشد.

 

طبق روال معمول وقتی نیاز هست متغیرهای یک کلاس در همه جای اپلیکیشن به اشتراک و استفاده سایر کلاس ها قرار گیرد،آنان را عمومی (public) اعلام می کنیم.

 

خب امیدوارم توضیحاتم جامع و کامل و کافی بوده باشه،حالا این اصلاح کننده را با مثال بررسی میکنیم:

 

مثال: در زیر دو کلاس به نام های MathExample و MainTest در یک پکیج با نام javalike داریم:

 

کلاس MathExample درون پکیج javalike 

package javalike;

public class MathExample {

    public int area;

    public void calculate_Area_Rectangle(
int length, int width) {

        area = length * width;

    }

 

کلاس MainTest درون پکیج javalike 

package javalike;

public class MainTest {

    public static void main(String[] args) {
     
    MathExample math=new MathExample();
        math.calculate_Area_Rectangle(10, 100);
        System.out.println("Area="+math.area);        
    }

}

 

✔ کلاس MathExample یک ویژگی به نام area از نوع public  و یک متد که مساحت مستطیل را حساب میکند و  از نوع public تعریف شده است، دارد. ما قصد داریم در کلاس MainTest یک شی از کلاس MathExample  بسازیم و از طریق ان به متدها و متغیر های کلاس MathExample دسرسی داشته باشیم.این یعنی قصد داریم در یک کلاس از ویژگیها و رفتار های کلاس دیگری استفاده کنیم.از ان جهت که متغیرها و متدهای کلاس MathExample   از نوع public  هست پس سطح دسرسی عمومی است و به راحتی می توان به ویژگی ها و متد آن در کلاس دیگر نظیر MainTest  استفاده کنیم.


✔ در کلاس MainTest یک شی از کلاس MathExample  به نام math ایجاد کرده ایم.


✔ حال از طریق شی math به ویژگی ها و رفتار های کلاس MathExample درسی پیدا میکنیم.البته درصورتی می توانیم در یک کلاس از ویژگی ها و رفتارهای کلاسی دیگر استفاده کنیم که این ویژگی ها و رفتار ها از نوع public باشند.  


✔ در تصویر(1) سطح دسرسی شی math که از نوع کلاس MathExample می باشد ، در کلاس MainTest مشاهده می کنید.به راحتی این شی می تواند بدون هیچ مانعی به ویژگی ها و رفتار های کلاس MathExample که از نوع public می باشد دسرسی داشته باشد:

 

 

modifier در جاوا

 

✔    همان طور که از متد calculate_Area_Rectangle   مشخص هست که متد دو پرامتر از نوع int از ورودی میگیرد و مساحت مستطیل را محاسبه و درون متغیر نمونه area میریزد و در پایان در خروجی این متغیر نمونه را چاپ میکنیم.


✔    حالت قرار گیری دو کلاس در یک پکیج و خروجی آن را در زیر مشاهده می کنید:تصویر(2)


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


💡   اگر دو کلاس هم پکیج نبودند و قصد داشتیم از ویژگی ها و رفتار های کلاس دیگر استفاده کنیم کافیست کلاس مورد نظر درون پکیج مربوطه را import کنیم:


مثال:فرض کنید کلاس A درون پکیج javalike و کلاس B درون پکیج tutorial باشد،قصد داریم در کلاس B یک شی از کلاس A  ایجاد کنیم،اما چون کلاس A و B درون پکیج های متفاوتی هستند نمی توان از کلاس A درون کلاس B شی ساخت!تنها راهش این هست که پکیج کلاس A یعنی javalike را درون کلاس B صدا بزنیم( import )کنیم:

 

کلاس A

Package javalike;

 

public class A {
    public int a=5;

}

 

کلاس B

package tutorial;

import javalike.A;

public class B {

    public static void main(String[] args) {
        A objectA=new  A();

    }
}

 

ادامه اموزش را در پایین دنبال می کنیم..........

 

امپورت کردن یک کلاس در کلاس دیگر در جاوا

خروجی مثال بالا: خروجی مثال دو کلاس MathExample و MainTest بصورت زیر است:

 

Area=1000


✔ با توجه به این که متد main در کلاس MainTest بود و یک شی از کلاس MathExample درون کلاس MainTest ایجاد کرده بودیم کافیست کلاس MainTest را اجرا کنیم و بصورت خودکار هر دو کلاس اجرا می شود.

 

اصلاح کننده سطح دسرسی public کمترین حافظت را از ویژگی ها و رفتار های ما میکند.تنها زمانی از این اصلاح کننده استفاده کنید  که کاملا اطمینان داشته باشید که نیاز هست هرچیز و همه چیز به متغیر ها و متدهای ما دسرسی داشته باشند.


✔  در این مثال با روش دسرسی به ویژگی ها و رفتارهایی که از نوع public هستند در کلاس دیگر یاد گرفتیم.حالا سراغ اصلاح کننده(modifiers) دیگر در جاوا می رویم.  

 

✔  اصلاح کننده سطح دسرسی پیشفرض(Default) – بدون کلمه کلمه کلیدی


✔ اصلاح کننده (modifiers) سطح دسرسی پیشفرض (Default) به معنای این هست که ما صریحا برای کلاس ها ، متدها ، متغیرها و.... اصلاح کننده دسرسی در نظر نمی گیرید یا درکل هیچ کلمه کلیدی برای کلاس ها،متغیرها و...تعریف نمی کنیم.


وقتی  متغیرها یا متدهای یک کلاس اصلاح کننده پیشفرض درنظر گرفته می شود برای سایر کلاس ها قابل دسرس هستند.

 

 

 

package javalike;

public class A {
     int a=5;
     int b=123;
     String str=" Salam";

}

 

✔ Modifier یا اصلاح کننده سطح دسرسی برای متغیرهای این کلاس از نوع پیشفرض هستند چون هیچ کلمه کلیدی برای متغیرها تعریف نشده است.
اصلاح کننده (Modifier) سطح دسرسی خصوصی – کلمه کلیدی private


✔ وقتی متدها ، متغیرها ، سازنده ها و... با کلمه کلیدی private اعلام می شوند،تنها درون بدنه کلاس خودشان قابل دسرس هستند.


✔  با private کردن ویژگیها و رفتار های کلاس خود آن را از دسرس هر نامحرمی بدور نگه میدارید 😊


✔  Modifier یا اصلاح کننده (تغییر دهنده) سطح دسرسی private ، سطح دسرسی را بسیار محدود می کند.


✔  کلاس ها (class) و اینترفیس ها (interface) هرگز نمی توانند از نوع private باشند.


✔  در مورد اینترفیس در جلسات آینده که مربوط به مباحث شی گرایی می باشد خواهیم پرداخت.


✔ متغیرهایی که private تعریف می شوند تعریف می شوند تنها داخل بدنه کلاس قابل دسرس هستند و در کلاس های دیگر بصورت مستقیم قابل دسرس نیستند.


✔  برای دسرسی یک کلاس  به متغیر های private درون کلاس دیگر از متدهای public ،getter استفاده می کنیم.
•    متدهای getter چی هستند؟!!!! جلوتر بهش می پردازیم! 😊

 

 

...ادامه این جلسه آموزشی را می توانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.

 

 



این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)

آموزش آسان و ساده زبان برنامه نویسی جاوا

لینک دانلود

 

 


نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا عضو کانال تلگرام ما شوید.

نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

0 نظر
طراحی سایتطراحی سایتسایت سازسایت سازفروشگاه سازفروشگاه ساز