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

تنفيذ الحساب

جزء من قسم البرمجة كائنية التوجه في رحلة C على Coddy. الدرس 23 من 61.

challenge icon

التحدي

سهل

حان الوقت الآن لإضفاء الحياة على حسابك المصرفي! لقد أنشأت بالفعل الواجهة العامة في account.h: والآن ستنفّذ الأجزاء الداخلية المخفية التي تجعله يعمل.

استنادًا إلى عملك السابق، ستضيف ملف المصدر الذي يحتوي على تعريف struct السري والتنفيذات الفعلية للدوال. هنا يحدث التغليف فعليًا: لا يوجد جسم struct إلا في ملف .c، وهو غير مرئي تمامًا لأي شخص يستخدم مكتبتك.

ستعمل باستخدام ثلاثة ملفات:

  • account.h: ملف الترويسة الموجود لديك، ويحتوي على إعلان النوع المعتم Account والنماذج الأولية للدالتين create_account وdestroy_account. احتفظ بحواجز التضمين الخاصة بك باستخدام ACCOUNT_H.
  • account.c: هنا يحدث السحر. عرّف struct Account الفعلي مع عضوين مخفيين: int id (معرّف الحساب) وdouble balance (يبدأ بالقيمة 0.0 للحسابات الجديدة). نفّذ الباني لتخصيص الذاكرة، وتعيين المعرّف من المعامل، وتهيئة الرصيد إلى الصفر. نفّذ المدمّر لتحرير الذاكرة بشكل صحيح.
  • main.c: اختبر تنفيذك من خلال إنشاء حساب والتأكد من عمله. بما أن أعضاء struct مخفيون، فلا يمكنك إلقاء نظرة داخلهم، لكن يمكنك التحقق من أن دورة الحياة تعمل بشكل صحيح.

ستتلقى مُدخلًا واحدًا: معرّف الحساب (عددًا صحيحًا) لتعيينه للحساب الجديد.

في ملف main الخاص بك، أنشئ حسابًا باستخدام المعرّف المُقدَّم، واطبع رسالة تأكيد تعرض المعرّف، ثم دمّر الحساب وأكّد إتمام التنظيف.

اطبع الناتج بهذا التنسيق:

Account 1001 created
Account destroyed

حيث يتم استبدال 1001 بالمعرّف الفعلي الذي تلقيته كمدخل.

تذكّر: لا يمكن لملف main.c الخاص بك الوصول مباشرةً إلى account->id أو account->balance. هذه الأعضاء مخفية تمامًا داخل account.c. في الوقت الحالي، ستستخدم فقط المعرّف من المدخل لرسالة الناتج الخاصة بك. في الدروس القادمة، ستضيف دوال getter لاسترداد البيانات المخفية بطريقة صحيحة.

جرّب بنفسك

#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 the account using destroy_account() and print "Account destroyed"

    return 0;
}

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم C عبر الإنترنت