Kotlin 문법 심화 1일

두주·2023년 12월 11일
0

TIL

목록 보기
13/58

먼저, Android Studio를 사용하다가 IntelliJ를 설치했다.
프로그램 로딩 속도가 빨라지고, 편의성 부분이 좋아진 것 같다.

구현 사항을 확인하고 메인부터 만들었다.

println("[SHAKESHACK MENU]")
println("1. BURGER")
println("2. Frozen Custard")
println("3. Drinks")
println("4. Beers")
println("0. Quit")

val selectNumber = readlnOrNull()?.toInt()

when (selectNumber) {
    1 -> MenuBurger().burgerMenu()

    2 -> MenuFrozenCustard().frozencustardMenu()

    3 -> MenuDrinks().drinksMenu()

    4 -> MenuBeers().beersMenu()

    0 -> println("프로그램을 종료합니다.")

    else -> throw IllegalArgumentException("메뉴를 다시 확인해 주세요.")

메인 메뉴 1~4와 0번을 입력받아, 각 메뉴로 이동하게 설계했다.

호출된 메뉴 클래스는 세부 메뉴를 출력한다.

class MenuBurger {
fun burgerMenu() {
val shackburger = Shackburger()
val smokeshack = Smokeshack()
val mushroomsburger = Mushroomburger()
val cheeseburger = Cheeseburger()
val hamburger = Hamburger()

    println("[ Burgers MENU ]")
    shackburger.displayInfo()
    smokeshack.displayInfo()
    mushroomsburger.displayInfo()
    cheeseburger.displayInfo()
    hamburger.displayInfo()
}

메뉴판 안에 들어가는 각 버거들을 쉽게 관리하기 위해

Burger라는 추상화 클래스를 생성했다.

abstract class Burger {
abstract val recommend: Int
abstract val name: String
abstract val price : Double
abstract val details : String

fun displayInfo() {
    println("$recommend. $name     | W $price | $details")
}

}

혹시라도 나중에 정렬기능을 배워 써먹을 수도 있을 것 같아
1~5는 recommend로 설정했다.

추후 버거가 추가될 경우 recommend 수치에 따라 정렬을 할 수 있지 않을까?
(아직 될지 안 될지 모름. 시간 남으면 공부해서 추가해 보고 싶음)

recommend, name, price, details 를 상속 클래스로부터 받아와 출력한다.

class Shackburger : Burger() {

override val recommend : Int
    get() = 1
override val name : String
    get() = "Shackburger"

override val price : Double
    get() = 6.9

override val details : String
    get() = "토마토, 양상추, 쉑소스가 토핑된 치즈버거"

내일 해볼 것

1) 메인 메뉴 (1번 항목)도 추상화하여 보수하기 쉽도록 변경하기
2) 각 메뉴를 리스트 객체로 모든 메뉴를 관리할 수 있도록 설정
3) 숫자 입력 칸에 문자 입력 시 다시 입력할 수 있도록 예외 처리
4) 현재 잔액과 상품의 가격을 비교해서 구매 가능 상태를 정의

profile
야옹.

0개의 댓글