메뉴내용 클래스를 만든다 
(String, int 를 같이 넣기위해서 클래스 자료형생성)

package coffeeshop;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data   // getter, setter 자동생성 (눈에 보이지 않음)
@NoArgsConstructor // 디폴트 생성자
@AllArgsConstructor // 모든 매개변수를 가진 생성자
public class MenuItem {
	private String name;
	private int price;
}

 

커피 클래스를 만든다
(String, int 를 가지기 때문에 클래스 자료형)

package coffeeshop;

import lombok.Data;

@Data // getter, setter 자동생성
public class Coffee {
	private String name;
	private int price;
	
	public Coffee(MenuItem menuItem) {
		this.name = menuItem.getName();
		this.price = menuItem.getPrice();
	}
}

 

바리스타 생성

바리스타는 메뉴내용을 입력받아서 해당 커피를 생성한다

package coffeeshop;


// 책임 : 커피생성
public class Barista {
	public Coffee 커피생성(MenuItem menuItem) {
		return new Coffee(menuItem);
	}
}

 

메뉴판 클래스를 생성

메뉴내용을 저장하고

메뉴판은 메뉴가 있는지 찾아 준다

package coffeeshop;

import java.util.ArrayList;

import lombok.Data;

// 책임 : 메뉴 선택
@Data
public class Menu {

	// 메뉴 아이템들 (컬렉션)
	private ArrayList<MenuItem> menuItems;

	public Menu(ArrayList<MenuItem> menuItems) {
		this.menuItems = menuItems;
	}

	
	// 메뉴판에 메뉴가 있는지 찾는 코드
	public MenuItem 메뉴선택(String menuName) {
		for (MenuItem menuItem : menuItems) { // foreach문은 : 뒤에 배열이 들어가고 배열의 길이만큼 돈다
			if (menuItem.getName().equals(menuName)) {
				
				// menuItems 리스트 안에 menuName와 같은 이름의 커피가 있다면 리턴
				//(리턴하면 함수를 빠져나간다)
				return menuItem;
			}
		}
		return null;
	}

}

 

소비자 생성

소비자는 가게에서 주문을 한다

-메뉴판에서 내가 고를 메뉴내용을 선택하고

-바리스타에게 커피를 만들어달라고 한다

package coffeeshop;

import lombok.Data;

// 책임 : 주문
@Data
public class Comsumer {

	public void 주문(String menuName, Menu menu, Barista barista) {
		
		// 손님 -> 메뉴판에 메시지를 보낸다 (메뉴 선택해줘)
		MenuItem menuItem = menu.메뉴선택(menuName);

		if (menuItem == null) {
			System.out.println(menuName + "은 우리 커피숍에 없습니다.");
		} else {

			// 손님 -> 바리스타에게 메시지를 보낸다 (커피 생성해줘)
			Coffee coffee = barista.커피생성(menuItem);
			System.out.println("커피를 받았습니다.");
			System.out.println(coffee.getName());
			System.out.println(coffee.getPrice());
		}
	}
}

 

메인

메인에서는 바리스타, 손님, 메뉴판을 생성한다

그리고 손님이 주문하면 모든 일들이 진행된다

package coffeeshop;

import java.util.ArrayList;

public class CoffeeApp {
	public static void main(String[] args) {

		// 바리스타, 손님
		Comsumer comsumer = new Comsumer();
		Barista barista = new Barista();
		

		// 메뉴 생성과 메뉴판 리스트에 자료를 넣는 것은 바리스타의 일이지만
		// 간략하게 하기위해서 메인에서 작성한다
		
		// 개별 메뉴 생성
		MenuItem m1 = new MenuItem("아메리카노", 1500);
		MenuItem m2 = new MenuItem("카페라떼", 2500);
		MenuItem m3 = new MenuItem("카푸치노", 4000);

		// 어레이 리스트에 자료 입력 .add
		ArrayList<MenuItem> menuItems = new ArrayList<>();
		menuItems.add(m1);
		menuItems.add(m2);
		menuItems.add(m3);

		// 어레이리스트 자료를 출력할때 .get
		System.out.println(menuItems.get(1).getName());
		System.out.println();
		
		
		// 메뉴 생성
		Menu menu = new Menu(menuItems);
		
		comsumer.주문("아메리카노", menu, barista);
	}
}

 

 

 

+ Recent posts