الموضوع 10
التجريد Abstraction
نُظهر «ماذا يفعل» الشيء ونخفي «كيف يفعله»، ونجبر الكلاسات الوارثة على إكمال التفاصيل.
بعد هذا الدرس ستستطيع أن:
- تعرّف التجريد Abstraction، وتوضّح متى نستخدم الكلاس المجرد.
- تكتب كلاسًا مجردًا abstract يحتوي دوالًا مجردة ودوالًا عادية.
- تكتب كلاسًا يرث الكلاس المجرد وينفّذ جميع دواله المجردة.
- تفسّر خطأ الترجمة عند محاولة إنشاء كائن من كلاس مجرد.
١ما هو التجريد؟
إخفاء تفاصيل التنفيذ وإظهار الوظيفة فقط. تقود السيارة بالمقود والدوّاسات دون أن تعرف كيف يعمل المحرك من الداخل.
التغليفيخفي البيانات ويحميها.
التجريديخفي التنفيذ ويُظهر الوظيفة.
الوراثةتنقل المشترك من الأب إلى الأبناء.
تعدد الأشكالاستدعاء واحد بسلوكيات متعددة.
هذه هي المبادئ الأربعة للبرمجة الشيئية، ونكون بهذا الدرس قد درسناها كلها.
٢الكلاس المجرد abstract class
| القاعدة | التوضيح |
|---|---|
يُعرَّف بـ abstract class | لا يمكن إنشاء كائن منه: new Shape() خطأ ترجمة. |
| قد يحتوي دوال مجردة | دالة بلا جسم تنتهي بـ ; مثل abstract double getArea(); |
| وقد يحتوي دوالًا عادية وخصائص | تُورث جاهزة للأبناء. |
| الابن غير المجرد | يجب أن يكتب كل الدوال المجردة، وإلا فهو خطأ ترجمة. |
+ public- private# protected~ defaultمسطّر: staticمائل: abstract
٣متى نستخدم الكلاس المجرد؟
- تشابه في الفكرة واختلاف في التفاصيل: كل الأشكال لها مساحة، لكن Circle و Rectangle يحسبانها بطريقتين.
- منع إنشاء كائن من الأب: لا نستطيع حساب مساحة «شكل عام» قبل تحديد نوعه:
Shape s = new Shape();خطأ. - إجبار الأبناء على كتابة دوال معيّنة: أي كلاس يرث Shape يجب أن يكتب getArea، وإلا ظهر خطأ. وهذا ممتاز لأنه يُلزم المبرمجين بالتصميم العام.
| العنصر | الوصف |
|---|---|
| abstract class | كلاس لا يمكن إنشاء كائن منه مباشرة |
| abstract method | دالة بلا جسم، تُعرَّف فقط وتُنفَّذ في الكلاس الابن |
| هل توجد دالة عادية داخل الكلاس المجرد؟ | نعم |
| هل يجب على الابن تنفيذ الدوال المجردة؟ | نعم |
ويتحقق التجريد أيضًا بالواجهات interfaces، وتتعرّف عليها لاحقًا.
توقّع وتحقّق
أجب قبل أن تنظر إلى الشرح. التصحيح فوري، وإجاباتك تُحفظ.
أي سطر خطأ إذا كان Shape كلاسًا مجردًا؟
إنشاء مصفوفة من النوع المجرد مسموح؛ الممنوع إنشاء كائن منه.
الدالة المجردة:
الكلاس الابن يرث الكلاس المجرد بالكلمة:
كلاس ابن لم يكتب دالة مجردة ورثها، وهو غير مجرد:
الخلاصة
- التجريد: إظهار الوظيفة وإخفاء التنفيذ.
- abstract class لا يُنشأ منه كائن، وقد يحوي دوال مجردة وعادية.
- الابن غير المجرد يكتب كل الدوال المجردة.
- المبادئ الأربعة: التغليف، التجريد، الوراثة، تعدد الأشكال.