๐Ÿ•ฎ [Kotlin] ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ํ‚ค์˜ค์Šคํฌ ๋‹จ๊ณ„๋ณ„ ๊ตฌํ˜„ํ•˜๊ธฐ
๋ฐ˜์‘ํ˜•

 

 

โœ… Lv 0

  • ๊ณผ์ œ ์‹œ์ž‘ ์ „ ์–ด๋–ป๊ฒŒ ํ‚ค์˜ค์Šคํฌ๋ฅผ ๊ตฌํ˜„ํ•  ๊ฒƒ์ธ์ง€ ์ƒ๊ฐ
  • ์š”๊ตฌ ์‚ฌํ•ญ๋ณ„๋กœ ์ƒ์„ธ ๊ธฐ๋Šฅ์„ ์ƒ๊ฐ
  • ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ ์‚ฌํ•ญ๋“ค์„ ๊ณ ๋ ค

 


 

โœ… Lv 1 (์กฐ๊ฑด, ๋ฐ˜๋ณต๋ฌธ / if, when, for, while)

  • ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ”๋‰ดํŒ์˜ ๋ฒˆํ˜ธ๋“ค์„ ๋ณด์—ฌ์คŒ (๋Œ€๋ถ„๋ฅ˜์˜ ๋ฉ”๋‰ด๋ฅผ ๋ณด์—ฌ์คŒ)
  • ๋Œ€๋ถ„๋ฅ˜ ๋ฉ”๋‰ด์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์„ ํƒํ•˜๋ฉด ์„ธ๋ถ€ ๋ฉ”๋‰ด๋“ค์„ ๋ณด์—ฌ์คŒ
  • ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋ฉ”๋‰ด ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ์œ ์ง€
  • ๋Œ€๋ถ„๋ฅ˜ ๋ฉ”๋‰ด์—์„œ, 0๋ฒˆ์ด ์ž…๋ ฅ๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ

 

Trouble Shooting

  • ๋Œ€๋ถ„๋ฅ˜์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์„ธ๋ถ€ ๋ฉ”๋‰ด๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ , ๋Œ€๋ถ„๋ฅ˜ ๋ฉ”๋‰ด์—์„œ 0์„ ์ž…๋ ฅํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ์‹œํ‚ค๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ์œ„์˜ ์›€์งค๊ณผ ๊ฐ™์ด ์†Œ๋ถ„๋ฅ˜๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ๋“ค์–ด๊ฐ”๋‹ค ๋‚˜์˜ค๋ฉด, 0์„ ์—ฌ๋Ÿฌ๋ฒˆ ์ž…๋ ฅํ•ด์•ผ Exit๊ฐ€ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.
  • 0์„ ๋ˆŒ๋ €์„ ๋•Œ์˜ break๊ฐ€ while(true)๋ฅผ ๋น ์ ธ๋‚˜์˜ค์ง€๋งŒ, ์—ฌ์ „ํžˆ fun main()์œ„์— ์กด์žฌํ•˜์—ฌ ๊ทธ๋Ÿฐ ๊ฒƒ์ธ๊ฐ€?

  • ๋งž์•˜๋‹ค. break๋ฅผ ํ•ด๋ดค์ž while์„ ๋น ์ ธ๋‚˜์™€ fun main()์˜ ์ฒ˜์Œ์œผ๋กœ ๊ฐ€๊ฒŒ๋˜๋‹ˆ ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™์•˜๋‹ค.
  • ๋ฐ–์— ์žˆ๋˜ while(true)๋ฅผ ์•„์˜ˆ ์—†์• ๋ฒ„๋ฆฌ๊ณ , else์˜ ๊ฒฝ์šฐ when ๋‚ด์—์„œ main()์„ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ค๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.

 

๋”๋ณด๊ธฐ

 

 

๊ตฌํ˜„ํ•œ ์ฝ”๋“œ

 

main.kt



package com.limheejin.kiosk

