Encapsulation یا کپسوله سازی در جاوا

بنام خدا . د راین جلسه از مباحث شی گرایی در جاوا مبحث Encapsulation رو خواهیم داشت .

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

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


public class Encaps{

    //تعریف خصوصیاتی که نمیخواییم در خارج از کلاس دسترسی مستقیم بهشون داشته باشیم
    private String name;
    private String lname;
    private int age;

    public int getAge(){
        return age;
    }

    public String getName(){
        //متدی برای دریافت مقدار خصوصیت
        return name;
    }

    public String getLname(){
        return lname;
    }

    public void setAge( int newAge){
        //به این ترتیب میتونیم مقدار داده شده به یک خصوصیت رو کنترل کنیم
        if(newAge>18)
            age = newAge;
    }

    public void setName(String newName){
        //متدی برای تغییر مقدار خصوصیت
        name = newName;
    }

    public void setLname( String newLname){
        lname= newLname;
    }
}

 

در مثال بالا میبینید که برای دریافت مقدار خصوصیت ها و همچنین تغییر مقدار اونها از طریق متدهایی که تعریف  کردیم اقدام کنیم . این همون کپسوله سازی هست که دسترسی مستقیم به خصوصیات رو محدود میکنه . برای استفاده از کلاس بالا به شکل زیر عمل میکنیم.


public class TestEncaps{

    public static void main(String args[]){
        Encaps encaps = new Encaps();
        //مقدار دهی خصوصیت از طریق متد
        encaps.setName("Naser");
        encaps.setAge(25);
        encaps.setLname("Naderi");
        //دریافت مقدار خصوصیت از طریق متد
        System.out.print("Name : " + 
encaps.getName()+ " " + encaps.getLname() + " Age : " + encaps.getAge());
    }
}

نتیجه اجرای کد بالا :


Name : Naser Naderi Age : 25

مزایای کپسوله سازی در جاوا :

1-  فیلد یک کلاس رو میتونیم از این طریق read-only یا write-only کنیم .

2- کلاس میتونه یک کنترل عمومی بر روی نحوه مقدار دهای فیلد ها (خصوصیات) داشته باشه .

3- کاربری که خصوصیات رو از این طریق مقدار دهی میکنه از نحوه مقدار دهی اون داخل کلاس اطلاعی نداره و هر نوع تغییری در داخل کلاس روی عملکردش تاثیر نمیذاره.

تا جلسه بعد در پناه یکتای بی همتا ....


فایلهای ضمیمه
توجه! هیچ فایل ضمیمه ای برای این مطلب یافت نشد

نظرات شما نظر جدید