내일배움캠프 12일차

김재현·2024년 3월 13일

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

Lv.0

  • README 라기 보단 그냥 메인화면 구성같다 ㅠㅠ

  • 저번과 다르게 예제처럼 햄버거와 여러 사이드로 구성하였고 간단하게 계획을 작성하였다.

Lv. 1

  • 조건문과 반복문을 통하여 대분류 메뉴의 번호를 입력하면 세부 메뉴들을 보여주게 하였고

    반복문을 통해 메뉴 선택할 수 있게 유지하고 대분류 메뉴에서 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문을 통해 메인메뉴에서는 프로그램 종료로 세부 메뉴에서는 메인메뉴로 돌아갈 수 있도록
    설정했습니다.


결과화면은 이렇게 구동이 잘 됐습니다.

Lv. 2

  • 필요한 클래스들을 설계하고 클래스들의 프로퍼티와 메소드를 정의합니다.

  • 일단 필요한 클래스는 (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를 사용함에 따라 출력 형태가 조금씩 바뀌는 것 같아 그 부분이 헷갈린다.

    상속의 형태는 갖출 수 있지만 아직 코드가 간단해서 그런지 더 좋은 점이 눈에 띄지 않는다.

    공부를 다시 해야하는건가 물음표가...

    여튼 내일도 화이팅!

0개의 댓글