fun main() {

    // ๋Œ€๋ถ„๋ฅ˜ ๋ฉ”๋‰ดํŒ ๋ฐ˜๋ณต

        println(
            """์•„๋ž˜ ๋ฉ”๋‰ดํŒ์„ ๋ณด์‹œ๊ณ  ๋ฉ”๋‰ด๋ฅผ ๊ณจ๋ผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.
        |[ SHAKESHACK MENU ]
        |1. Burgers         | ์•ต๊ฑฐ์Šค ๋น„ํ”„ ํ†ต์‚ด์„ ๋‹ค์ ธ๋งŒ๋“  ๋ฒ„๊ฑฐ
        |2. Forzen Custard  | ๋งค์žฅ์—์„œ ์‹ ์„ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์•„์ด์Šคํฌ๋ฆผ
        |3. Drinks          | ๋งค์žฅ์—์„œ ์ง์ ‘ ๋งŒ๋“œ๋Š” ์Œ๋ฃŒ
        |4. Beer            | ๋‰ด์š• ๋ธŒ๋ฃจํด๋ฆฐ ๋ธŒ๋ฃจ์–ด๋ฆฌ์—์„œ ์–‘์กฐํ•œ ๋งฅ์ฃผ
        |0. ์ข…๋ฃŒ            | ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
    """.trimMargin()
        )


        var menuSelect = readLine()!!.toInt()

        when (menuSelect) {
            1 -> Burgers2()
            2 -> FrozenCustard2()
            3 -> Drinks2()
            4 -> Beer2()
            0 -> println("ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.")
            else -> {
                println("์ž˜๋ชป๋œ ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”.")
                main()
            }

        }


}



// ๋ฒ„๊ฑฐ ๋ฉ”๋‰ดํŒ ์ถœ๋ ฅ
fun Burgers2() {
    println("""
[ Burgers MENU ]
1. ShackBurger   | W 6.9 | ํ† ๋งˆํ† , ์–‘์ƒ์ถ”, ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ
2. SmokeShack    | W 8.9 | ๋ฒ ์ด์ปจ, ์ฒด๋ฆฌ ํŽ˜ํผ์— ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ
3. Shroom Burger | W 9.4 | ๋ชฌ์Šคํ„ฐ ์น˜์ฆˆ์™€ ์ฒด๋‹ค ์น˜์ฆˆ๋กœ ์†์„ ์ฑ„์šด ๋ฒ ์ง€ํ…Œ๋ฆฌ์•ˆ ๋ฒ„๊ฑฐ
4. Cheeseburger  | W 6.9 | ํฌํ…Œ์ดํ†  ๋ฒˆ๊ณผ ๋น„ํ”„ํŒจํ‹ฐ, ์น˜์ฆˆ๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ
5. Hamburger     | W 5.4 | ๋น„ํ”„ํŒจํ‹ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ผ์ฑ„๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ธฐ๋ณธ๋ฒ„๊ฑฐ
0. ๋’ค๋กœ๊ฐ€๊ธฐ      | ๋’ค๋กœ๊ฐ€๊ธฐ
    """.trimMargin())

    var burgerSelect = readLine()!!.toInt()
    when(burgerSelect){
        0 -> main()
    }

}



// ์•„์ด์Šคํฌ๋ฆผ ๋ฉ”๋‰ดํŒ ์ถœ๋ ฅ

