- بواسطة x32x01 ||
يعني إيه Encapsulation؟ وليه هو مهم في الـ OOP؟ 
بص كده … عمرّك شفت مشروع برمجة كبير كده وفجأة لقيت Variables متشالة Global في كل مكان؟
أي حد داخل يكتب سطر كود يغير فيها، والدنيا فجأة تتبهدل
الـ App يبوظ، والأخطاء تطلع، والديفيلوبر اللي كتب الكود يجيله دوخة
هنا بقى بيظهر دور Encapsulation …
وده واحد من أهم أساليب وركائز البرمجة الكائنية OOP.
الموضوع ببساطة جداً:
إحنا بنخبي البيانات (Attributes) جوا الكلاس، وبنمنع أي حد من إنه يغيرها إلا بطرق احنا محددينها بس.
فكرة Encapsulation بشكل بسيط
تخيل معايا إن معاك ريموت كنترول التلفزيون.
إنت لما تضغط زر رفع الصوت
:
إنت مش محتاج تعرف التفاصيل الداخلية
إنت بتتعامل بس مع الأزرار ← اللي نقدر نقول عليها Methods.
نفس الكلام في البرمجة:
ليه أصلاً نستخدم Encapsulation؟
تعالى نقول الفايدة بشكل واقعي:
طب إزاي نعمل Encapsulation؟ (بالمثال أسهل)
هوريك مثال بلغة Python:
كده إحنا ضمنّا:
أهمية Encapsulation في المشاريع الكبيرة
في المشاريع الصغيرة، الموضوع ممكن ميبانش مهم.
بس لما تدخل في شغل حقيقي:

لأنه ببساطة:
تشبيه بسيط
تخيل مخزن بضاعة كبير.
البيانات = البضاعة
الكلاس = المخزن
الـ Methods = الموظف اللي واقف على الشباك
إنت:
الخلاصة
Encapsulation مش رفاهية ولا حاجة تتعلمها وخلاص.
ده الأساس اللي بيخلي الكود:


بص كده … عمرّك شفت مشروع برمجة كبير كده وفجأة لقيت Variables متشالة Global في كل مكان؟
أي حد داخل يكتب سطر كود يغير فيها، والدنيا فجأة تتبهدل
الـ App يبوظ، والأخطاء تطلع، والديفيلوبر اللي كتب الكود يجيله دوخة
هنا بقى بيظهر دور Encapsulation …
وده واحد من أهم أساليب وركائز البرمجة الكائنية OOP.
الموضوع ببساطة جداً:
إحنا بنخبي البيانات (Attributes) جوا الكلاس، وبنمنع أي حد من إنه يغيرها إلا بطرق احنا محددينها بس.
فكرة Encapsulation بشكل بسيط
تخيل معايا إن معاك ريموت كنترول التلفزيون.إنت لما تضغط زر رفع الصوت
- الصوت بيعلى
- من غير ما تفهم إزاي الإشارة راحت للتلفزيون
- ولا الدائرة الإلكترونية جوه مشيّت إزاي
إنت مش محتاج تعرف التفاصيل الداخلية
إنت بتتعامل بس مع الأزرار ← اللي نقدر نقول عليها Methods.
نفس الكلام في البرمجة:
- البيانات جوا الكلاس = Private
- التعامل معاها بيكون من خلال Public Methods
ليه أصلاً نستخدم Encapsulation؟
تعالى نقول الفايدة بشكل واقعي:| الفايدة | الشرح |
|---|---|
| محدش يغير القيم الداخلية بطريقة عشوائية | |
| ميبقاش فيه متغيرات مرمية في كل حتة | |
| لو غيرت شكل تخزين البيانات، الكود اللي برا مش هيتأثر | |
| بدل ما الكود يتبهدل، كل حاجة تبقى تحت سيطرة Methods معينة |
طب إزاي نعمل Encapsulation؟ (بالمثال أسهل)
هوريك مثال بلغة Python: Python:
class Person:
def __init__(self, name, age):
self.__name = name # Private attribute
self.__age = age # Private attribute
def get_age(self):
return self.__age
def set_age(self, new_age):
if new_age > 0:
self.__age = new_age
else:
print("السن لازم يكون رقم أكبر من صفر 🚫")
p = Person("Mostafa", 25)
print(p.get_age()) # 25
p.set_age(30) # تحديث السن
print(p.get_age()) # 30
p.set_age(-5) # خطأ ليه عملنا كده؟
__ageو__nameمتخبيين (Private)- محدش يقدر يغيرهم مباشرة
- لازم يعدي من خلال
set_age()وget_age()
كده إحنا ضمنّا:
- البيانات متخزنة صح
- أي تعديل عليها يمر من فلتر معين
- مفيش حد يخش ويبوظ الدنيا

أهمية Encapsulation في المشاريع الكبيرة
في المشاريع الصغيرة، الموضوع ممكن ميبانش مهم.بس لما تدخل في شغل حقيقي:
- فريق كبير
- ناس مختلفة بتلمس الكود
- ملفات كتير
- اكواد معقدة
لأنه ببساطة:
- بيدي قواعد ثابتة للتعامل مع البيانات
- بيمنع أي حد يدخل جوه قلب الكود ويبوظ حاجة من غير ما يقصد
تشبيه بسيط
تخيل مخزن بضاعة كبير.البيانات = البضاعة
الكلاس = المخزن
الـ Methods = الموظف اللي واقف على الشباك
إنت:
- مش مسموحلك تدخل المخزن
- لكن من خلال الشباك ممكن تطلب البضاعة اللي عايزها

وده عشان نضمن الأمان وعدم العبط البرمجي
الخلاصة
Encapsulation مش رفاهية ولا حاجة تتعلمها وخلاص.ده الأساس اللي بيخلي الكود:
- آمن
- منظم
- سهل يتعدل ويتطور
- ويفضل شغال من غير ما حد يخبط الداتا ويبوظ الدنيا