السبت، 21 سبتمبر 2019

التغليف - Encapsulation

Encapsulation
التغليف
احد المصطلحات الا بتقابلنا واحنا بدرس البرمجة الكائنية oop

هنتكلم على مقدمة بسيطة قبل البدء فى التعريف
ببساطة لما كنا بنبداء فى عمل اى مشروع
كنا بنبداء بعمل الكلاس الخاص بالمشروع ثم يتم عمل كائن  object من هذا الكلاس او عمل وراثة من هذا الكلاس .
وكنا بنقدر نتعامل مع المتغيرات الموجودة داخل هذا الكلاس بكل سهولة من اسناد قيم لها او طباعة قيم هذة المتغيرات .
وبتطبيق مصطلح Encapsulation
 بمجرد انشاء  الكلاس وبتطبيق مصطلح Encapsulation
وعند الرغبة فى عمل كائن من هذا الكلاس او وراثة  لا يمكن لهذا الكائن الوصول الى متغيرات هذا الكلاس بطريقة مباشرة .

من المقدمة السابقة يمكن
تعرف Encapsulation بانها وسيلة لاخفاء بيانات الكلاس ومنع التعامل معها بطريقة مباشرة من خارج الكلاس.

السؤال كيف يتم اخفاء بيانات الكلاس ومنع التعامل معها خارج الكلاس ؟
هنا هيظهر دور Access modifiers
وبالتحديد private او خاص
وبالتالى يتم تحديد طرق الوصول الخاصة بالمتغيرات بانها خاص private .
private
ويقصد بة انة يمكن الوصول للبيانات فقط من داخل الكلاس .

سؤال ماهى الطريقة غير المباشرة للوصول الى البيانات التى تم اخفائها من خارج الكلاس؟
البيانات التى تم اخفائها من الممكن الرغبة فى  اسناد قيم لهذة البيانات او الرغبة فى الحصول على هذة القيم او الاثنين معا.
وهنا هيظهر مصطلح جديد وهو دالة
getter & setter
عبارة عن دوال
getter     تستخدم للحصول على قيمة المتغير
setter.                تستخدم لاسناد قيمة للمتغير
 هنا يتم اعطاء هذة الدوال صلاحية
 الوصول لهذة المتغيرات والتعامل معها
وعندما نريد التعامل مع المتغيرات من خارج الكلاس يتم من خلال هذة الدوال (بطريق غير مباشر) .

وطالما يتم التعامل مع المتغيرات من خلال هذة الدوال  . فمن الممكن التحكم او عمل شرط (validation) على  القيم المررة للدالة setter قبل حفظها بداخل هذة المتغيرات .

الخلاصة
حتى نتمكن من تطبيق مفهوم Encapsulation يتم اولا جعل امكانية الوصول للمتغيرات private وبعدها اذا اردنا اسناد قيمة لاى متغير من خارج الكلاس نستخدم دالة setter اما اذا اردنا الحصول على قيم المتغير نستخدم دالة getter ولو اردنا اسناد والحصول على قيم المتغير نستخدم الدالتين معا .ومن الممكن عمل شرط على هذة البيانات قبل تخزينها بداخل هذا المتغير من خلال الدالة setter .
تحياتى للجميع .
Eng : Fawzy Syam

***********************


***********************

إذا كنت تحتاج إلى عدد أكبر من الفقرات يتيح لك مولد النص العربى زيادة عدد الفقرات كما تريد. هذا النص هو مثال لنص يمكن أن يستبدل في نفس المساحة, ومن هنا وجب على المصمم أن يضع نصوصا مؤقتة على التصميم ليظهر للعميلً