본문 바로가기

카테고리 없음

23.12.13 키오스크3

오늘은 먼저 오픈 클래스를 만들어 클래스들을 상속하려고 해봤는데, 먼저 부모를 정한게 아니라 나중에 추가하려고 해서인지 잘 되지 않고 계속 오류가 떠서 굉장히 고생했다. 그래서 우선 난잡한 클래스들을 정리하기 위해서 버거, 드링크 클래스를 버거메뉴, 드링크 메뉴에 집어넣었다.

 

 class Burger(
    override val name: String,
    override val price: Int,
    override val description: String
) : MenuItem {
    override fun displayInfo() {
        println("버거 이름: $name")
        println("가격: $price 원")
        println("설명: $description")
    }
}

 

이녀석을 버거메뉴 안으로 옮기고 

class Burger(
    override val name: String,
    override val price: Int,
    override val description: String
) : MenuItem {
    override fun displayInfo() {
        println("버거 이름: $name")
        println("가격: $price 원")
        println("설명: $description")
    }
}

class BurgerMenu {
    val menuItems = arrayOf(
        Burger("와퍼", 8000, "불에 직접 구운 순 쇠고기 패티에 싱싱한 야채가 한가득~ 버거킹의 대표 메뉴!"),
        Burger("불고기와퍼", 8000, "불에 직접 구운 순 쇠고기 패티가 들어간 와퍼에 달콤한 불고기 소스까지!"),
        Burger("치즈와퍼", 8600, "불에 직접 구운 순 쇠고기 패티가 들어간 와퍼에 고소한 치즈까지!"),
        Burger("통새우와퍼", 8800, "불맛 가득 순쇠고기, 갈릭페퍼 통새우, 스파이시토마토소스가 더해진 프리미엄 버거!")
    )

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

 

이런식으로 하나로 합쳤다.

 

그리고 openclass가 안되는 이유를 찾아 봤는데, 아무래도 인터페이스가 존재하서 이미 그 역할을 떠맡아서 그렇다는 결론을 내게 되었다.

그래서 인터페이스를 오픈 클래스로 바꾸려고 했는데, 간단할줄로만 알았건만 또 이상한 오류가 뜨면서 잘 작동하지 않는다! 뭐가 문제냐!!

 

아주아주 오랜 시간이 지나서 인터페이스는그대로 두고 오픈 클래스를 추가하면서 동시에 메뉴를 통합하는것에 성공했다.

결국 인터페이스는 무관했던 것이다! 시간만 날렸다!

 

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")
    }
}

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

class Burger(
    name: String,
    price: Int,
    description: String
) : TheMenu(name, price, description)
class BurgerMenu {
    val menuItems = arrayOf(
        Burger("와퍼", 8000, "불에 직접 구운 순 쇠고기 패티에 싱싱한 야채가 한가득~ 버거킹의 대표 메뉴!"),
        Burger("불고기와퍼", 8000, "불에 직접 구운 순 쇠고기 패티가 들어간 와퍼에 달콤한 불고기 소스까지!"),
        Burger("치즈와퍼", 8600, "불에 직접 구운 순 쇠고기 패티가 들어간 와퍼에 고소한 치즈까지!"),
        Burger("통새우와퍼", 8800, "불맛 가득 순쇠고기, 갈릭페퍼 통새우, 스파이시토마토소스가 더해진 프리미엄 버거!")
    )

    fun showMenu() {
        println("[ Burgers MENU ]")
        menuItems.forEachIndexed { index, menuItem ->
            println("${index + 1}. ${menuItem.name} | 가격: ${menuItem.price} 원 | 설명: ${menuItem.description}")
        }
        println("0. 뒤로가기")
        print(" ---> ")
    }
}
class DrinkMenu {
    val menuItems = arrayOf(
        Drink("콜라", 2900, "코카-콜라로 더 짜릿하게!"),
        Drink("사이다", 2900, "나를 깨우는 상쾌함!"),
        Drink("아메리카노", 2400, "자연을 담은 버거킹 RA인증커피")
    )

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

 

이걸로 class Drink(
    name: String,
    price: Int,
    description: String
) : TheMenu(name, price, description) 여기서 보이듯 open class TheMenu를 : TneMenu라며 수식하는것이 보인다!

거기에다 압축한걸 한층 더 압축하는것도 성공했다. 상속이란게 이렇게 어려울줄은 몰랐다.

 

다음엔 이것들을 리스트 하나로 관리하도록 짜보려고 한다.