모든지 기록하자!

[Java] 객체 간 협력 예제 ( static ) 본문

Java

[Java] 객체 간 협력 예제 ( static )

홍크 2021. 5. 14. 01:36
728x90

A씨는 4000원을 내고 별다방에서 아메리카노를 사 마셨다.

B씨는 4500원을 내고 콩다방에서 라떼를 사 마셨다.

 

이 상황을 객체 간 협력(대중교통) 을 활용하여 객체 지향으로 프로그래밍 해보자!

 

package coffee;

public class Menu {

	public static final int STARAMERICANO = 4000;
	public static final int STARLATTE = 4300;
	
	public static final int BEANAMERICANO = 4100;
	public static final int BEANLATTE = 4500;
}

다른 클래스에서 객체 생성없이 사용 할수있도록 static으로 지정하고

커피의 가격은 변하지 않는 값이므로 final로 선언한다.


 

package coffee;

public class Person {

	String name;
	int money;
	
	Person(String name, int money ){ 
		this.name = name; 
		this.money = money;  //매개변수로 받은 money를 Person클래스의 money에 대입한다.
	}
	
	public void buyStarCoffee(StarCoffee sCoffee, int money) {
		String message = sCoffee.brewing(4000); // 별다방의 4000원 짜리 커피를 구매  
		if(message != null) {
			this.money -= money;  //커피 가격만큼 Person의 소지금 차감
			System.out.println(name + " 님이 " + money +"으로 "  + message);
		}
	}
	
	public void buyBeanCoffee(BeanCoffee bCoffee, int money) {
		String message = bCoffee.brewing(4500); // 콩다방의 4500원 짜리 커피를 구매
		if(message != null) {
			this.money -= money; //커피 가격만큼 Person의 소지금 차감
			System.out.println(name + " 님이 " + money +"으로 "  + message);
		}
	}
}

 

Person 생성자에 매개변수로 name과 money를 받아서 자기 자신의 객체

즉 Person의 멤버변수 name과 money에 대입 시킨다.

message는 해당 매장에서 구매한 커피 가격에 맞는 문장을 리턴 받아 저장한다.

 


 

package coffee;

public class StarCoffee {

	int money; // 판매한 커피값을 저장 할 변수
	
	public String brewing(int money) {
	
		this.money += money; // 판매한 커피 가격 만큼 매장에 매출 증가
		if(money == Menu.STARAMERICANO) { // 별다방의 아메리카노(4000) 의 값을 받으면 
			return "별 다방 아메리카노를 구입했습니다"; // 해당 문장을 반환한다.
		}
		else if(money == Menu.STARLATTE) { // 별다방의 라떼(4300) 의 값을 받으면
			return "별 다방 라떼를 구입했습니다"; // 해당 문장을 반환한다.
		}
		else {
			return null; // 지불한 가격에 맞는 커피가 없을경우 null을 리턴
		}
	}
}

 

 

package coffee;

public class BeanCoffee {

	int money; // 판매한 커피값을 저장 할 변수
	
	public String brewing(int money) {
	
		this.money += money; // 판매한 커피의 금액만큼 매장의 매출 증가 
		if(money == Menu.BEANAMERICANO) { // 콩카페의 아메리카노(4100)의 값을 받으면
			return "콩 다방 아메리카노를 구입했습니다"; // 해당 문장을 반환한다.
		}
		else if(money == Menu.BEANLATTE) { // 콩까페의 라떼(4500)의 값을 받으면
			return "콩 다방 라떼를 구입했습니다"; // 해당 문장을 반환한다.
		}
		else {
			return null;
		}
	}
}

Person클래스의 money를 전달받아 해당 가격에 맞는 커피를 찾아 return문을 반환 해준다.

 


 

package coffee;

public class CoffeeTest {

	public static void main(String[] args) {

 		// 이름이 Kim이고 소지금이 10000원인 객체 생성해서 kim에 대입한다.
		Person kim = new Person("Kim", 10000); 
		Person hong = new Person("Hong", 8000);
		StarCoffee starCoffee = new StarCoffee(); // 별다방 객체 생성
		BeanCoffee beanCoffee = new BeanCoffee(); // 콩까페 객체 생성
		
		kim.buyStarCoffee(starCoffee, 4000); // kim이 별다방에서 4000원 짜리 커피구매
		hong.buyBeanCoffee(beanCoffee, 4500); // hong이 콩까페에서 4500원 짜리 커피 구매
        
		System.out.println("Kin님의 남은 소지금은 "+kim.money+"원 입니다.");
		System.out.println("Hong님의 남은 소지금은 "+hong.money+"원 입니다.");
		System.out.println("별다방의 매출은 "+starCoffee.money+"원 입니다.");
		System.out.println("콩커피의 매출은 "+beanCoffee.money+"원 입니다.");
	}
}

 

 

결과 출력문

 

728x90

'Java' 카테고리의 다른 글

[Java] 상속 (예제 : 고객관리)  (0) 2021.05.14
[Java] Array List 클래스  (0) 2021.05.14
[Java] 변수의 유효 범위 (scope)  (0) 2021.05.13
[Java] singleton 패턴  (0) 2021.05.13
[Java] 암호화 / 복호화  (0) 2021.05.13
Comments