키오스크 lv.0 부터 다시 차근차근 해석하면서 도전해보았다.

README 라기 보단 그냥 메인화면 구성같다 ㅠㅠ
저번과 다르게 예제처럼 햄버거와 여러 사이드로 구성하였고 간단하게 계획을 작성하였다.
조건문과 반복문을 통하여 대분류 메뉴의 번호를 입력하면 세부 메뉴들을 보여주게 하였고
반복문을 통해 메뉴 선택할 수 있게 유지하고 대분류 메뉴에서 0번을 입력하면 종료되게 하였다.
fun main() { while (true) { println("아래 메뉴판을 보시고 메뉴를 골라 입력해주세요") println("") println( "[ SHAKESHACK MENU ]\n" + "1. Burgers | 앵거스 비프 통살을 다져만든 버거\n" + "2. Frozen Custard | 매장에서 신선하게 만드는 아이스크림\n" + "3. Drinks | 매장에서 직접 만드는 음료\n" + "4. Beer | 뉴욕 브루클린 브루어리에서 양조한 맥주\n" "0. Exit | 프로그램 종료" ) var pick = readln().toInt() }fun main에서는 실행시 메인화면을 보여주었고
when (pick) { 1 -> { println( "[ Beer MENU ]\n" + "1. ShackMeister Ale | W 9.8 | 쉐이크쉑 버거를 위해 특별히 양조한 에일 맥주\n" + "2. Magpie Brewing Co. | W 6.8 | Pale Ale, Porter, Wheat\n" + "3. The Hand and Malt | W 6.8 | IPA, Mocha Stout\n" + "0. Back | 뒤로가기" ) var exitNum = readln().toInt() if (exitNum == 0) { continue } } // 2 -> { println( "[ Frozen Custard MENU ]\n" + "1. Shaker | W 5.9 | 바닐라, 초콜렛, 솔티드 카라멜, 피넛버터\n" + "2. Cup & Cone | W 4.9 | 바닐라, 초콜렛\n" + "3. Concrete | W 5.9 | 쉐이크웻의 쫀득한 커스터드와 다양한 믹스-인의 조합\n" + "0. Back | 뒤로가기" ) var exitNum = readln().toInt() if (exitNum == 0) { continue } } // 3 -> { println( "[ Drinks MENU ]\n" + "1. Lemonade | W 3.9 | 매장에서 직접만드는 상큼한 레몬에이드\n" + "2. Iced Tea | W 3.4 | 직접 유기농 홍차를 우려낸 아이스티\n" + "3. Fifty/Fifty | W 3.5 | 레몬에이드와 아이스티의 만남\n" + "4. Soda | W 2.7 | 코카콜라, 코카콜라 제로, 스프라이트, 환타\n" + "5. Bottled Water | W 1.0 | 지리산 프리미엄 생수\n" + "0. Back | 뒤로가기" ) var exitNum = readln().toInt() if (exitNum == 0) { continue } } // 4 -> { println( "[ Beer MENU ]\n" + "1. ShackMeister Ale | W 9.8 | 쉐이크쉑 버거를 위해 특별히 양조한 에일 맥주\n" + "2. Magpie Brewing Co. | W 6.8 | Pale Ale, Porter, Wheat\n" + "3. The Hand and Malt | W 6.8 | IPA, Mocha Stout\n" + "0. Back | 뒤로가기" ) var exitNum = readln().toInt() if (exitNum == 0) { continue } } // 0 -> { println("프로그램을 종료합니다.") break } }
- 조건문 when문을 통해 각 번호를 입력하면 세부 메뉴로 갈 수 있도록 설정해주었고
if문을 통해 메인메뉴에서는 프로그램 종료로 세부 메뉴에서는 메인메뉴로 돌아갈 수 있도록
설정했습니다.

결과화면은 이렇게 구동이 잘 됐습니다.
필요한 클래스들을 설계하고 클래스들의 프로퍼티와 메소드를 정의합니다.
일단 필요한 클래스는 (Burgers, FrozenCustard, Drinks, Beer)와 공통으로는 Menu정도?
있는 것 같아 클래스를 생성하고 거기에 맞는 메뉴를 각 클래스에 넣어주었습니다.
fun main() { while (true) { println("아래 메뉴판을 보시고 메뉴를 골라 입력해주세요") println("") println( "[ SHAKESHACK MENU ]\n" + "1. Burgers | 앵거스 비프 통살을 다져만든 버거\n" + "2. Frozen Custard | 매장에서 신선하게 만드는 아이스크림\n" + "3. Drinks | 매장에서 직접 만드는 음료\n" + "4. Beer | 뉴욕 브루클린 브루어리에서 양조한 맥주\n" + "0. Exit | 프로그램 종료" ) var pick = readln().toInt() when (pick) { 1 -> { Burgers().displayInfo() } 2 -> { FrozenCustard().displayInfo() } 3 -> { Drinks().displayInfo() } 4 -> { Beer().displayInfo() } 0 -> { println("프로그램을 종료합니다.") break } } } }
- main은 별로 달라진게 없다. 번호마다 각 클래스로 보내주었다.
class Menu(name: String, price: String) { fun displayInfo() : Unit {} }
- Menu 클래스는 공통된 이름과 가격을 파라미터로 넣어놨지만 아직 쓰이진 않았다.
class Burgers { var name: String = "" var price: String = "" // fun displayInfo(): Unit { while (true) { println( "[ Burgers MENU ]\n" + "1. ShackBurger | W 6.9 | 토마토, 양상추, 쉑소스가 토핑된 치즈버거\n" + "2. SmokeShack | W 8.9 | 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거\n" + "3. Shroom Burger | W 9.4 | 몬스터 치즈와 체다 치즈로 속을 채운 베지테리안 버거\n" + "4. Cheeseburger | W 6.9 | 포테이토 번과 비프패티, 치즈가 토핑된 치즈버거\n" + "5. Hamburger | W 5.4 | 비프패티를 기반으로 야채가 들어간 기본버거\n" + "0. Back | 뒤로가기" ) var pick: Int = readln().toInt() // when (pick) { 1 -> { name = "ShackBurger" price = "₩ 6,900" println("") println("1. ${name} | ${price}입니다.") println("") } // 2 -> { name = "SmokeShack" price = "₩ 8,900" println("") println("2. ${name} | ${price}입니다.") println("") } // 3 -> { name = "Shroom Burger" price = "₩ 9,400" println("") println("3. ${name} | ${price}입니다.") println("") } // 4 -> { name = "Cheeseburger" price = "₩ 6,900" println("") println("4. ${name} | ${price}입니다.") println("") } // 5 -> { name = "Hamburger" price = "₩ 5,400" println("") println("5. ${name} | ${price}입니다.") println("") } // 0 -> break } } } }
- 대표로 Burger 클래스를 가져왔다. 공통된 변수로는 name과 price가 있어서 상속때 생각하면서 해봐야 할 것 같다.
처음 할때 보다는 빠르게 끝낸 것 같다. Lv. 3가 문제라서 내일 다시 도전해봐야겠다.

많은 기능이 없어서 출력은 잘되는 것 같다.
처음에 0번을 누르면 main()으로 보냈었는데 계속 main과 현재 페이지를 반복해서
0의 값을 break로 바꾸어 주었더니 잘 작동되었다.
원래는 변수값 없이 println()으로 내용을 대체했었는데 하다보니 의도와 달라지고
출력만 하는건 의미가 없는 것 같아 변수를 사용해 값을 대입해주었다.
사용해보니 훨씬 수월하게 진행되었던 것 같다.
lv. 3도 조금은 도전해봤지만 아직 list에 대해서 사용법을 잘 모르는 것 같다.
그리고 arrayList를 사용함에 따라 출력 형태가 조금씩 바뀌는 것 같아 그 부분이 헷갈린다.
상속의 형태는 갖출 수 있지만 아직 코드가 간단해서 그런지 더 좋은 점이 눈에 띄지 않는다.
공부를 다시 해야하는건가 물음표가...
여튼 내일도 화이팅!