본문 바로가기

BackEnd/Java

0907 JAVA - class 정의

728x90
반응형

Person 클래스의 인스턴스(p) 생성

 

 

예시


이름 : 홍길동, 나이 : 20, 배고픔 : false 값 저장 
 외부의 다른 클래스 에서 Person 클래스의 인스턴스에 접근하기 위해서는 
 참조변수 p를 통해 접근 필수! 

 

 

Person p = new Person();

 

p.name = "홍길동";
p.age = 20;
p.isHungry = false;
System.out.println("이름 : " + p.name);
System.out.println("이름 : " + p.age);
System.out.println("이름 : " + p.isHungry);



참조변수 p를 통해 멤버변수는 물론 메서드까지 접근 가능

p.showPersonInfo();
p.talk();
p.eat("밥");
} // main() 메서드 긑

} // Test 클래스 끝

 

 

  Person 클래스 정의 


  [멤버변수 (인스턴스 변수) 선언]
  - 이름 (name, String)
  - 나이 (age, int)
  - 배고픔 (isHungry, boolean)
   
   
 [  메서드 정의  ]
  - 이름, 나이, 배고픔을 출력하는 showPersonInfo() 메서드
   (매개변수 없음, 리턴값 없음) 
    


  - 밥먹는 기능을 수행하는 eat() 메서드
    (매개변수 : 음식이름(foodName, 문자열), 리턴값 없음)
     => "XXX 먹기!" 출력
     => 멤버변수 isHungry의 값을 false 값으로 변경 
      


  - 말하는 기능을 수행하는 talk() 메서드
    (매개변수 없음, 리턴값 없음) 
    => "말하기!" 출력 
    => 멤버변수 isHungry 의 값을 true 으로 변경 

 

 

멤버 변수 (인스턴스변수) 선언
class Person{
String name; 
int age; 
boolean isHungry; //true : 배고픔, false : 배고프지 않음
public void showPersonInfo() { //매개변수 x -> 소괄호가 빈 것
System.out.println("이름 : " + name );
System.out.println("나이 : " + age);
System.out.println("배고픔 : " + isHungry);
}
public void eat(String foodName) {
System.out.println(foodName + "먹기!");

 

isHungry 변수의 값을 false로 변경 (배고프지 않음)
isHungry = false; 
System.out.println("식사 후 배고픔 : " + isHungry);
}
public void talk() {
System.out.println("말하기!"); 
//isHungry 값을 true 로 변경 
isHungry = true;

}
}

 

 

 

문제


 

은행계좌(Account) 클래스 정의 

[ 멤버변수 선언 ] 
- 계좌번호 (accountNo, 문자열) 
예금주명 (ownerName, 문자열)
현재잔고 (balance, 정수)

[ 메서드 정의 ]
- 계좌번호, 예금주명, 현재잔고를 출력하는 showAccountInfo()메서드 
ex) 계좌번호 : 111-1111-111 
예금주명 : 홍길동 
현재잔고 : 10000원

- 입금 기능을 수행하는 deposit() 메서드 
=> 입금할 금액(amount, 정수)을 전달받아 현재잔고(balance)에 누적 한 후 
입금된 금액과 입금 후 현재잔고를 출력 
ex) "입금하신 금액 : XXXXX원" 
"입금 후 현재잔고 : XXXX원" 
=> 단, 리턴값은 없음 

- 출금 기능을 수행하는 withdraw()메서드 
=> 출금 될 금액(amount, 정수)를 전달받아 현재잔고(balance)에서 차감 후 
출금 될 금액과 출금 후 현재잔고를 출력 
ex) "출금 할 금액 : XXXX원" * "출금 후 현재잔고 : XXXX원" 

=> 단, 출금 기능을 수행하기 전 현재잔고와 출금할 금액을 비교하여 
현재 잔고가 출금할 금액보다 적을 경우 출금을 수행하지 않고 다음과 같이 출력 
ex) "잔고가 부족하여 출금이 불가능합니다." 
"출금할 금액 : XXXX원, 현재잔고 : XXXX원" 
=> 리턴 값 있음. (출금 할 금액에 해당하는 금액 리턴)
public class Test2 {
    public static void main(String[] args) {
		
		Account acc = new Account();
		acc.accountNo = "111-1111-111";
		acc.ownerName = "홍길동";
		acc.balance = 10000;

		acc.showAccountInfo();
        
    
		System.out.println("------------------------");
		acc.deposit(5000);
		
		//현재 잔고보다 적거나 같은 금액을 출력하는 경우 (출금 가능)
		System.out.println("------------------------");
		int money = acc.withdraw(5000);
		System.out.println("출금된 금액 : " + money + "원");
		
		//현재 잔고보다 많은 금액을 출금하는 경우 (출금 불가)
		money = acc.withdraw(100000);
		System.out.println("출금된 금액 : " + money + "원");
        }
        }
class Account {
	String accountNo;
	String ownerName;
	int balance;

	
	
	public void showAccountInfo() {
		System.out.println("계좌번호 : " + accountNo);
		System.out.println("예금주명 : " + ownerName);
		System.out.println("현재잔고 : " + balance + "원");
	}
	public void deposit(int amount) {
		balance += amount; //전달받은 입금금액(amount)를 현재잔고(balance)에 누적 후 출력
		System.out.println("입금하신 금액 : " +  amount);
		System.out.println("입금 후 현재 잔고 :" + balance);
	}
	
	public int withdraw(int amount) {
		if(amount <= balance) { //입력받은 출금금액(amount)를 현재잔고(balance)에 차감 후 
			//출금되는 금액(amount)를 리턴
			//단, 현재잔고가 출금금액보다 적을 경우 출금 불가 
		balance -= amount;
		System.out.println("출금 할 금액 : " + amount + "원");
		System.out.println("출금 후 현재 잔고 : " + balance + "원");
		return amount; //출금금액 리턴
		}else {
		System.out.println("잔고가 부족해서 출금이 불가능합니다.");
		System.out.println("출금할 금액 : " + amount +", 현재잔고 : " + balance + "원");
		return 0;
		}
		
		
	}
		
}

 

 

else 생략 

 

if문 내에서 출금 실패 시 return 문에 의해 메서드를 종료하므로 
출금이 가능한 경우의 코드는 else 문이 없어도 상관없음. 

if(balance < amount) {
System.out.println("잔고가 부족해서 출금이 불가능합니다.");
System.out.println("출금할 금액 : " + amount +", 현재잔고 : " + balance + "원");
return  0;
}
balance -= amount;
System.out.println("출금 할 금액 : " + amount + "원");
System.out.println("출금 후 현재 잔고 : " + balance + "원");
return amount; //출금금액 리턴
728x90
반응형