Encapsulation (GET, SET) Java oop part 5

الكاتب: Mr.Aziz

تاريخ النشر: 2022-04-10 00:42:50

 مساء الخير

 

اليوم راح نتكلم جزء مهم في oop الى هو أغلبكم شافها او سمع عنها هي get و set  و ليش اصلآ لازم نسويها و ايش السبب

 

أول شي هذي تسمى Encapsulation تعني يتم أخفاء البيانات الحساسة أو على اقل تخزينها.

بهذي طريقة نقدر نتعامل مع المتغيرات عن طريق get و set لانه بيكون public عكس المتغيرات تكون محفوظة كا private تمام.

 

اذا شفت الدرس السابق عن private بأمكانك تفهم الباقي واذا ماشفته أنصحك ترجع و تشوف درس عن private  او تفضل من هنا

 

طيب ماهو وظيفة GET و SET

Set: يتم استقبال القيم من المتغيرات

get: يتم عمل RETURN القيمة الي مخزن بها من قبل المتغيرات.

الان راح اشرح لكم

 

تتذكرون الدرس السابق قدرنا نعمل method و استعرضنا كيف يتم الطباعة ولكن هالمره في method

طيب انا ابي اطبع في main أو اي مكان ثاني بشرط مايكون موجود بالكلاس هل ينفع؟ نجرب

 

 

زي ماتلاحظون لما عملنا obj.info() و داخلها قيمة هنا تقبل لامشكلة

ولكن لما عملنا print

system.out.print(obj.info()( هنا ماينفع ليش؟

لانه لازم الميثود يكون له return و احنا عارفين هذا النوع لازم يكون نوع ميثود int مو void

 

هنا الفكرة set نفس الشئ.

خلونا نعمل Set ثم get تمام

 

أول شي نعمل method يكون SetNumber()

مثل هكذا

 

زي ماتلاحظون هنا كتبت method يكون نوعه void ثم كتبت اسم الmethod هو setnumber

و parameter يكون متغير الى يستقبله عن طريق المتغير متواجد في private الى هو num تمام؟

 

نكمل

ألان كتبنا المتغير الي متواجد في private أولآ ثم المتغير التي كان في parameters

num = mynumber

لسبب وضعنا هكذا لانه نحتاج نستدعي القيمة عن طريق mynumber ليش؟

لاننا بنستخدم parameter وليس اسم متغير

 

طيب أفرض لو نبي نستخدم اسم متغير ايش بيطلع لنا؟

 

هنا نتيجة

 

زي ماتلاحظون هنا مستحيل نقدر نستخدم المتغير خارج الكلاس لانه لازم يكون عن طريق method مهم ماكان

 

المهم نكمل

في main نكتب بهذي طريقة

obj.SetNumber(25)

نضع اسم obj التي تم انشاءه من قبلنا ثم نضع اسم الدالة set ثم نضع القيمة التي نريد نحفظها في المتغير داخل الكلاس

 

مثل ماأستعرضنا مره السابقة

 

طيب لو أبي اطبع على طول وش بيطلع لي

تعالو نشوف

 

 

زي ماتلاحظون لما حاولت اطبع الى موجود سواء بأسم الدالة او اسم المتغير يرفض ليش؟

زي ماتعلمنا في درس الدوال function لاتستطيع طباعة اسم الدالة الا في حال وجود نوع متغير غير void

 

هنا يجي دور get وينقذنا :)

 

نروح نسوي دالة ثانيه ولكن هالمره كذا

 

 

زي ماكتبنا اسم الدالة ولكن هالمره مانحتاج parameters

فقط نعمل retun

 

public int GetNumber(){

return num;

}

int: لازم يكون مطابق النوع المتغير الي في setnumber

return num: يتم استدعاء القيمة التي تم تخزينها و هنا نستطيع استعراضها في main او اي دوال اخرى

 

نجي الان الطباعة بهذي طريقة

 

نجي تحت في main ثم نعمل الطباعة ونستدعي فقط اسم obj ثم اسم دالة get

obj.GetNumber() و هنا يتم عرض القيمة بدون اي مشكلة

انا وضعت رقم في num بحيث نعمل اختبار لها و الحمدالله تم طباعتها

 

الان خلونا نسوي set مع get تحت يكون يستقبل القيمة ثم يتم طباعة القيمة

 

 

هنا نكتب فقط obj.setNumber(4)

كذا نقدر نضع اي قيمة و يستقبلها في الدالة و بعد كذا يتم استقبالها num التي متواجد في private و بعد كذا نستطيع نعمل return لها ليتم عرض القيمة باي مكان خارج الكلاس

 

هذي طريقة get و set بكل بساطة..

 

اذا ماوصلت المعلومة حاول تطبيق الدرس وفهمها جيدآ خاصة private الدرس السابق مع هذا الدرس لانه مرتبط جدآ مع بعض

 

ولاتنسى أهم شي الممارسة عشان توصل المعلومة وتكون مفهومة

 

للعلم set لايجب ان يكون مكانها في main و ممكن يكون بأي مكان يستقبل المتغير ليتم عرضها عن طريق get

 

أشوفكم على خير...