fun FrozenCustard2() {
    println("""
[ Frozen Custard MENU ]
1. Caramel Cashew          | W 4.5 | ์นด๋ผ๋ฉœ ๋ง›์˜ ์บ์Šˆ๋„›์ด ์ผํ’ˆ์ธ ์•„์ด์Šคํฌ๋ฆผ
2. Pistachio               | W 4.5 | ํ”ผ์Šคํƒ€์น˜์˜ค ํ–ฅ๊ณผ ์‹๊ฐ์ด ๋‚˜๋Š” ์•„์ด์Šคํฌ๋ฆผ
3. Banana Pecan            | W 4.5 | ๋ฐ”๋‚˜๋‚˜ ํ”ผ์นธ๋ง›์ด ๋‚˜๋Š” ์•„์ด์Šคํฌ๋ฆผ
4. Oreo Almond             | W 5.5 | ์˜ค๋ ˆ์˜ค์™€ ์ดˆ์ฝ” ์•„๋ชฌ๋“œ ๋ง›์ด ํ•ฉ์ณ์ง„ ์•„์ด์Šคํฌ๋ฆผ
5. Mint Chocolate          | W 4.5 | ๋ฏผํŠธ ์ดˆ์ฝ” ๋ง›์ด ๋‚˜๋Š” ์•„์ด์Šคํฌ๋ฆผ
0. ๋’ค๋กœ๊ฐ€๊ธฐ                 | ๋’ค๋กœ๊ฐ€๊ธฐ
    """.trimMargin())

    var frozenSelect = readLine()!!.toInt()
    when(frozenSelect){
        0 -> main()
    }
}



// ์Œ๋ฃŒ ๋ฉ”๋‰ดํŒ ์ถœ๋ ฅ
fun Drinks2() {
    println("""
[ Drinks MENU ]
1. Milk Shake          | W 7.2 | ์•„์ด์Šคํฌ๋ฆผ์„ ๊ฐˆ์•„ ๋งˆ์‹ค ์ˆ˜ ์žˆ๋Š” ์Œ๋ฃŒ
2. Coconut Water       | W 7.9 | ์ฝ”์ฝ”๋„› ์•ˆ์— ๋“  ํˆฌ๋ช…ํ•œ ์•ก์ฒด ์Œ๋ฃŒ
3. Mocktail            | W 9.4 | ๊ฐ€๋ณ๊ฒŒ ๋งˆ์‹œ๊ธฐ ์ข‹์€ ๋ฌด์•Œ์ฝœ ์นตํ…Œ์ผ
4. Tonic Water         | W 4.0 | ํƒ„์‚ฐ์ˆ˜์— ํ€ด๋‹Œ์„ ๋…น์—ฌ ๋งŒ๋“  ์Œ๋ฃŒ
5. Juice               | W 5.0 | ์ƒ์พŒํ•œ ๊ณผ์ผ์„ ๊ฐˆ์•„๋„ฃ์€ ์ƒ๊ณผ์ผ์ฃผ์Šค
0. ๋’ค๋กœ๊ฐ€๊ธฐ             | ๋’ค๋กœ๊ฐ€๊ธฐ
    """.trimMargin())

    var drinkSelect = readLine()!!.toInt()
    when(drinkSelect){
        0 -> main()
    }
}



// ๋งฅ์ฃผ ๋ฉ”๋‰ดํŒ ์ถœ๋ ฅ
fun Beer2() {
    println("""
[ Beer MENU ]
1. Pilsner Urquell       | W 9.9 | ์ฒด์ฝ”์‚ฐ ์‚ฌ์ธ  ํ™‰์˜ ์”์“ธํ•œ ๋ง›์ด ํŠน์ง•
2. Budweiser             | W 9.5 | ๋ถ๋ฏธ ์Šคํƒ€์ผ์˜ ๋ผ๊ฑฐ ๋งฅ์ฃผ
3. Stella Artois         | W 9.4 | ์ฒด์ฝ”์˜ ํ•„์Šค๋„ˆ ๋งฅ์ฃผ
4. Heineken              | W 8.0 | ๋„ค๋œ๋ž€๋“œ์‚ฐ์˜ ๋‹ฌ๋‹ฌํ•œ ๊ณก๋ฌผ ํ–ฅ๊ณผ ์˜…์€ ์“ด๋ง›
5. Cass                  | W 7.0 | ๋‹น์‹ ์ด ํ•œ๊ตญ์ธ์ด๋ผ๋ฉด ์ด ๋งฅ์ฃผ๋ฅผ ์ข‹์•„ํ•  ์ˆ˜ ์žˆ์Œ
0. ๋’ค๋กœ๊ฐ€๊ธฐ               | ๋’ค๋กœ๊ฐ€๊ธฐ
    """.trimMargin())

    var beerSelect = readLine()!!.toInt()
    when(beerSelect){
        0 -> main()
    }
}

 

