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