요약 - 은행 계좌 관리 프로그램
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 22번째.
챌린지
쉬움이번 장에서 배운 모든 클래스 속성 개념을 한데 모아 은행 계좌 관리 시스템을 구축해 보겠습니다. 개별 계좌 데이터를 추적하는 동시에 은행 전체의 통계도 유지하는 시스템을 만들 것입니다.
코드는 다음 두 개의 파일로 구성합니다:
bank_account.dart: 개별 계좌를 관리하고 전체 은행 통계를 추적하는BankAccount클래스를 정의합니다. 클래스에는 다음이 포함되어야 합니다:- 생성 후 변경할 수 없는
final String accountNumber - 계좌 소유자 이름을 위한
String holderName 0.0으로 시작하는 프라이빗double _balance필드- 존재하는 계좌 수를 추적하기 위해
0으로 시작하는static int totalAccounts - 은행 전체에서 이루어진 모든 예금액을 추적하기 위해
0.0으로 시작하는static double totalDeposits accountNumber와holderName을 매개변수로 받고,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()를 사용하여 은행 통계 출력
}