package CHAPTER05;

//은행 계좌를 관리하는 BankAccount 클래스
public class BankAccount {

	private double balance; // 잔액 (private: 외부에서 직접 접근 불가)

	// 생성자: 초기 잔액 설정 (유효성 검사 포함)
	public BankAccount(double initialBalance) {
		if (initialBalance >= 0) {
			this.balance = initialBalance; // 초기 잔액이 0 이상이면 설정
		} else {
			System.out.println("초기 잔액은 0 이상이어야 합니다."); // 음수일 경우 오류 메시지 출력
			this.balance = 0; // 기본값 0으로 설정
		}
	}

	// 잔액 조회 메서드 (getter)
	public double getBalance() {
		return balance; // 현재 잔액 반환 (직접 접근 대신 메서드 사용)
	}

	// 입금 메서드 (유효한 금액만 가능)
	public void deposit(double amount) {
		if (amount > 0) {
			balance += amount; // 입금 처리
			System.out.println(amount + "원이 입금되었습니다. 현재 잔액: " + balance);
		} else {
			System.out.println("유효한 금액을 입금하세요."); // 음수 또는 0 입금 방지
		}
	}

	// 출금 메서드 (잔액 부족 방지)
	public void withdraw(double amount) {
		if (amount > 0 && amount <= balance) {
			balance -= amount; // 출금 처리
			System.out.println(amount + "원이 출금되었습니다. 현재 잔액: " + balance);
		} else {
			System.out.println("출금할 수 없는 금액입니다."); // 음수, 0 또는 잔액 초과 출금 방지
		}
	}
}
