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 Java của Coddy. Bài học 14 trên 87.

challenge icon

Thử thách

Dễ

Hãy xây dựng một hệ thống BankAccount hoàn chỉnh, kết hợp mọi thứ bạn đã học về tính đóng gói, các phạm vi truy cập, getter, setter và từ khóa final.

Bạn sẽ tạo hai tệp để sắp xếp code:

  • BankAccount.java: Thiết kế một lớp tài khoản ngân hàng an toàn, bảo vệ dữ liệu tài chính nhạy cảm:
    • Một số tài khoản bất biến, không thể thay đổi sau khi tạo tài khoản
    • Một số dư riêng tư, bắt đầu ở mức 0.0 và chỉ có thể thay đổi thông qua các phương thức được kiểm soát
    • Một tên chủ tài khoản riêng tư, có thể truy xuất nhưng không thể thay đổi trực tiếp
    • Một hàm khởi tạo nhận số tài khoản và tên chủ tài khoản
    • Một getter cho số tài khoản
    • Một getter cho tên chủ tài khoản
    • Một getter cho số dư
    • Một phương thức deposit(double amount) chỉ cộng vào số dư nếu số tiền dương, trả về true nếu thành công hoặc false nếu bị từ chối
    • Một phương thức withdraw(double amount) chỉ trừ vào số dư nếu số tiền dương VÀ có đủ tiền, trả về true nếu thành công hoặc false nếu bị từ chối
    • Một phương thức getAccountSummary() trả về: "Account [accountNumber] | Owner: [ownerName] | Balance: $[balance]" (số dư được định dạng đến 2 chữ số thập phân)
  • Main.java: Tạo một BankAccount và thực hiện một loạt giao dịch. Bạn sẽ nhận năm đầu vào: số tài khoản, tên chủ tài khoản, số tiền gửi, số tiền rút lần đầu và số tiền rút lần thứ hai. In ra bốn dòng:
    • Kết quả gửi tiền: Deposit: true hoặc Deposit: false
    • Kết quả rút tiền lần đầu: Withdraw 1: true hoặc Withdraw 1: false
    • Kết quả rút tiền lần thứ hai: Withdraw 2: true hoặc Withdraw 2: false
    • Tóm tắt tài khoản cuối cùng

Bạn sẽ nhận lần lượt năm đầu vào: accountNumber (String), ownerName (String), depositAmount (double), withdrawAmount1 (double), withdrawAmount2 (double).

Để định dạng số dư đến 2 chữ số thập phân, bạn có thể dùng String.format("%.2f", balance).

Tự làm thử

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Đọc dữ liệu đầu vào
        String accountNumber = scanner.nextLine();
        String ownerName = scanner.nextLine();
        double depositAmount = scanner.nextDouble();
        double withdrawAmount1 = scanner.nextDouble();
        double withdrawAmount2 = scanner.nextDouble();
        
        // TODO: Tạo đối tượng BankAccount với accountNumber và ownerName
        
        // TODO: Nạp tiền và in kết quả là "Deposit: true" hoặc "Deposit: false"
        
        // TODO: Rút tiền lần đầu và in kết quả là "Withdraw 1: true" hoặc "Withdraw 1: false"
        
        // TODO: Rút tiền lần thứ hai và in kết quả là "Withdraw 2: true" hoặc "Withdraw 2: false"
        
        // TODO: In thông tin tóm tắt tài khoản
    }
}

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 Java online