Gaza, a piece of our soul. ❤️🇵🇸

الوراثة (Inheritance)

الوراثة (Inheritance) هي مفهوم في البرمجة كائنية التوجه (Object-Oriented Programming) يعبر عن نقل الخصائص والسلوكيات من كيان (class) إلى كيان آخر. ببساطة، إذا كان لديك مجموعة من الكيانات أو المتغيرات المتشابهة، يمكنك تعريفها مرة واحدة في class أساسي (parent class)، ومن ثم توريثها إلى الكيانات الأخرى (child classes). يمكن أيضًا إجراء overwriting(إعادة تعريف) لهذه الخصائص أو السلوكيات في الكيان الموروث إذا دعت الحاجة، سواء كانت متغيرات (parameters) أو دوال (functions).


أنواع الوراثة

  1. Single inheritance: الوراثة من كيان أساسي واحد.
  2. Hierarchical inheritance: وراثة كيان واحد من عدة كيانات.
  3. Multilevel inheritance: وراثة سلسلة من الكيانات بحيث يكون كل كيان وريثًا لكيان آخر.
  4. Hybrid inheritance: مزيج من أنواع الوراثة المختلفة.
  5. Multiple inheritance: الوراثة من أكثر من كيان واحد (لا تدعمها بعض اللغات كـ PHP بشكل مباشر، ولكن يمكن تحقيقها باستخدام( interfaces).

فوائد الوراثة

  1. تنظيم الكود: تساعد الوراثة على تقسيم البرنامج إلى أجزاء يمكن إعادة استخدامها وإدارتها بسهولة.
  2. منع التكرار: تقلل الوراثة من كتابة نفس الكود عدة مرات عن طريق إعادة استخدام الكود المشترك.
  3. سهولة حل المشاكل: بفضل الوراثة، يصبح الكود أكثر وضوحًا وقابلية للفهم، مما يسهل حل المشاكل.


معدلات الرؤية (Visibility Modifiers)

  • Public: يمكن الوصول إليها من أي مكان سواء داخل الـ class أو من خارجها.
  • Protected: لا يمكن الوصول إليها إلا من داخل الـ class أو الـ class التي تقوم بالوراثة منها، ولا يمكن الوصول إليها من خلال الكائنات (objects) مباشرة.
  • Private: تكون خاصة تمامًا بـ class نفسه ولا يمكن الوصول إليها أو تعديلها إلا من داخله فقط.


Magic Methods

  1. ( construct): هي دالة تُستدعى تلقائيًا عند إنشاء كائن جديد من الـ class. تُستخدم عادةً لتهيئة القيم الأولية.
    إذا أردت استخدام الخصائص أو الوظائف من الـ parent class، يمكنك استخدام الكلمة parent للوصول إليها داخل الـ child class.
  2. (destruct): تُستدعى تلقائيًا عند تدمير الكائن أو عند انتهاء البرنامج، وهي مفيدة لإدارة الموارد مثل إغلاق الملفات أو الاتصال بقاعدة البيانات.


إضافات أخرى حول الوراثة:

- الوراثة توفر إمكانية إعادة استخدام الكود بكفاءة وتحقيق مبدأ
DRY (Don't Repeat Yourself)


- عند استخدام الوراثة بشكل صحيح، يمكن تسهيل عملية صيانة الكود وتوسيعه مستقبلاً.