package ch10_quiz;

public class BankBook {
	/*
	 * 하나의 은행 상품을 관리하는 BankBook class 를 정의하고, BankBookManager class 에서 테스트 하세요
	 * - 이율 : 한번의 설정으로 모든 계좌의 이율 변경 가능
	 *   계좌번호 : 한번 설정 후 변경 불가
	 *   고객명, 잔액
	 * - 기능
	 *   > 입/출금, 통장 정보 확인, 이율 확인/변경 가능
	 */
	private static double rate;
	private final String account;
	private String name;
	private int balance;
	
	static { rate = 2; }
	
	public BankBook(String account, String name) {
		this(account,name,0);
	}
	
	public BankBook(String account, String name, int balance) {
		this.account = account;
		this.name = name;
		this.balance = balance;
	}
	
	//입금
	public void deposit(int money) {
		if(money > 0) {
			this.balance +=money;
			System.out.println("입금액 : " + money + "원");
			System.out.println("잔액   : " + balance + "");
		} else {
			System.out.println("입금액 오류.");
		}
	}
	
	//출금
	public void withdraw(int money) {
		if(money > 0 && money <= this.balance) {
			this.balance -= money;
			System.out.println("출금액 : " + money + "원");
			System.out.println("잔액   : " + balance + "원");
		} else {
			System.out.println("출금액 오류.");
		}
	}
	
	//계좌정보
	public void info() {
		System.out.println("--- 계 좌 정 보 ---");
		System.out.println("계좌번호 : " + account);
		System.out.println("고객명   : " + name);
		System.out.println("잔액     : " + balance + "원");
		System.out.println("현재이율 : " + rate + "%");
	}
	
	//이율확인
	public static void currentRate() {
		System.out.println("현재 이율 : " + rate + "%");
	}
	
	//이율변경
	public static void chageRate(double change) {
		if(change > 0) {
			rate = change;
			System.out.println("변경 이율 : " + rate + "%");
		}
	}
}
----------------------------------------------------------------------------------

//BankBookManager
package ch10_quiz;

public class BankBookManager {

	public static void main(String[] args) {
		BankBook bk1 = new BankBook("00123-132-322", "홍길동");
		bk1.deposit(20000);
		bk1.deposit(-20000);
		bk1.info();
		
		System.out.println();
		
		BankBook bk2 = new BankBook("00123-132-322","홍길동", 10000);
		bk2.info();
		bk1.withdraw(10000);
		bk1.withdraw(9999);
		System.out.println();
		
		bk1.chageRate(2.3);
		bk1.info();
		bk2.info();
		
	}

}
package ch10_quiz;

public class Product {
	/*
	 * 하나의 제품 정보를 가지는 Product class 를 정의하고, ProductManager class 에서 테스트 하세요
	 * - 제품 종류, 제품명, 가격, 관리번호, 전체 등록 제품수
	 *   > 가격 : -(minus) 값 적용 불가
	 *     관리번호 : 변경 불가
	 *     전체 등록 제품수 : 제품이 하나 추가될 때 마다 증가
	 */
	
	private static int all_products;
	private String type;
	private String name; 
	final private String management_number;
	private int price;
	
	static { all_products = 320; }
	
	public Product(String type, String name, String management_number , int price) {
		this.type = type;
		this.name = name;
		this.management_number = management_number;
		if (price >= 0) {
			this.price = price;
		} else { 
			System.out.println("가격은 양수값(+)만 가능합니다.");
		}
		all_products++;
	}
	
	public String getType() { return type; }
	public void setType(String type) {
		this.type = type;
	}
	
	public String getName() { return name; }
	public void setName(String name) {
		this.name = name;
	}
	
	public int getPrice() { return price; }
	public void setPrice(int price) {
		if(price >= 0) {
			this.price = price;
		}
	}

	void info() {
		System.out.println("--------- 물품 장부 ---------");
		System.out.println("제품명            : " + name);
		System.out.println("제품종류          : " + type);
		System.out.println("제품가격          : " + price + "원");
		System.out.println("관리번호          : " + management_number);
		System.out.println("-----------------------------");		
		
	}
	
	public static void currentAll() {
		System.out.println("전체 등록 제품 수 : " + all_products);
	}
}

----------------------------------------------------------------------------------

//ProductManager
package ch10_quiz;

public class ProductManager {

	public static void main(String[] args) {
		Product pd = new Product("시계","태그호이어", "132-1112", 1500000);
		pd.info();
		
		Product pd2 = new Product("지갑", "폴로", "123-4244", 100000);
		pd2.info();
		
		Product.currentAll();
		
	}

}