مقدمة
في الدرس السابق تعرفنا على التغليف (Encapsulation)، وعرفنا كيف يساعد على حماية البيانات وتنظيم طريقة الوصول إليها.
لكن أثناء بناء المشاريع قد نجد أن بعض الفئات تشترك في خصائص ووظائف متشابهة.
بدلًا من كتابة الكود نفسه داخل كل فئة، يمكن لفئة أن ترث الخصائص والوظائف من فئة أخرى.
وهذا ما يسمى الوراثة (Inheritance).
---
ما هي الوراثة؟
الوراثة هي مفهوم في البرمجة كائنية التوجه يسمح لفئة جديدة بالاستفادة من خصائص ووظائف فئة موجودة مسبقًا.
الفئة التي يتم الوراثة منها تسمى الفئة الأساسية (Base Class)، بينما الفئة التي ترث منها تسمى الفئة المشتقة (Derived Class).
---
لماذا نستخدم الوراثة؟
تساعد الوراثة على إعادة استخدام الكود بدلًا من كتابته أكثر من مرة.
فإذا كانت عدة فئات تشترك في خصائص أو وظائف معينة، يمكن وضع العناصر المشتركة في فئة أساسية، ثم إنشاء فئات أخرى ترث منها.
---
الفئة الأساسية (Base Class)
الفئة الأساسية تحتوي على الخصائص والوظائف المشتركة بين مجموعة من الفئات.
ويمكن للفئات المشتقة الاستفادة من هذه العناصر من خلال الوراثة.
وهذا يساعد على إنشاء تصميم أكثر تنظيمًا.
---
الفئة المشتقة (Derived Class)
الفئة المشتقة هي فئة ترث من فئة أساسية.
يمكنها استخدام العناصر التي ترثها، كما يمكنها إضافة خصائص ووظائف جديدة خاصة بها.
وبذلك يمكن توسيع الفئة الأساسية دون الحاجة إلى إعادة كتابة الكود المشترك.
---
الوراثة وإعادة استخدام الكود
من أهم فوائد الوراثة أنها تقلل تكرار الكود.
فعندما توجد وظيفة مشتركة بين عدة فئات، يمكن وضعها في الفئة الأساسية مرة واحدة، ثم الاستفادة منها في الفئات المشتقة.
---
أنواع الوراثة في C++
تدعم C++ عدة أشكال من الوراثة، ومنها:
- الوراثة المفردة (Single Inheritance).
- الوراثة المتعددة (Multiple Inheritance).
- الوراثة متعددة المستويات (Multilevel Inheritance).
- الوراثة الهرمية (Hierarchical Inheritance).
ويمكن اختيار النوع المناسب حسب تصميم المشروع والعلاقة بين الفئات.
---
أهمية الوراثة في OOP
تعتبر الوراثة من المفاهيم الأساسية في البرمجة كائنية التوجه.
وتساعد على بناء علاقات واضحة بين الفئات، خصوصًا عندما توجد علاقة منطقية بين نوع عام وأنواع أكثر تخصصًا.
---
استخدام الوراثة في مشاريع C++
تستخدم الوراثة في العديد من التطبيقات، مثل:
- الألعاب.
- البرامج الهندسية.
- التطبيقات المكتبية.
- الأنظمة الإدارية.
- المشاريع الكبيرة والمعقدة.
---
فوائد الوراثة
توفر الوراثة العديد من المزايا، منها:
- إعادة استخدام الكود.
- تقليل تكرار التعليمات.
- تنظيم العلاقة بين الفئات.
- تسهيل تطوير المشاريع.
- إضافة خصائص ووظائف جديدة للفئات المشتقة.
---
أخطاء شائعة عند المبتدئين
من الأخطاء التي يقع فيها المبتدئون:
- استخدام الوراثة دون وجود علاقة منطقية بين الفئات.
- إنشاء مستويات كثيرة من الوراثة دون حاجة.
- الخلط بين الفئة الأساسية والفئة المشتقة.
- عدم فهم تأثير محددات الوصول على العناصر الموروثة.
لذلك يجب استخدام الوراثة عندما تكون هناك علاقة واضحة ومناسبة بين الفئات.
---
ملخص الدرس
تعرفنا في هذا الدرس على الوراثة (Inheritance) في C++، وعرفنا كيف يمكن لفئة أن ترث خصائص ووظائف من فئة أخرى، وكيف تساعد الوراثة على إعادة استخدام الكود وتنظيم العلاقات بين الفئات.
في الدرس التاسع والعشرون سنتعرف على تعدد الأشكال (Polymorphism)، وسنفهم كيف يمكن للكائنات التعامل مع العملية نفسها بطرق مختلفة.