ํ”ผ๋“œ๋ฐฑ

  • kotlin์—์„œ๋Š” null safety๋ฅผ ๋ฌด์‹œํ•˜๋Š” !!๋Š” ์ง€์–‘ํ•ด์•ผํ•œ๋‹ค.
    readLine()!!.toInt() ๋Œ€์‹  readLine().toIntOrNull ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.
  • CamelCase ์œ ์˜: ํ•จ์ˆ˜์˜ ์ฒซ ์‹œ์ž‘์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค. fun FrozenCustard2() > fun frozenCustard2()
  • ์ƒ์† ๊ฐœ๋… ๋” ๋ฐฐ์›Œ๋ณด๊ธฐ

 


 

โœ… Lv 2 (๋ฉ”์†Œ๋“œ, ํด๋ž˜์Šค / fun, class)

  • ํ•„์š”ํ•œ ํด๋ž˜์Šค๋“ค์„ ์„ค๊ณ„ (๋ฒ„๊ฑฐ, ์•„์ด์Šคํฌ๋ฆผ, ์Œ๋ฃŒ, ๋งฅ์ฃผ, ์ฃผ๋ฌธ, ๊ณตํ†ต ๋“ฑ)
  • ํด๋ž˜์Šค๋“ค์˜ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ (ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ๊ทธ๋ฆฌ๊ธฐ)
  •  Lv1์—์„œ ์ž‘์„ฑํ•œ ๋กœ์ง์„ ๋ฉ”์†Œ๋“œ๋กœ ๋งŒ๋“ฆ

 

๋”๋ณด๊ธฐ

 

package com.limheejin.kiosk

fun main() {


    // ๋Œ€๋ถ„๋ฅ˜ ๋ฉ”๋‰ดํŒ ๋ฐ˜๋ณต

        println(
            """์•„๋ž˜ ๋ฉ”๋‰ดํŒ์„ ๋ณด์‹œ๊ณ  ๋ฉ”๋‰ด๋ฅผ ๊ณจ๋ผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.
        |[ SHAKESHACK MENU ]
        |1. Burgers         | ์•ต๊ฑฐ์Šค ๋น„ํ”„ ํ†ต์‚ด์„ ๋‹ค์ ธ๋งŒ๋“  ๋ฒ„๊ฑฐ
        |2. Forzen Custard  | ๋งค์žฅ์—์„œ ์‹ ์„ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์•„์ด์Šคํฌ๋ฆผ
        |3. Drinks          | ๋งค์žฅ์—์„œ ์ง์ ‘ ๋งŒ๋“œ๋Š” ์Œ๋ฃŒ
        |4. Beer            | ๋‰ด์š• ๋ธŒ๋ฃจํด๋ฆฐ ๋ธŒ๋ฃจ์–ด๋ฆฌ์—์„œ ์–‘์กฐํ•œ ๋งฅ์ฃผ
        |0. ์ข…๋ฃŒ            | ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
    """.trimMargin()
        )


        var menuSelect = readLine()!!.toInt()

        when (menuSelect) {
            1 -> burgers2()
            2 -> frozenCustard2()
            3 -> drinks2()
            4 -> beer2()
            0 -> println("ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.")
            else -> {
                println("์ž˜๋ชป๋œ ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”.")
                main()
            }

        }


}



