Menu
CoddyTech

Ôn tập: trình quản lý tài khoản ngân hàng

Thuộc phần Lập trình hướng đối tượng trong hành trình Dart của Coddy. Bài học 22 trên 110.

challenge icon

Thử thách

Dễ

Hãy xây dựng một hệ thống quản lý tài khoản ngân hàng, kết hợp tất cả các khái niệm về thuộc tính lớp (class property) bạn đã học trong chương này. Bạn sẽ tạo một hệ thống theo dõi dữ liệu của từng tài khoản, đồng thời duy trì số liệu thống kê trên toàn ngân hàng.

Bạn sẽ sắp xếp code thành hai tệp:

  • bank_account.dart: Định nghĩa lớp BankAccount để quản lý từng tài khoản và theo dõi số liệu thống kê chung của ngân hàng. Lớp của bạn cần có:
    • Một final String accountNumber không thể thay đổi sau khi tạo
    • Một String holderName lưu tên chủ tài khoản
    • Một trường riêng tư double _balance có giá trị ban đầu là 0.0
    • Một static int totalAccounts có giá trị ban đầu là 0 để theo dõi số lượng tài khoản hiện có
    • Một static double totalDeposits có giá trị ban đầu là 0.0 để theo dõi tất cả khoản tiền gửi trong ngân hàng
    • Một hàm khởi tạo nhận accountNumber và holderName, rồi tăng totalAccounts
    • Một getter balance trả về số dư hiện tại
    • Một phương thức deposit(double amount) chỉ cộng vào số dư nếu số tiền dương, đồng thời cộng vào totalDeposits khi gửi tiền thành công
    • Một phương thức withdraw(double amount) chỉ trừ số tiền khỏi số dư nếu số tiền dương và không vượt quá số dư hiện tại
    • Một phương thức displayInfo() in thông tin tài khoản
    • Một phương thức tĩnh getBankStats() trả về chuỗi chứa số liệu thống kê chung của ngân hàng
  • main.dart: Nhập lớp tài khoản ngân hàng và minh họa cách hoạt động của hệ thống:
    • Tạo một tài khoản có số 'ACC001' cho 'Alice'
    • Tạo một tài khoản có số 'ACC002' cho 'Bob'
    • Gửi 500.0 vào tài khoản của Alice
    • Gửi 300.0 vào tài khoản của Bob
    • Rút 150.0 từ tài khoản của Alice
    • Thử rút 1000.0 từ tài khoản của Bob (sẽ bị bỏ qua vì không đủ tiền)
    • Thử gửi -50.0 vào tài khoản của Alice (sẽ bị bỏ qua vì số tiền âm)
    • Gọi displayInfo() trên tài khoản của Alice, rồi đến tài khoản của Bob
    • In số liệu thống kê của ngân hàng bằng BankAccount.getBankStats()

Phương thức displayInfo() sẽ in theo định dạng sau:

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

Phương thức getBankStats() sẽ trả về:

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

Đầu ra dự kiến:

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

Tự làm thử

import 'bank_account.dart';

void main() {
  // TODO: Tạo tài khoản số 'ACC001' cho 'Alice'
  
  // TODO: Tạo tài khoản số 'ACC002' cho 'Bob'
  
  // TODO: Nạp 500.0 vào tài khoản của Alice
  
  // TODO: Nạp 300.0 vào tài khoản của Bob
  
  // TODO: Rút 150.0 từ tài khoản của Alice
  
  // TODO: Thử rút 1000.0 từ tài khoản của Bob (thao tác này sẽ bị bỏ qua)
  
  // TODO: Thử nạp -50.0 vào tài khoản của Alice (thao tác này sẽ bị bỏ qua)
  
  // TODO: Gọi displayInfo() trên tài khoản của Alice
  
  // TODO: Gọi displayInfo() trên tài khoản của Bob
  
  // TODO: In ra số liệu thống kê của ngân hàng bằng BankAccount.getBankStats()
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Dart online