إعداد المشروع
جزء من قسم Object Oriented Programming في رحلة C على Coddy — الدرس 22 من 61.
التحدي
سهللنبدأ في بناء مكتبة حسابك البنكي! في هذه الخطوة الأولى، ستقوم بإنشاء الواجهة العامة — ملف الرأس (header file) الذي يحدد العمليات الموجودة دون الكشف عن أي تفاصيل تتعلق بالتنفيذ.
ستقوم بإنشاء ملفين لإرساء أساس المشروع:
account.h: ملف الرأس العام الخاص بك. هذا هو الملف الذي سيقوم مستخدمو مكتبتك بتضمينه. قم بالتصريح عن نوعAccountمبهم (opaque) باستخدام تصريح نوع غير مكتمل — بدون جسم الـ struct، مجرد تصريح مسبق (forward declaration) يخبر المترجم بوجود هذا النوع. ثم قم بالتصريح عن النماذج الأولية للدوال (function prototypes) لكل منcreate_account(تأخذ عدداً صحيحاً لمعرف الحساب وتعيد مؤشراً من نوع Account) وdestroy_account(تأخذ مؤشراً من نوع Account ولا تعيد شيئاً). لا تنسَ حواجز التضمين (include guards) باستخدام الرمزACCOUNT_H.main.c: ملف اختبار بسيط للتحقق من أن ملف الرأس الخاص بك يترجم بشكل صحيح. قم بتضمين ملف الرأس الخاص بك واطبع رسالة تؤكد أن الواجهة جاهزة. بما أننا لم نقم بتنفيذ الدوال بعد، فما عليك سوى طباعة رسالة تأكيد — التنفيذ الفعلي سيأتي في الدرس القادم.
الفكرة الجوهرية هنا هي أن ملف الرأس الخاص بك يكشف ماذا يمكن لوحدة الحساب (Account module) أن تفعل (إنشاء وتدمير الحسابات) دون إظهار كيفية تخزين البيانات داخلياً. أي شخص يقوم بتضمين account.h سيعرف بوجود نوع Account وما هي الدوال المتاحة، لكنه لن يتمكن من الوصول إلى أي حقول داخلية — لأنك لم تقم بتعريف أي منها في ملف الرأس!
يجب أن يخرج ملفك الرئيسي ما يلي:
Account interface readyهذا يمهد الطريق لنظام الحساب البنكي الكامل الذي ستبنيه على مدار الدروس القليلة القادمة. ملف الرأس الذي تنشئه الآن سيتوسع ليشمل deposit و withdraw و get_balance مع تقدمك في المشروع.
جرّب بنفسك
#include <stdio.h>
#include "account.h"
int main() {
// TODO: طباعة رسالة تؤكد أن الواجهة جاهزة
// يجب أن تكون الرسالة: "Account interface ready"
return 0;
}
جميع دروس Object Oriented Programming
1أساسيات البرمجة التركيبية
ملفات الترويسةحواجز التضمينملفات المصدرالدوال الساكنةمراجعة: آلة حاسبة تركيبية4التغليف (Encapsulation)
مفهوم الـ Opaque Pointersتعريف الـ Opaque Structsالـ Getters والـ Settersالتحقق من البيانات في الـ Settersملخص: الصندوق السري2الكائنات والأساليب
الـ Structs ككائناتمؤشر 'Self'صحة استخدام Constالمؤشر مقابل القيمةالأساليب المساعدةملخص: Point Manager5مشروع: حساب بنكي بسيط
إعداد المشروعتنفيذ الحساب3دورة حياة الكائن
نمط المنشئ (Constructor Pattern)نمط الهادم (Destructor Pattern)تهيئة الـ Stackالنسخ العميق (Deep Copy)مراجعة: String Wrapper6الوراثة عبر التركيب
تضمين الـ Structقاعدة العضو الأولالوصول إلى أعضاء الأبعملية الـ Upcastingمراجعة: هرمية الأشكال9مشروع: رسّام الأشكال
نظرة عامة على المشروعتنفيذ الدائرة