요약 - 은행 계좌 관리자
Coddy Java 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 87개 중 14번째.
챌린지
쉬움캡슐화, 접근 제어자, getter, setter, 그리고 final 키워드에 대해 배운 모든 내용을 종합하여 완전한 BankAccount 시스템을 구축해 봅시다.
코드를 구성하기 위해 두 개의 파일을 생성합니다:
BankAccount.java: 민감한 금융 데이터를 보호하는 안전한 은행 계좌 클래스를 설계합니다:- 계좌가 생성된 후에는 절대 변경할 수 없는 불변(immutable) 계좌 번호
- 0.0으로 시작하며 제어된 메서드를 통해서만 수정할 수 있는 private 잔액
- 조회는 가능하지만 직접 변경할 수 없는 private 소유자 이름
- 계좌 번호와 소유자 이름을 매개변수로 받는 생성자
- 계좌 번호를 위한 getter
- 소유자 이름을 위한 getter
- 잔액을 위한 getter
- 금액이 양수인 경우에만 잔액에 추가하고, 성공 시
true, 거부 시false를 반환하는deposit(double amount)메서드 - 금액이 양수이고 잔액이 충분한 경우에만 잔액에서 차감하며, 성공 시
true, 거부 시false를 반환하는withdraw(double amount)메서드 - 다음 형식을 반환하는
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 - 최종 계좌 요약(account summary)
- 입금 결과:
계좌 번호(String), 소유자 이름(String), 입금액(double), 첫 번째 출금액(double), 두 번째 출금액(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: accountNumber와 ownerName을 사용하여 BankAccount 객체 생성
// TODO: 입금을 수행하고 결과를 "Deposit: true" 또는 "Deposit: false"로 출력
// TODO: 첫 번째 출금을 수행하고 결과를 "Withdraw 1: true" 또는 "Withdraw 1: false"로 출력
// TODO: 두 번째 출금을 수행하고 결과를 "Withdraw 2: true" 또는 "Withdraw 2: false"로 출력
// TODO: 계좌 요약 정보 출력
}
}
객체 지향 프로그래밍의 모든 레슨
4상속
상속의 기초 (extends)super 키워드메서드 오버라이딩 (@Override)생성자 체이닝Object 클래스단일 및 다중 레벨 상속다중 클래스 상속이 불가능한 이유요약 - 직원 계층 구조