ما الذي يجعل مشروع OOP مفيدًا؟
الفكرة الأساسية
المشروع الجيد يعطي الكائن قواعد يحافظ عليها. هنا نمذج نسخة كتاب افتراضية تكون متاحة أو معارة. الهدف فهم تغيرات الحالة الصحيحة، وليس بناء نظام مكتبة كامل.
استخدم معرفات مختلقة. لا تحتاج بيانات مستعيرين حقيقية أو مدفوعات أو قاعدة بيانات حتى تتعلم الفكرة.
اكتب الحالات قبل الدوال
للنسخة معرف وحالة. تنجح الإعارة إذا كانت متاحة، وينجح الإرجاع إذا كانت معارة. العملية المرفوضة تترك الحالة كما هي.
| الحالة الحالية | الطلب | النتيجة | الحالة الجديدة |
|---|---|---|---|
| متاحة | إعارة | نجاح | معارة |
| معارة | إعارة | رفض | معارة |
| معارة | إرجاع | نجاح | متاحة |
| متاحة | إرجاع | رفض | متاحة |
هذا الجدول أساس المواصفات. عندما يختلف الكود عنه، راجع أيهما يحتاج التصحيح بدل تغيير السلوك دون قرار.
صمم واجهة صغيرة
يمكن استخدام عمليات مثل borrow وreturnCopy وisAvailable. الأهم أن يكون سلوكها محددًا، وأن تعيد نتيجة يستطيع المستدعي فحصها.
احتفظ بالحالة خاصة، ولا تضف دالة عامة تسمح بتركيب أي حالة عشوائية. يمكن لنوع تعدادي التعبير عن الحالتين. لا تضف بيانات مستعير قبل تحديد أثرها على القاعدة.
حالات قبول قبل التنفيذ
- تبدأ النسخة الجديدة متاحة.
- تنجح أول إعارة.
- تفشل الإعارة الثانية دون تغيير الحالة.
- ينجح الإرجاع.
- يفشل الإرجاع الثاني دون تغيير الحالة.
اختبر أيضًا أن استخدام نسخة كتاب لا يغير نسخة أخرى. بذلك تراجع الفرق بين حالة كل كائن والبيانات المشتركة بالخطأ.
أضف امتدادًا واحدًا
لو أضفت حجزًا، فهل يستطيع أي شخص استعارة النسخة المحجوزة أم صاحب الحجز فقط؟ تحتاج الآن قاعدة أغنى أو حالات إضافية واختبارات جديدة.
لا تضف متغيرًا للحجز وتفترض أن كل تركيباته منطقية. اكتب انتقالات الحالة أولًا، واجعل الزيادة تخدم دقة النموذج.
حدود التمرين
هذا النموذج في عملية واحدة لا يعالج الإعارة المتزامنة أو الحفظ أو الاستعادة بعد التوقف. هذه مسائل مستقلة يمكن دراستها لاحقًا.
يأتي OOP بعد C++ في جمال تك. استخدم المشروع لشرح التغليف والحالات الصحيحة. قدرتك على تفسير رفض الإعارة الثانية واستقلال كائن عن آخر دليل فهم أوضح من مجرد كتابة تعريف كلاس.
مراجع وتفاصيل الكورسات
المراجع التالية تساعد على متابعة التعلم. الأمثلة والتمارين في هذا المقال تعليمية، وتفاصيل الكورسات تُراجع من الكتالوج.