مقدمة
في الدرس السابق تعرفنا على تعدد الأشكال (Polymorphism)، وعرفنا كيف يمكن للكائنات أن تتعامل مع الوظيفة نفسها بطرق مختلفة.
ومن المفاهيم الأساسية الأخرى في البرمجة كائنية التوجه التجريد (Abstraction).
يساعد التجريد على التركيز على ما يفعله الكائن بدلًا من التركيز على التفاصيل الداخلية لكيفية تنفيذ المهمة.
---
ما هو التجريد؟
التجريد هو أسلوب يسمح بإخفاء التفاصيل الداخلية المعقدة وإظهار الأجزاء المهمة فقط للمستخدم أو لبقية البرنامج.
فمثلًا عند استخدام نظام معين، قد تعرف الوظيفة التي يؤديها دون الحاجة إلى معرفة جميع التفاصيل الداخلية التي تجعله يعمل.
الفكرة نفسها يمكن تطبيقها في البرمجة.
---
لماذا نستخدم التجريد؟
عندما تصبح البرامج كبيرة، قد تحتوي بعض العمليات على تفاصيل كثيرة لا يحتاج باقي البرنامج إلى معرفتها.
يمكن إخفاء هذه التفاصيل خلف واجهة واضحة، بحيث يتعامل الجزء الآخر من البرنامج مع الوظائف المهمة فقط.
وهذا يقلل من تعقيد البرنامج.
---
الفئات المجردة (Abstract Classes)
في C++ يمكن تطبيق التجريد باستخدام الفئات المجردة، وغالبًا يتم ذلك من خلال الدوال الافتراضية الخالصة Pure Virtual Functions.
الفئة التي تحتوي على دالة افتراضية خالصة تصبح فئة مجردة، ولا يمكن إنشاء كائن مباشر منها.
---
الدوال الافتراضية الخالصة
الدالة الافتراضية الخالصة هي دالة يتم الإعلان عنها داخل الفئة الأساسية دون تقديم تنفيذ فعلي لها داخلها.
وتقوم الفئات المشتقة بتوفير التنفيذ المناسب لها.
وهذا يسمح للفئة الأساسية بتحديد السلوك الذي يجب أن توفره الفئات المشتقة.
---
التجريد باستخدام الفئات الأساسية
يمكن استخدام فئة أساسية لتحديد مجموعة من الوظائف المشتركة، ثم تقوم الفئات المشتقة بتوفير التفاصيل الخاصة بكل نوع.
وبذلك يعرف البرنامج ما الذي يجب أن يفعله الكائن دون الحاجة إلى تحديد جميع تفاصيل التنفيذ في الفئة الأساسية.
---
الفرق بين التجريد والتغليف
هناك فرق مهم بين المفهومين:
التغليف (Encapsulation): يهتم بحماية البيانات وتنظيم الوصول إليها.
التجريد (Abstraction): يهتم بإخفاء تفاصيل التنفيذ غير الضرورية وإظهار الوظائف المهمة.
كلاهما يساعد على بناء برامج أكثر تنظيمًا.
---
أهمية التجريد في OOP
التجريد من المفاهيم الأساسية في البرمجة كائنية التوجه.
ويساعد على تقليل تعقيد المشاريع الكبيرة، كما يجعل تصميم البرنامج أكثر وضوحًا وقابلية للتوسع.
---
استخدام التجريد في مشاريع C++
يستخدم التجريد في العديد من التطبيقات، مثل:
- الألعاب.
- البرامج الهندسية.
- التطبيقات المكتبية.
- الأنظمة الإدارية.
- المشاريع البرمجية الكبيرة.
---
فوائد التجريد
يوفر التجريد العديد من المزايا، منها:
- تقليل تعقيد الكود.
- إخفاء تفاصيل التنفيذ.
- تحسين تنظيم البرنامج.
- تسهيل تطوير المشاريع.
- إنشاء تصميمات أكثر مرونة.
---
أخطاء شائعة عند المبتدئين
من الأخطاء التي يقع فيها المبتدئون:
- الخلط بين التجريد والتغليف.
- محاولة إنشاء كائن من فئة مجردة.
- عدم فهم الدوال الافتراضية الخالصة.
- استخدام التجريد دون وجود حاجة حقيقية.
لذلك من الأفضل فهم الهدف من التجريد قبل استخدامه في المشاريع.
---
ملخص الدرس
تعرفنا في هذا الدرس على التجريد (Abstraction) في C++، وعرفنا كيف يساعد على إخفاء تفاصيل التنفيذ غير الضرورية والتركيز على الوظائف الأساسية، كما تعرفنا على الفئات المجردة والدوال الافتراضية الخالصة.
في الدرس الحادي والثلاثون سنتعرف على المؤشرات الذكية (Smart Pointers)، وسنفهم كيف تساعدنا C++ على إدارة الذاكرة بطريقة أكثر أمانًا وتنظيمًا.



