/* OOP 의 원칙 

*   1. 캡슐화

*   2. 상속성

*   3. 다형성(오버로딩,오바라이딩,객체형변환)

*/


/*

* 1. 캡슐화

*    - 외부클래스나 객체에서 멤버변수에 접근을 막고

*      멤버 메쏘드에만 접근할수있도록 클래스를 설계하는방법

*    - 구현 : 멤버변수의 접근제한자를 private 

*       멤버메소드의 접근제한자는 public 으로한다. 

*             public ==> 어떤 외부클래스에서든지 접근가능

*             private==> 어떤 외부클래스에서든지 접근불가능

*/



Account

/*
 * - 은행의 계좌 객체를 추상화한 클래스이다.
 * - 은행계좌의 데이터를 가지고 있는 클래스이다.
 * 
 */
public class Account {
	private String no; //계좌번호
	private String owner; //계좌주
	private int balance; //잔액
	private float iyul; //이율
	
	/*
	 * 입금하다
	 */
	/**
	 * 
	 * @param money 입금금액
	 */
	public void ipGum (int money){
		this.balance = this.balance + money;
		System.out.println(" << 입 금 완 료 >> ");
		System.out.println("입 금 금 액: " + money);
		this.print();
	}
	
	/*
	 * 출금하다
	 */
	/**
	 * 
	 * @param money 출금금액
	 * @return 출금가능 여부
	 */
	public boolean chulGum(int money){
		boolean isSuccess = false;
		
		if (this.balance < money){
			isSuccess = false;
		}
		else {
			this.balance = this.balance - money;		
			isSuccess = true;
		}
		return isSuccess;
		
	}
	/*
	 * 계좌정보를 출력하다.
	 */
	/**
	 * 계좌 정보를 인출한다.
	 */
	public void print (){
		System.out.println("==========================");
		System.out.println("계 좌 번 호: "+ this.no +"\n"
				+ "계 좌 주 명: " + this.owner +"\n"
				+ "계 좌 잔 액: "+ this.balance +"\n"
				+ "계 좌 이 율: "+ this.iyul);
		System.out.println("==========================");
		
	}

	public String getNo() {
		return no;
	}

	public String getOwner() {
		return owner;
	}

	public int getBalance() {
		return balance;
	}

	public float getIyul() {
		return iyul;
	}

	public void setNo(String no) {
		this.no = no;
	}

	public void setOwner(String owner) {
		this.owner = owner;
	}

	public void setBalance(int balance) {
		this.balance = balance;
	}

	public void setIyul(float iyul) {
		this.iyul = iyul;
	}
	
	
}

 

AccountMain

public class AccountMain {

	public static void main(String[] args) {
		Account acc1 = new Account();
		/*
		acc1.no ="111";
		acc1.owner ="김경수";
		acc1.balance =5000;
	*/
		acc1.setNo("111");
		acc1.setOwner("김경수");
		acc1.setBalance(5000);
		acc1.setIyul(4.5f);
		
		//입금
//		acc1.balance = acc1.balance + 3000;
		acc1.ipGum(3000);
		
		//출금
		boolean isSuccess = acc1.chulGum(56000);
		if (isSuccess == true){
			System.out.println(" << 출 금 완 료 >>"
								+"\n 잔액: "+acc1.getBalance());
		}
		else {
			System.out.println(" << 잔 액 부 족 >>"
								+"\n 잔액: "+acc1.getBalance());
		}
		
		isSuccess = acc1.chulGum(4000);
		if (isSuccess == true){
			System.out.println(" << 출 금 완 료 >>"
								+"\n 잔액: "+acc1.getBalance());
		}
		else {
			System.out.println(" << 잔 액 부 족 >>"
								+"\n 잔액: "+acc1.getBalance());
		}
		//출력
		acc1.print();	
	}//end main

}//end class