// ๋ฒ„๊ฑฐ ๋ฉ”๋‰ดํŒ ์ถœ๋ ฅ
fun burgers2() {

    var shackBurger = Food("ShackBurger", 6.9, "burger", "ํ† ๋งˆํ† , ์–‘์ƒ์ถ”, ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ")


    println("""
[ Burgers MENU ]
1. ShackBurger   | W 6.9 | ํ† ๋งˆํ† , ์–‘์ƒ์ถ”, ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ
2. SmokeShack    | W 8.9 | ๋ฒ ์ด์ปจ, ์ฒด๋ฆฌ ํŽ˜ํผ์— ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ
3. Shroom Burger | W 9.4 | ๋ชฌ์Šคํ„ฐ ์น˜์ฆˆ์™€ ์ฒด๋‹ค ์น˜์ฆˆ๋กœ ์†์„ ์ฑ„์šด ๋ฒ ์ง€ํ…Œ๋ฆฌ์•ˆ ๋ฒ„๊ฑฐ
4. Cheeseburger  | W 6.9 | ํฌํ…Œ์ดํ†  ๋ฒˆ๊ณผ ๋น„ํ”„ํŒจํ‹ฐ, ์น˜์ฆˆ๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ
5. Hamburger     | W 5.4 | ๋น„ํ”„ํŒจํ‹ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ผ์ฑ„๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ธฐ๋ณธ๋ฒ„๊ฑฐ
0. ๋’ค๋กœ๊ฐ€๊ธฐ      | ๋’ค๋กœ๊ฐ€๊ธฐ
    """.trimMargin())

    var burgerSelect = readLine()!!.toInt()
    when(burgerSelect){
        0 -> main()
        1 -> shackBurger.displayInfo()

    }

}



// ์•„์ด์Šคํฌ๋ฆผ ๋ฉ”๋‰ดํŒ ์ถœ๋ ฅ

fun frozenCustard2() {
    println("""
[ Frozen Custard MENU ]
1. Caramel Cashew          | W 4.5 | ์นด๋ผ๋ฉœ ๋ง›์˜ ์บ์Šˆ๋„›์ด ์ผํ’ˆ์ธ ์•„์ด์Šคํฌ๋ฆผ
2. Pistachio               | W 4.5 | ํ”ผ์Šคํƒ€์น˜์˜ค ํ–ฅ๊ณผ ์‹๊ฐ์ด ๋‚˜๋Š” ์•„์ด์Šคํฌ๋ฆผ
3. Banana Pecan            | W 4.5 | ๋ฐ”๋‚˜๋‚˜ ํ”ผ์นธ๋ง›์ด ๋‚˜๋Š” ์•„์ด์Šคํฌ๋ฆผ
4. Oreo Almond             | W 5.5 | ์˜ค๋ ˆ์˜ค์™€ ์ดˆ์ฝ” ์•„๋ชฌ๋“œ ๋ง›์ด ํ•ฉ์ณ์ง„ ์•„์ด์Šคํฌ๋ฆผ
5. Mint Chocolate          | W 4.5 | ๋ฏผํŠธ ์ดˆ์ฝ” ๋ง›์ด ๋‚˜๋Š” ์•„์ด์Šคํฌ๋ฆผ
0. ๋’ค๋กœ๊ฐ€๊ธฐ                 | ๋’ค๋กœ๊ฐ€๊ธฐ
    """.trimMargin())

    var frozenSelect = readLine()!!.toInt()
    when(frozenSelect){
        0 -> main()
    }
}



