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

الحصول على الرصيد

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

challenge icon

التحدي

سهل

حسابك البنكي مكتمل تقريبًا! لقد قمت ببناء القدرة على إنشاء الحسابات، وإيداع الأموال، وسحب المال — ولكن هناك قطعة واحدة حاسمة مفقودة. في الوقت الحالي، لا تملك الأكواد الخارجية أي وسيلة لرؤية الرصيد الحالي. دعنا نصلح ذلك بإضافة دالة جلب (getter function).

دالة الجلب (getter) هي الطريقة الصحيحة للكشف عن البيانات المخفية في وحدة مغلفة (encapsulated module). بدلاً من جعل حقل الرصيد عامًا (مما قد يكسر مبدأ التغليف)، فإنك توفر دالة للقراءة فقط تعيد القيمة. هذا يحافظ على حماية البيانات مع السماح بالوصول المتحكم فيه.

ستستمر في العمل مع ملفاتك الثلاثة:

  • account.h: أضف نموذجًا أوليًا لدالة جديدة: get_balance. تأخذ هذه الدالة const Account * (بما أنها تقرأ البيانات فقط ولا تعدلها أبدًا) وتعيد double يمثل الرصيد الحالي. احتفظ بجميع تصريحاتك الحالية.
  • account.c: قم بتنفيذ دالة get_balance. إنها ببساطة تعيد حقل الرصيد المخفي من الحساب. لاحظ كيف يمكن لهذه الدالة الوصول إلى البيانات الداخلية لأنها محددة في نفس الملف الذي يحتوي على الهيكل (struct) — بينما لا يزال الكود الخارجي لا يستطيع التلصص على الداخل مباشرة.
  • main.c: الآن يمكنك أخيرًا رؤية ما يحدث داخل حساباتك! أنشئ حسابًا، وقم بإجراء بعض المعاملات، واستخدم دالة الجلب الجديدة لعرض الرصيد في كل خطوة.

ستتلقى أربعة مدخلات: معرف الحساب (عدد صحيح)، ومبلغ الإيداع، ومبلغ السحب، ومبلغ إيداع ثانٍ.

في ملفك الرئيسي، أنشئ حسابًا واطبع رصيده الأولي (يجب أن يكون 0.00). أودع المبلغ الأول واطبع الرصيد الجديد. اسحب المبلغ المحدد واطبع الرصيد مرة أخرى. أخيرًا، قم بالإيداع الثاني واطبع الرصيد النهائي. ثم قم بتدمير الحساب.

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

Account 1001 created
Balance: 0.00
Balance: 500.00
Balance: 200.00
Balance: 350.00
Account destroyed

حيث 1001 هو معرف الحساب، وتعكس الأرصدة: الأولي (0.00)، بعد إيداع 500.00، بعد سحب 300.00، وبعد إيداع 150.00 أخرى. قم بتنسيق جميع قيم الرصيد بمنزلتين عشريتين باستخدام %.2f.

مع وجود دالة الجلب هذه، توفر وحدة الحساب البنكي الخاصة بك الآن وصولاً كاملاً ومتحكمًا فيه لبيانات الحساب — يمكن للمستخدمين رؤية الرصيد ولكن لا يمكنهم تعديله إلا من خلال دوال الإيداع والسحب المعتمدة لديك.

جرّب بنفسك

#include <stdio.h>
#include "account.h"

int main() {
    int account_id;
    scanf("%d", &account_id);
    
    double deposit1;
    scanf("%lf", &deposit1);
    
    double withdraw_amount;
    scanf("%lf", &withdraw_amount);
    
    double deposit2;
    scanf("%lf", &deposit2);
    
    Account* account = create_account(account_id);
    printf("Account %d created\n", account_id);
    
    // TODO: اطبع الرصيد الأولي باستخدام get_balance
    
    deposit(account, deposit1);
    // TODO: اطبع الرصيد بعد الإيداع الأول
    
    withdraw(account, withdraw_amount);
    // TODO: اطبع الرصيد بعد السحب
    
    deposit(account, deposit2);
    // TODO: اطبع الرصيد بعد الإيداع الثاني
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

جميع دروس Object Oriented Programming