먼저, Android Studio를 사용하다가 IntelliJ를 설치했다.
프로그램 로딩 속도가 빨라지고, 편의성 부분이 좋아진 것 같다.
구현 사항을 확인하고 메인부터 만들었다.
println("[SHAKESHACK MENU]") println("1. BURGER") println("2. Frozen Custard") println("3. Drinks") println("4. Beers") println("0. Quit") val selectNumber = readlnOrNull()?.toInt() when (selectNumber) { 1 -> MenuBurger().burgerMenu() 2 -> MenuFrozenCustard().frozencustardMenu() 3 -> MenuDrinks().drinksMenu() 4 -> MenuBeers().beersMenu() 0 -> println("프로그램을 종료합니다.") else -> throw IllegalArgumentException("메뉴를 다시 확인해 주세요.")
메인 메뉴 1~4와 0번을 입력받아, 각 메뉴로 이동하게 설계했다.
호출된 메뉴 클래스는 세부 메뉴를 출력한다.
class MenuBurger {
fun burgerMenu() {
val shackburger = Shackburger()
val smokeshack = Smokeshack()
val mushroomsburger = Mushroomburger()
val cheeseburger = Cheeseburger()
val hamburger = Hamburger()println("[ Burgers MENU ]") shackburger.displayInfo() smokeshack.displayInfo() mushroomsburger.displayInfo() cheeseburger.displayInfo() hamburger.displayInfo() }
메뉴판 안에 들어가는 각 버거들을 쉽게 관리하기 위해
Burger라는 추상화 클래스를 생성했다.
abstract class Burger {
abstract val recommend: Int
abstract val name: String
abstract val price : Double
abstract val details : Stringfun displayInfo() { println("$recommend. $name | W $price | $details") }
}
혹시라도 나중에 정렬기능을 배워 써먹을 수도 있을 것 같아
1~5는 recommend로 설정했다.
추후 버거가 추가될 경우 recommend 수치에 따라 정렬을 할 수 있지 않을까?
(아직 될지 안 될지 모름. 시간 남으면 공부해서 추가해 보고 싶음)
recommend, name, price, details 를 상속 클래스로부터 받아와 출력한다.
class Shackburger : Burger() {
override val recommend : Int get() = 1 override val name : String get() = "Shackburger" override val price : Double get() = 6.9 override val details : String get() = "토마토, 양상추, 쉑소스가 토핑된 치즈버거"
내일 해볼 것
1) 메인 메뉴 (1번 항목)도 추상화하여 보수하기 쉽도록 변경하기
2) 각 메뉴를 리스트 객체로 모든 메뉴를 관리할 수 있도록 설정
3) 숫자 입력 칸에 문자 입력 시 다시 입력할 수 있도록 예외 처리
4) 현재 잔액과 상품의 가격을 비교해서 구매 가능 상태를 정의