// ์Œ๋ฃŒ ๋ฉ”๋‰ดํŒ ์ถœ๋ ฅ
fun drinks2() {
    println("""
[ Drinks MENU ]
1. Milk Shake          | W 7.2 | ์•„์ด์Šคํฌ๋ฆผ์„ ๊ฐˆ์•„ ๋งˆ์‹ค ์ˆ˜ ์žˆ๋Š” ์Œ๋ฃŒ
2. Coconut Water       | W 7.9 | ์ฝ”์ฝ”๋„› ์•ˆ์— ๋“  ํˆฌ๋ช…ํ•œ ์•ก์ฒด ์Œ๋ฃŒ
3. Mocktail            | W 9.4 | ๊ฐ€๋ณ๊ฒŒ ๋งˆ์‹œ๊ธฐ ์ข‹์€ ๋ฌด์•Œ์ฝœ ์นตํ…Œ์ผ
4. Tonic Water         | W 4.0 | ํƒ„์‚ฐ์ˆ˜์— ํ€ด๋‹Œ์„ ๋…น์—ฌ ๋งŒ๋“  ์Œ๋ฃŒ
5. Juice               | W 5.0 | ์ƒ์พŒํ•œ ๊ณผ์ผ์„ ๊ฐˆ์•„๋„ฃ์€ ์ƒ๊ณผ์ผ์ฃผ์Šค
0. ๋’ค๋กœ๊ฐ€๊ธฐ             | ๋’ค๋กœ๊ฐ€๊ธฐ
    """.trimMargin())

    var drinkSelect = readLine()!!.toInt()
    when(drinkSelect){
        0 -> main()
    }
}



// ๋งฅ์ฃผ ๋ฉ”๋‰ดํŒ ์ถœ๋ ฅ
fun beer2() {
    println("""
[ Beer MENU ]
1. Pilsner Urquell       | W 9.9 | ์ฒด์ฝ”์‚ฐ ์‚ฌ์ธ  ํ™‰์˜ ์”์“ธํ•œ ๋ง›์ด ํŠน์ง•
2. Budweiser             | W 9.5 | ๋ถ๋ฏธ ์Šคํƒ€์ผ์˜ ๋ผ๊ฑฐ ๋งฅ์ฃผ
3. Stella Artois         | W 9.4 | ์ฒด์ฝ”์˜ ํ•„์Šค๋„ˆ ๋งฅ์ฃผ
4. Heineken              | W 8.0 | ๋„ค๋œ๋ž€๋“œ์‚ฐ์˜ ๋‹ฌ๋‹ฌํ•œ ๊ณก๋ฌผ ํ–ฅ๊ณผ ์˜…์€ ์“ด๋ง›
5. Cass                  | W 7.0 | ๋‹น์‹ ์ด ํ•œ๊ตญ์ธ์ด๋ผ๋ฉด ์ด ๋งฅ์ฃผ๋ฅผ ์ข‹์•„ํ•  ์ˆ˜ ์žˆ์Œ
0. ๋’ค๋กœ๊ฐ€๊ธฐ               | ๋’ค๋กœ๊ฐ€๊ธฐ
    """.trimMargin())

    var beerSelect = readLine()!!.toInt()
    when(beerSelect){
        0 -> main()
    }
}
Food.kt

package com.limheejin.kiosk

class Food(name: String, price: Double, category: String, description: String) {

    var name: String
    var price: Double
    var category: String
    var description: String

    init{
        this.name = name
        this.price = price
        this.category = category
        this.description = description
        // (๊ฐ€๋…์„ฑ) ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐ
    }

    fun displayInfo() {
        println("์นดํ…Œ๊ณ ๋ฆฌ: $category, ๊ฐ€๊ฒฉ: $price, ์ด๋ฆ„: $name, ์„ค๋ช…: [$description]")
    }
}

 

 

 


 

