Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تنفيذ الحساب

جزء من قسم Object Oriented Programming في رحلة C على Coddy — الدرس 23 من 61.

challenge icon

التحدي

سهل

الآن حان الوقت لبث الحياة في حسابك البنكي! لقد قمت بالفعل بإنشاء الواجهة العامة في 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