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

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

جزء من قسم Object Oriented Programming في رحلة Java على Coddy — الدرس 14 من 87.

challenge icon

التحدي

سهل

لنقم ببناء نظام BankAccount متكامل يجمع كل ما تعلمته حول التغليف (encapsulation)، ومحددات الوصول (access modifiers)، والـ getters والـ setters، والكلمة المفتاحية final.

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

  • BankAccount.java: صمم فئة حساب بنكي آمنة تحمي البيانات المالية الحساسة:
    • رقم حساب غير قابل للتغيير (immutable) لا يمكن تعديله بمجرد إنشاء الحساب.
    • رصيد خاص (private balance) يبدأ بـ 0.0 ولا يمكن تعديله إلا من خلال طرق محكومة.
    • اسم صاحب حساب خاص (private owner name) يمكن استرجاعه ولكن لا يمكن تغييره مباشرة.
    • منشئ (constructor) يأخذ رقم الحساب واسم صاحب الحساب.
    • getter لرقم الحساب.
    • getter لاسم صاحب الحساب.
    • getter للرصيد.
    • طريقة deposit(double amount) تضيف إلى الرصيد فقط إذا كان المبلغ موجباً، وتعيد true في حالة النجاح أو false إذا تم الرفض.
    • طريقة withdraw(double amount) تطرح من الرصيد فقط إذا كان المبلغ موجباً وتوفرت أموال كافية، وتعيد true في حالة النجاح أو false إذا تم الرفض.
    • طريقة getAccountSummary() تعيد: "Account [accountNumber] | Owner: [ownerName] | Balance: $[balance]" (مع تنسيق الرصيد إلى منزلتين عشريتين).
  • Main.java: قم بإنشاء BankAccount وإجراء سلسلة من المعاملات. ستتلقى خمسة مدخلات: رقم الحساب، اسم صاحب الحساب، مبلغ الإيداع، مبلغ السحب الأول، ومبلغ السحب الثاني. اطبع أربعة أسطر:
    • نتيجة الإيداع: Deposit: true أو Deposit: false
    • نتيجة السحب الأول: Withdraw 1: true أو Withdraw 1: false
    • نتيجة السحب الثاني: Withdraw 2: true أو Withdraw 2: false
    • ملخص الحساب النهائي.

ستتلقى خمسة مدخلات بالترتيب: accountNumber (String)، و ownerName (String)، و depositAmount (double)، و withdrawAmount1 (double)، و withdrawAmount2 (double).

لتنسيق الرصيد إلى منزلتين عشريتين، يمكنك استخدام String.format("%.2f", balance).

جرّب بنفسك

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // قراءة المدخلات
        String accountNumber = scanner.nextLine();
        String ownerName = scanner.nextLine();
        double depositAmount = scanner.nextDouble();
        double withdrawAmount1 = scanner.nextDouble();
        double withdrawAmount2 = scanner.nextDouble();
        
        // TODO: إنشاء كائن BankAccount باستخدام accountNumber و ownerName
        
        // TODO: إجراء عملية الإيداع وطباعة النتيجة كـ "Deposit: true" أو "Deposit: false"
        
        // TODO: إجراء عملية السحب الأولى وطباعة النتيجة كـ "Withdraw 1: true" أو "Withdraw 1: false"
        
        // TODO: إجراء عملية السحب الثانية وطباعة النتيجة كـ "Withdraw 2: true" أو "Withdraw 2: false"
        
        // TODO: طباعة ملخص الحساب
    }
}

جميع دروس Object Oriented Programming