Tag

برمجة كائنية Archives – IT Solutions

Encapsulation التغليف في البرمجة الكائنية 

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

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

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

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

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

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

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

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

في لغة الجافا for loop
(DNS) تعرف علي الدومين
خوارزميات التشفير
Screen Time طريقة تعطيل
الخوف من الذكاء الصناعي
إختصارات متصفحات الانترنت كروم و فايرفوكس وغيره
HTTPS و HTTP الفرق بين
طريقة مجانية لحظر المواقع الإباحية
javascript داخل php هل يمكن إستخدام كود
الذكاء الصناعي و الشبكات العصبية
كيف تحفظ الكود البرمجي ؟
(store procedure) sql الإجراءات المخزنة في
ViewBag و ViewData الفرق بين ال

(Inheritance) مبدأ الوراثة في البرمجة الكائنية

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

والسؤال: هو البرنامج الا احنا هنصممة هيحتوى فقط على كلاس واحد او من الممكن انه يحتوى على اكثر من كلاس ؟
طبعا البرنامج ممكن يحتوى على اكثر من كلاس .

سؤال اخر : اثناء تصميم الكلاسات متى نحتاج الى تطبيق مفهوم الوراثة inheritance ؟
ببساطة لو اكتشفت أن البرنامج الا بصممة يوجد بة مجموعة من الكلاسات تشترك فى مجموعة من الصفات ( المتغيرات )
والعمليات ( الدوال )
بدلا من كتابة كل هذة المتغيرات والدوال على مستوى كل كلاس وبالتالى تكرار الكود اكثر من مرة .
بتطبيق مفهوم الوراثة Inheritance يتم تجميع كل المتغيرات والدوال المشتركة فى كلاس واحد يسمى
super class
وعند انشاء اى كلاس يستخدم هذة الدوال والمتغيرات نجعلة يرثها من الكلاس super
وتسمى الكلاسات التى ترث sub classes .

فتكون المحصلة فى النهاية ان عندنا
كلاس الاب يسمى super class بالمتغيرات والدوال وهو الكلاس الذى يتم الوراثة منة
يحتوى على المتغيرات والدوال المشتركة بين مجموعة من الكلاسات.
وكلاسات الابناء تسمى sub classes وهى الكلاسات التى ترث من super
تحتوى على المتغيرات والدوال الخاصة بهم بالاضافة الى المتغيرات والدوال المورثة من super class .
وهنا طبقنا مفهوم الوراثة تمام كما هى مطبقة فى الحياة.

طيب سؤال اخير اية الا احنا هنستفادة لما اقسم البرنامج بالشكل دا ؟
اقولك بعض المزايا
بالاضافة الى تقليل الكود
لو استخدمت دالة فى جميع
sub classes
وحبيت انى اعدل فيها لسبب ما
هكتفى فقط بتعديل الكود فى كلاس super وبالتالى سيتم التعديل مباشرة فى جميع كلاسات الابناء .

JVM Troubleshooting Guide
دورة جافا احترافية باللغة العربية الجزء الثاني
مفاهيم متقدمة في البرمجة بلغة الجافا
المصفوفات بلغة الجافا
برمجة اله حاسبة بلغة الجافا
أفضل خمسة مواقع عربية في البرمجة وتطوير الويب
Fiber Optics تعلم توصيل الالياف الضوئيه
نظم التشفير و الشهادات الرقمية و التواقيع الألكترونية
(Object-relational mapping) ORM ما هو الـ
GitHub ما هو ال
ZRam Swap ما هو ال
تحدي وإصرار طائرة الأخوين رايت بقلم معتز هرفيل
تطبيقات الذكاء الأصطناعي في الطب النفسي

abstract class ما هو ال

هى كلاسات مجردة لايمكن انشاء كائن object منها وانما تستخدم لاغراض الوراثة
بمعنى لو عندى كلاس person انشاء بغرض تجميع العناصر المشتركة بين اكثر من كلاس (المتغيرات والدوال ) .

نتيجة بحث الصور عن abstract class
وعندى مجموعة من الكلاسات التى ترث من هذا الكلاس مثل كلاس Employees وكلاس students .
فما الداعى او الفائدة من انشاء كائن من كلاس person
ليس واقعيا ان انشاء كائن اسمة شخص .
هو ليس خطأ برمجى وانما هو ليس منطقيا .

وبالتالى حتى نتمكن من عدم تفعيل انشاء كائن من هذا الكلاس نستخدم الصيغة كالتالى

public abstract className{

}

يتم وضع كلمة abstract قبل اسم الكلاس

فى النهاية او الخلاصة لو عندك كلاس مش عاوز حد يعمل منة كائن نكتب قبلة عبارة abstract .

ملحوظة
من الممكن ان يحتوى الكلاس من النوع abstract على دوال عادية ودوال اخرى من النوع abstract .

نتيجة بحث الصور عن abstract class

DHCPايه هو ال
منقول عن أطباء الميددوز جميع الاسئلة و الأجوبة عن مرض كورونا
حيلة ذكية لاستخدام فيسبوك بشكل خفي
موقع أكاديمية مايكروسوفت للتعليم المجاني وشهادة معتمدة من مايكروسوفت
بعض النصائح لكي تصبح مصمما محترفا
ما هي القطعة الأسطوانية الموجودة في أطراف أسلاك الكمبيوتر
SAN و NAS الفرق ببساطة بين
DHCP كيف تحصل على اي بي من ال
شبكات الخصومة التوليفية
CMD أهم الأوامر في موجه الأوامر
كيف يتم تصميم العاب ثلاثية الابعاد
تعلم البرمجة عبر لعبة مميزة بطريقة ممتعة ومسلية
(Intel) كل ما تريد معرفته عن معالجات إنتل