تعداد بازدید: 2792

کپسوله سازی (encapsulation) در جاوا

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

در کپسوله سازی داده ها همون متغیرها و متدها همون کدهای ما هستند.

در شی گرایی کپسول ها کلاس ها هستند.

سطوح دسترسی در کلاس ها در جاوا

به طور کلی مبحث کپسوله سازی یا encapsulation همون ایجاد سطوح دسترسی برای داده ها و کدهاست که ما سطوح دسترسی مختلفی داریم که به صورت زیر مشاهده می کنید.

private default protected public visibility
Yes Yes Yes Yes from the same class
No Yes Yes Yes from any class in the same package
No Yes(package) Yes(package,inheritance) Yes from the subclass in the same package
No No Yes(inheritance) Yes from the subclass outside the same package
No No No Yes from the non-subclass class outside the same package

پنهان سازی اطلاعات روندی است که در آن عناصر مربوط به آن مفهوم پنهان می شود و تنها رابط کاربری مناسب برای آن نمایش داده می شود.

  • public : حالت عمومی ، در این حالت چه در داخل package و چه در خارج آن دسترسی آزاد است.
  • prrotected : حالت محافظت شده ، در صورتی در خارج package دسترسی خواهیم داشت که کلاس به ارث برده شده باشد.
  • default : حالت پیش فرض (زمانی که سطح دسترسی برای عنصر انتخاب نشه این حالت در نظر گرفته میشه) فقط در داخل package و در خارج آن قابل دسترسی نیست.
  • private : حالت خصوصی ، که فقط در داخل package و در داخل کلاس مربوطه قابل دسترسی است. یعنی حتی اگر داخل package کلاس دیگری تعریف کنیم قابل دسترسی نیست.

یک مثال از کپسوله سازی

یک بشقاب غذا را در نظر بگیرید که در داخل یخچال شما قرار دارد .

اگر بشقاب غذا تنها برای شما قابل دسترس باشد می شود حالت private یا خصوصی.

اگر کل اعضای خانواده به بشقاب غذا دسترسی داشته باشند (یعنی در زنجیره ارث بری باشد) می شود حالت protected یا محافظت شده برای خانواده .

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

get method (getters)

در مبحث کپسوله سازی در فیلدهایی از جدول بالا که سطح دسترسی براشون امکان پذیر نیست میتونیم متدهایی رو تعریف کنیم که این مقادیر رو بگیره(getters) یا تغییرشون بده(setters).

نکته : به عنوان یک عادت برنامه نویسی خوب در زمان تعریف متد به عنوان getters حتما باید متد رو با get شروع کنید و در زمان تعریف setters متد رو با set شروع کنید.

کلاس A :

public class A {
    private int x = 10;

    public int getX(){
        return this.x;
    }

    public void setX(int x){
        this.x = x;
    }
}

کلاس B :

public class B {
    public static void main(String args[]){
        A a = new A();
        a.setX(15);
        System.out.println(a.getX());

    }
}

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای کپسوله سازی (encapsulation) در جاوا

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *