Menu
Coddy logo textTech

요약 - 은행 계좌 관리 프로그램

Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 22번째.

challenge icon

챌린지

쉬움

이번 장에서 배운 모든 클래스 속성 개념을 한데 모아 은행 계좌 관리 시스템을 구축해 보겠습니다. 개별 계좌 데이터를 추적하는 동시에 은행 전체의 통계도 유지하는 시스템을 만들 것입니다.

코드는 다음 두 개의 파일로 구성합니다:

  • bank_account.dart: 개별 계좌를 관리하고 전체 은행 통계를 추적하는 BankAccount 클래스를 정의합니다. 클래스에는 다음이 포함되어야 합니다:
    • 생성 후 변경할 수 없는 final String accountNumber
    • 계좌 소유자 이름을 위한 String holderName
    • 0.0으로 시작하는 프라이빗 double _balance 필드
    • 존재하는 계좌 수를 추적하기 위해 0으로 시작하는 static int totalAccounts
    • 은행 전체에서 이루어진 모든 예금액을 추적하기 위해 0.0으로 시작하는 static double totalDeposits
    • accountNumberholderName을 매개변수로 받고, totalAccounts를 증가시키는 생성자
    • 현재 잔액을 반환하는 게터 balance
    • 금액이 양수일 때만 잔액에 추가하고, 성공 시 totalDeposits에도 추가하는 deposit(double amount) 메서드
    • 금액이 양수이고 현재 잔액을 초과하지 않을 때만 잔액에서 차감하는 withdraw(double amount) 메서드
    • 계좌 상세 정보를 출력하는 displayInfo() 메서드
    • 은행 전체 통계를 문자열로 반환하는 정적 메서드 getBankStats()
  • main.dart: 은행 계좌 클래스를 임포트하고 시스템을 시연합니다:
    • 계좌 번호 'ACC001', 소유자 'Alice'인 계좌를 생성합니다.
    • 계좌 번호 'ACC002', 소유자 'Bob'인 계좌를 생성합니다.
    • Alice의 계좌에 500.0을 예금합니다.
    • Bob의 계좌에 300.0을 예금합니다.
    • Alice의 계좌에서 150.0을 출금합니다.
    • Bob의 계좌에서 1000.0 출금을 시도합니다 (잔액 부족으로 무시되어야 함).
    • Alice의 계좌에 -50.0 예금을 시도합니다 (음수 금액으로 무시되어야 함).
    • Alice의 계좌와 Bob의 계좌에서 각각 displayInfo()를 호출합니다.
    • 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()를 사용하여 은행 통계 출력
}

객체 지향 프로그래밍의 모든 레슨