음식을 파는 음식점이 있습니다. 음식에는 이름, 가격이 있습니다. 음식점은 새로운 메뉴를 추가할 수 있고, 메뉴를 제공하며, 음식을 주문 할 수 있습니다. 주문을 받으면 음식을 제공하고 거스름돈도 걸러 주어야 합니다. 이를 객체 지향으로 구현하세요.
(※ 기본적인 객체 지향 설계가 가능한지)
판매하던 음식 중에 피자가 가장 잘 팔려서, 업종을 피자 가게로 전문화 하였습니다. 피자는 이름, 가격, 조리 시간, 토핑의 속성을 가집니다. 뿐만 추가로 스파게티와 음료수를 주문 할 수 있습니다. 잔돈과 음식은 최종적으로 주문을 완료 해야 제공됩니다.
(※ 상속 및 업캐스팅을 이해하는지)
음식에 조리 시간이 추가 되었습니다. 하지만 종업원이 한명이라 손님들이 서서 기다리고 있습니다. 주방장을 영입하여 요리를 하도록 하고, 종업원은 계속해서 주문만 받을 수 있도록 하세요. 주문을 받으면 주방장에게 요리를 요청하고, 손님에게 번호표를 발급한 뒤 다음 주문을 계속해서 받습니다. 주방장은 요리가 끝나면 손님을 호출하여 음식을 제공합니다. (※ hint: interface, thread)
(※ 인터페이스 사용 및 스레드의 사용법(혹은 AsyncTask, RxJava, Akka 등등))