โŒ Lv 3 (์ƒ์†, ์ปฌ๋ ‰์…˜ / open, list)

  • Lv2 ์—์„œ ์„ค๊ณ„ํ•œ ํด๋ž˜์Šค๋“ค์„ ์ƒ์† ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋„๋ก ๋ณ€๊ฒฝ
  • Burger๋„ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์„์ง€ ๊ณ ๋ฏผ
  • ์˜ˆ๋ฅผ ๋“ค์–ด ShackBurger๋Š” Burger์˜ ์ž์‹์ด๊ณ , Burger๋Š” Food์˜ ์ž์‹์ผ์ˆ˜๋„ ์žˆ์Œ
  • ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ ๊ฐ์ฒด๋กœ ๋ชจ๋“  ๋ฉ”๋‰ด๋“ค์„ ๊ด€๋ฆฌํ•˜๋„๋ก ์ˆ˜์ • (List)
  • ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ”์ธ์—์„œ init ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฉ”๋‰ด๋“ค์„ ๊ฐ์ฒดํ™”ํ•˜๊ณ  ๋ฆฌ์ŠคํŠธ์— ๋‹ด์•„๋‘ 

 

๋”๋ณด๊ธฐ

 

 

1. Menu.kt ์ƒ์„ฑ

Menu.kt

package com.limheejin.kiosk

open class Menu(name: String, description: String) {
    var name: String
    var description: String

    init{
        this.name = name
        this.description = description
    }

    open fun displayInfo() {
        println("์ด๋ฆ„: $name, ์„ค๋ช…: [$description]")
    }
}

 

 

2. ๊ธฐ์กด Food.kt์— Menu๋ฅผ ์ƒ์†ํ•˜๊ณ  ์ฝ”๋“œ์ผ๋ถ€๋ถ„ ์ˆ˜์ •

package com.limheejin.kiosk

class Food(name: String, price: Double, category: String, description: String): Menu(name, description){

    // name๊ณผ description์€ Menu๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์œผ๋ฏ€๋กœ ๋”ฐ๋กœ ์„ ์–ธํ•  ํ•„์š” X
    var price: Double
    var category: String

    init{
        this.price = price
        this.category = category
        // (๊ฐ€๋…์„ฑ) ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐ
    }

    override fun displayInfo() { // ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•ด์•ผ ๊ฐ™์€ displayInfo() ์‚ฌ์šฉ ๊ฐ€๋Šฅ
        println("์นดํ…Œ๊ณ ๋ฆฌ: $category, ๊ฐ€๊ฒฉ: $price, ์ด๋ฆ„: $name, ์„ค๋ช…: [$description]")
    }
}

 

 

3. ๋ฉ”์ธ ์•กํ‹ฐ๋น„ํ‹ฐ์— ๋ˆ์„ ์„ค์ •ํ•˜๊ณ  ๋ฉ”๋‰ด, ์Œ์‹ ๋ชฉ๋ก์„ ๋„ฃ๋Š” init()์„ ๋งŒ๋“ค์–ด ํ˜ธ์ถœ / ๋ฆฌ์ŠคํŠธ์— ๊ฐ’ ๋„ฃ์Œ

kiosk.kt



package com.limheejin.kiosk


// menus์™€ foods ๋ถˆ๋ณ€ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ, money ๊ฐ€๋ณ€ ์„ ์–ธ
val menus: MutableList<Menu> = ArrayList()
val foods: MutableList<Food> = ArrayList()
var money: Double = 0.0


