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

مراجعة - مدير الحساب البنكي

جزء من قسم Object Oriented Programming في رحلة Dart على Coddy — الدرس 22 من 110.

challenge icon

التحدي

سهل

لنقم ببناء نظام إدارة حسابات بنكية يجمع بين جميع مفاهيم خصائص الفئات (class properties) التي تعلمتها في هذا الفصل. ستقوم بإنشاء نظام يتتبع بيانات الحسابات الفردية مع الحفاظ أيضاً على إحصائيات البنك ككل.

ستقوم بتنظيم الكود الخاص بك في ملفين:

  • bank_account.dart: قم بتعريف فئة BankAccount تدير الحسابات الفردية وتتتبع إحصائيات البنك العامة. يجب أن تتضمن الفئة الخاصة بك ما يلي:
    • final String accountNumber لا يمكن تغييره بعد الإنشاء
    • String holderName لاسم صاحب الحساب
    • حقل خاص double _balance يبدأ بـ 0.0
    • static int totalAccounts يبدأ بـ 0 لتتبع عدد الحسابات الموجودة
    • static double totalDeposits يبدأ بـ 0.0 لتتبع جميع الإيداعات التي تمت عبر البنك
    • منشئ (constructor) يأخذ accountNumber و holderName، ويقوم بزيادة totalAccounts
    • مسترجع (getter) باسم balance يعيد الرصيد الحالي
    • دالة deposit(double amount) تضيف إلى الرصيد فقط إذا كان المبلغ موجباً، وتضيف أيضاً إلى totalDeposits عند النجاح
    • دالة withdraw(double amount) تطرح من الرصيد فقط إذا كان المبلغ موجباً ولا يتجاوز الرصيد الحالي
    • دالة displayInfo() تطبع تفاصيل الحساب
    • دالة ثابتة (static method) باسم getBankStats() تعيد سلسلة نصية تحتوي على إحصائيات البنك العامة
  • main.dart: قم باستيراد فئة الحساب البنكي واستعرض النظام:
    • أنشئ حساباً بالرقم 'ACC001' لـ 'Alice'
    • أنشئ حساباً بالرقم 'ACC002' لـ 'Bob'
    • أودع 500.0 في حساب Alice
    • أودع 300.0 في حساب Bob
    • اسحب 150.0 من حساب Alice
    • حاول سحب 1000.0 من حساب Bob (يجب تجاهله - رصيد غير كافٍ)
    • حاول إيداع -50.0 في حساب Alice (يجب تجاهله - مبلغ سالب)
    • استدعِ displayInfo() لحساب Alice، ثم لحساب Bob
    • اطبع إحصائيات البنك باستخدام BankAccount.getBankStats()

يجب أن تطبع دالة displayInfo() بهذا التنسيق:

Account [accountNumber] | Holder: [holderName] | Balance: $[balance]

يجب أن تعيد دالة getBankStats() ما يلي:

Bank Stats - Total Accounts: [totalAccounts] | Total Deposits: $[totalDeposits]

المخرجات المتوقعة:

Account ACC001 | Holder: Alice | Balance: $350.0
Account ACC002 | Holder: Bob | Balance: $300.0
Bank Stats - Total Accounts: 2 | Total Deposits: $800.0

جرّب بنفسك

import 'bank_account.dart';

void main() {
  // TODO: 'Alice' لـ 'ACC001' قم بإنشاء حساب برقم
  
  // TODO: 'Bob' لـ 'ACC002' قم بإنشاء حساب برقم
  
  // TODO: Alice أودع 500.0 في حساب
  
  // TODO: Bob أودع 300.0 في حساب
  
  // TODO: Alice اسحب 150.0 من حساب
  
  // TODO: (يجب تجاهل العملية) Bob حاول سحب 1000.0 من حساب
  
  // TODO: (يجب تجاهل العملية) Alice حاول إيداع -50.0 في حساب
  
  // TODO: Alice على حساب displayInfo() استدعِ الدالة
  
  // TODO: Bob على حساب displayInfo() استدعِ الدالة
  
  // TODO: BankAccount.getBankStats() قم بطباعة إحصائيات البنك باستخدام
}

جميع دروس Object Oriented Programming