تنفيذ الحساب
جزء من قسم Object Oriented Programming في رحلة C على Coddy — الدرس 23 من 61.
التحدي
سهلالآن حان الوقت لبث الحياة في حسابك البنكي! لقد قمت بالفعل بإنشاء الواجهة العامة في account.h—والآن ستقوم بتنفيذ التفاصيل الداخلية المخفية التي تجعلها تعمل.
بناءً على عملك السابق، ستضيف ملف المصدر الذي يحتوي على تعريف الـ struct السري والتنفيذ الفعلي للدوال. هذا هو المكان الذي يحدث فيه التغليف (encapsulation) حقاً—حيث يوجد جسم الـ struct فقط في ملف .c، وهو غير مرئي تماماً لأي شخص يستخدم مكتبتك.
ستعمل على ثلاثة ملفات:
account.h: ملف الرأس الحالي الخاص بك مع إعلان نوعAccountغير الشفاف ونماذج الدوال لـcreate_accountوdestroy_account. حافظ على حراس التضمين (include guards) باستخدامACCOUNT_H.account.c: هذا هو المكان الذي يحدث فيه السحر. قم بتعريفstruct Accountالفعلي مع عضوين مخفيين:int id(معرف الحساب) وdouble balance(يبدأ بـ 0.0 للحسابات الجديدة). قم بتنفيذ المنشئ (constructor) لتخصيص الذاكرة، وتعيين المعرف من المعامل، وتهيئة الرصيد إلى الصفر. قم بتنفيذ المدمر (destructor) لتحرير الذاكرة بشكل صحيح.main.c: اختبر تنفيذك عن طريق إنشاء حساب والتأكد من أنه يعمل. نظراً لأن أعضاء الـ struct مخفية، لا يمكنك النظر بداخلها—ولكن يمكنك التحقق من أن دورة الحياة تعمل بشكل صحيح.
ستتلقى مدخلاً واحداً: account ID (عدد صحيح) لتعيينه للحساب الجديد.
في ملفك الرئيسي، قم بإنشاء حساب بالمعرف المقدم، واطبع رسالة تأكيد تظهر المعرف، ثم قم بتدمير الحساب وتأكيد عملية التنظيف.
اطبع المخرجات بهذا التنسيق:
Account 1001 created
Account destroyedحيث يتم استبدال 1001 بالمعرف الفعلي الذي تلقيته كمدخل.
تذكر: لا يمكن لملف main.c الخاص بك الوصول إلى account->id أو account->balance مباشرة—هذه الأعضاء مخفية تماماً داخل account.c. في الوقت الحالي، ستستخدم فقط المعرف من المدخلات لرسالة المخرجات الخاصة بك. في الدروس القادمة، ستضيف دوال جلب (getter functions) لاسترداد البيانات المخفية بشكل صحيح.
جرّب بنفسك
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
// TODO: اقرأ account_id من المدخلات
scanf("%d", &account_id);
// TODO: أنشئ حساباً باستخدام create_account() واطبع "Account <id> created"
// TODO: احذف الحساب باستخدام destroy_account() واطبع "Account destroyed"
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مشروع: رسّام الأشكال
نظرة عامة على المشروعتنفيذ الدائرة