fun init() {
    // ์›๋ž˜๋ผ๋ฉด ์„œ๋ฒ„์—์„œ ๋ฆฌ์ŠคํŠธ ๋ฐ›์•„์™€์„œ ๋ฐ˜๋ณต๋ฌธ ๋Œ๋ ค์„œ add ํ•œ์ค„์ด๋ฉด ๋๋‚  ์ž‘์—…์ธ๋ฐ, ์„œ๋ฒ„ ์—ฐ๋™ ์•ˆ ํ•ด์„œ ์ผ์ผํžˆ ์ž‘์—…


    money = 100.0

    menus.add(Menu("Burgers", "์•ต๊ฑฐ์Šค ๋น„ํ”„ ํ†ต์‚ด์„ ๋‹ค์ ธ๋งŒ๋“  ๋ฒ„๊ฑฐ"))
    menus.add(Menu("Frozen Custard", "๋งค์žฅ์—์„œ ์‹ ์„ ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์•„์ด์Šคํฌ๋ฆผ"))
    menus.add(Menu("Drinks", "๋งค์žฅ์—์„œ ์ง์ ‘ ๋งŒ๋“œ๋Š” ์Œ๋ฃŒ"))
    menus.add(Menu("Beer", "๋‰ด์š• ๋ธŒ๋ฃจํด๋ฆฐ ๋ธŒ๋ฃจ์–ด๋ฆฌ์—์„œ ์–‘์กฐํ•œ ๋งฅ์ฃผ"))

    foods.add(Food("ShackBurger", 6.9, "burger", "ํ† ๋งˆํ† , ์–‘์ƒ์ถ”, ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ"))
    foods.add(Food("SmokeShack", 8.9, "burger", "๋ฒ ์ด์ปจ, ์ฒด๋ฆฌ ํŽ˜ํผ์— ์‰‘์†Œ์Šค๊ฐ€ ํ† ํ•‘๋œ ์น˜์ฆˆ๋ฒ„๊ฑฐ"))
    ...
    }
    
    fun main() {

    init() // ์ฒ˜์Œ์— init ํ˜ธ์ถœ. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ํ•  ๋•Œ ํ–„๋ฒ„๊ฑฐ๋“  ์Œ๋ฃŒ์ˆ˜๋“  ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋†”์•ผ ๊ทธ ๊ฐ์ฒดํ•œํ…Œ ๊ฐ’์„ ์“ฐ๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ!
    // fun ๋ฐ–์—์„œ init ๋งŒ๋“ค๊ณ  ํ˜ธ์ถœ


    while (true) { 
    ... ์ด์ „๊ณผ ๋™์ผ

 


 

 

โŒ Lv 4 (์˜ˆ์™ธ์ฒ˜๋ฆฌ / try, throw)

  • ๋ฉ”๋‰ดํŒ ๋ฒˆํ˜ธ ์ž…๋ ฅ์‹œ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜, ์—†๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ๋‹ค์‹œ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์˜ˆ์™ธ์ฒ˜๋ฆฌ
  • ํ˜„์žฌ ์ž”์•ก๊ณผ ๊ฐ€๊ฒฉ์„ ๋น„๊ตํ•ด์„œ ๊ตฌ๋งค ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋ฅผ ํด๋ž˜์Šค์— ์ถ”๊ฐ€์ ์œผ๋กœ ๊ตฌํ˜„ (๊ตฌ๋งคํ• ๋งŒํผ ๋ˆ์ด ์žˆ๋Š”์ง€ ์ƒํƒœ์— ํฌํ•จ)

 

 


 

โŒ Lv 5 (์“ฐ๋ ˆ๋“œ / thread)

  • ํŠน์ • ์ž‘์—…์ด ์ข…๋ฃŒ๋œ ํ›„, 3์ดˆ ๋’ค์— ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ
  • ๊ฒฐ์ œํ•  ๋•Œ ํ˜„์žฌ ์‹œ๊ฐ„์„ ๋น„๊ตํ•˜์—ฌ ํŠน์ • ์‹œ๊ฐ„๋Œ€์—๋Š” ๊ฒฐ์ œํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์•Œ๋ฆผ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ˜์†”์ฐฝ์— ์ถœ๋ ฅ
  • ๊ฒฐ์ œ๊ฐ€ ์™„๋ฃŒ ๋˜์—ˆ๋‹ค๋ฉด ์‹œ๊ฐ„์„ ๋„์›Œ์คŒ (์˜ˆ: ๊ฒฐ์ œ๋ฅผ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. (2023-01-01 23:25:12))
  • ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ 5์ดˆ๋งˆ๋‹ค ํ˜„์žฌ ์ฃผ๋ฌธ ๋Œ€๊ธฐ์ˆ˜๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถœ๋ ฅ

 

 

๋ฐ˜์‘ํ˜•
 ๐Ÿ’ฌ C O M M E N T