본문 바로가기

카테고리 없음

23.12.14 키오스크4

인터페이스를 클래스로 바꾸는 법을 알아냈다!

interface MenuItem {
    val name: String
    val price: Int
    val description: String
    fun displayInfo()
}

이걸 오픈 클래스로 바꾸려면,

open class TheMenu(
    override val name: String,
    override val price: Int,
    override val description: String
) : MenuItem {
    override fun displayInfo() {
        println("음식 이름: $name")
        println("가격: $price 원")
        println("설명: $description")
    }
}

이녀석을 메뉴아이템으로 바꿔치면 된다!

open class MenuItem(
    open val name: String,
    open val price: Int,
    open val description: String
) {
    open fun displayInfo() {
        println("음식 이름: $name")
        println("가격: $price 원")
        println("설명: $description")
    }
}

 

그러니까, 메뉴아이템 인터페이스를 어제 만들었던 오픈 클래스 더메뉴랑 합쳐버린 것이다.

확실히 이러면 양도 줄어들어서 더 관리하기 편할것이다. 

 

그리고 전체적으론

open class MenuItem(
    open val name: String,
    open val price: Int,
    open val description: String
) {
    open fun displayInfo() {
        println("음식 이름: $name")
        println("가격: $price 원")
        println("설명: $description")
    }
}

class Drink(
    name: String,
    price: Int,
    description: String
) : MenuItem(name, price, description)

class Burger(
    name: String,
    price: Int,
    description: String
) : MenuItem(name, price, description)

class Menu {
    val menuItems = listOf(
        Burger("와퍼", 8000, "불에 직접 구운 순 쇠고기 패티에 싱싱한 야채가 한가득~ 버거킹의 대표 메뉴!"),
        Burger("불고기와퍼", 8000, "불에 직접 구운 순 쇠고기 패티가 들어간 와퍼에 달콤한 불고기 소스까지!"),
        Burger("치즈와퍼", 8600, "불에 직접 구운 순 쇠고기 패티가 들어간 와퍼에 고소한 치즈까지!"),
        Burger("통새우와퍼", 8800, "불맛 가득 순쇠고기, 갈릭페퍼 통새우, 스파이시토마토소스가 더해진 프리미엄 버거!"),
        Drink("콜라", 2900, "코카-콜라로 더 짜릿하게!"),
        Drink("사이다", 2900, "나를 깨우는 상쾌함!"),
        Drink("아메리카노", 2400, "자연을 담은 버거킹 RA인증커피")
    )

    fun showMenu() {
        println("[ MENU ]")
        menuItems.forEachIndexed { index, menuItem ->
            println("${index + 1}. ${menuItem.name} | 가격: ${menuItem.price} 원 | 설명: ${menuItem.description}")
        }
        println("0. 뒤로가기")
        print(" ---> ")
    }
}

이러면 여러 클래스를 list로 말끔하게 하나로 통합하면서 open class도 전부 적용하는데 성공한것 같다! 

그리고 이제 4단계인 새로운 장바구니 추가, 잔액을 추가해야 했는데, 실패했다! 뭐 어짜피 3까지만 하면 되니까!

 

내일 완성본을 받고 그걸 해부하면 공부해봐야겠다.