recent
أخبار ساخنة

الحماية و تحديد درجات الوصول Encapsulation في لغة الجافا JAVA الدرس|23|

الصفحة الرئيسية

 

تحديد درجات الوصول Encapsulation

في الدرس السابق تعرفنا على مفاهيم البرمجة الكائنية الموجهة oob و عرفنا ما هو Package و class و الفائدة منهم و تعرفنا على الكائن و إنشاء كائن و الفائدة من الكائن, في هذا الدرس سوف نتعرف على الكبسله او ما يعرف بتحديد درجات الوصول إلى البيانات الموجودة بداخل الكلاس و تطرقنا لكلمة بيانات في الدرس السابق و قلنا عندما نذكر كلمة بيانات في البرمجة الكائنية الموجهة oob فإننا نقصد بها المتغيرات و الدوال.

فبإستطاعتنا عندما نقوم بتحديد درجات الوصول إلى هذه المتغيرات او الدوال و نستطيع جعل المتغير او الدالة محمية على مستوى الكلاس يعني لا نستطيع الوصول إلى تلك الدالة او المتغير إلا إذا كنا موجودين بنفس الكلاس او نقوم بإنقاص درجة الحماية و نجعل هذا المتغير او تلك الدالة محمية على مستوى الحزمة أي أننا نستطيع الوصول لذلك المتغير او الدالة من نفس الحزمة فقط او من أي كلاس او نقوم بإزالة الحماية نهائياً بحيث نستطيع الوصول للمتغير او الدالة من نفس الحزمة او خارج الحزمة.

و تعرف درجات الوصول بثلاث انواع و هي :

1- درجة حماية قصوى private.

2- محمي protected و هي أنقص من السابقة.

3- عام public يعني متاح للوصول.

 

الشكل العام لتعريف درجات الوصول

privaty int x=5; //لا نستطيع الوصول للمتغير الا من خلال نفس الكلاس

protected int y=23; //نستطيع الوصول للمتغير بشرط ان نكون بنفس الحزمة فقط

public double z=28; //متاح للوصول سواء من الحزمة او خارجها

 

الوصول لعنصر غير محمي

package oob;
class a
{
    private int x=5;
    protected int y=23;
    public double z=26;
}

public class Oob {
    public static void main(String[] args) {
        a ob=new a();
        System.out.println(ob.y);
    }

}


شرح المثال السابق

لقد انشأنا Package بإسم oob ثم بعد ذلك قمنا بإنشاء كلاس إسمه a و كان يحتوي على متغيرات بداخله تحتوي درجات الوصول الثلاثة و كل متغير له درجة وصول مختلفة و قيمة مختلفه و نوع بيانات مختلف ثم انشأنا كلاس آخر بإسم Oob و دخلنا للبرنامج الرئيسي اشتقينا كائن ob من اسم الكلاس a ثم وضعنا new تعني إنشاء نسخة من الكلاس و تخزين كل المتغيرات بداخل المتغير ob و عندما اتينا للطباعة عند كتابة الكائن ob ووضع نقطة سوف يقترح لنا المتغيرات y و z فقط لأن المتغير x محمي غير قادر على الوصول له.


الوصول لعنصر محمي private

سنتعرف في هذه الفقرة على كيفية الوصول إلى متغير او دالة محمي private و الفائدة من الوصول للمتغير المحمي لأنه دائماً يتحتم علينا الوصول للمتغير المحمي لشيئين و هما تعديل في قيمة المتغير او الحصول على قيمة مخزنة داخل المتغير, مثلاً سننشئ متغير محمي نوعه عددي و نريد الوصول له و للوصول للمتغير المحمي لا بد من إستخدام دالة وسيطة و نحن لدينا هدفين للوصول له.

package oob;
class a
{
    private int x;
    public void setx(int r)
    {
        x=r;
    }
    public int getx()
    {
        return x;
    }
}

public class Oob {
    public static void main(String[] args) {
        a ob=new a();
        ob.setx(5);
        System.out.println(ob.getx());
    }

}


شرح المثال السابق

لقد انشأنا Package بإسم oob ثم بعد ذلك قمنا بإنشاء كلاس إسمه a و كان يحتوي على متغير عددي إسمه x و ليس لديه قيمة بالوقت الحالي و بنينا دالة وسيطة عامة public void setx(int r) مهمتها ان تكون التعديل على قيمة x او تخزين قيمة في المتغير x و جعلناها void لا تعيد قيمة لأننا نريد ان نرسل إليها القيمة الذي نريد تخزينها في x ثم انشأنا متغير وهو x=r لتخزين القيمة الذي إستقبلناها و أنشأنا المهمة الثانية public int getx و مهمتها تكون الحصول على قيمة x بإستخدام الدالة getx ثم دخلنا للبرنامج الرئيسي و انشأنا كائن ob من المتغير a ثم بدأنا بإرسال قيمة للمتغير x عبر ob.setx و اعطينا القيمة المرسلة هي 5 ثم كتبنا امر الطباعة بكتابة الكائن ووضع الدالة getx لطباعة القيمة.

google-playkhamsatmostaqltradent