코틀린(Kotlin)/해보기

[코틀린(Kotlin)] 키오스크 프로그래밍 (1

초보왕보초 2023. 12. 5. 19:48
728x90

예시) 

아래 메뉴판을 보시고 메뉴를 골라 입력해주세요.

[ SHAKESHACK MENU ]
1. Burgers         | 앵거스 비프 통살을 다져만든 버거
2. Forzen Custard  | 매장에서 신선하게 만드는 아이스크림
3. Drinks          | 매장에서 직접 만드는 음료
4. Beer            | 뉴욕 브루클린 브루어리에서 양조한 맥주
0. 종료            | 프로그램 종료
1 <-

[ Burgers MENU ]
1. ShackBurger   | W 6.9 | 토마토, 양상추, 쉑소스가 토핑된 치즈버거
2. SmokeShack    | W 8.9 | 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거
3. Shroom Burger | W 9.4 | 몬스터 치즈와 체다 치즈로 속을 채운 베지테리안 버거
3. Cheeseburger  | W 6.9 | 포테이토 번과 비프패티, 치즈가 토핑된 치즈버거
4. Hamburger     | W 5.4 | 비프패티를 기반으로 야채가 들어간 기본버거
0. 뒤로가기      | 뒤로가기
0 <-

[ SHAKESHACK MENU ]
1. Burgers         | 앵거스 비프 통살을 다져만든 버거
2. Forzen Custard  | 매장에서 신선하게 만드는 아이스크림
3. Drinks          | 매장에서 직접 만드는 음료
4. Beer            | 뉴욕 브루클린 브루어리에서 양조한 맥주
0. 종료            | 프로그램 종료
0 <-

프로그램을 종료합니다.

 

 

 

예시로 참고할 쉑쉑버거의 메뉴판

  • 입력받은 숫자에 따른 로직을 실행하는 코드 작성해 보기
  • if 나 when을 활용하기
  • 필요한 클래스들을 설계해 보기(버거, 아이스크림, 음료, 맥주 등)
  • 예외처리

 

 

 


 

 

 

KioskProgramming.kt

 

 

mainMenu.kt

  • mainMenu의 mainOrder()에서 메뉴판들을 나열하고 mainChoose에 숫자(Int)를 받는다
  • when(mainChoose)를 이용해서 각 번호에 맞춰서 각 클래스를 호출시킨다
  • 0일 땐 주문 종료 메시지, else(1~4, 0을 제외한 다른 숫자) 일 땐 경고 메시지
  • try-catch를 이용해서 mainChoose에 숫자가 아닌 string형이나 다른 타입이 입력됐을 때 예외처리 메시지

 

 

burgers.kt

 

 

frozenCustard.kt

 

 

drinks.kt

 

 

beer.kt

 

 

주문 결과

 

 

예외처리 결과

  • 1~4, 0을 제외한 번호를 입력했을 때, 경고 메시지 후 메뉴판을 다시 보여준다
  • Int형이 아닌 String타입을 입력했을 때, 경고 메시지 후 메뉴판을 다시 보여준다

 

 

 


 

 

 

주먹구구식으로 표현했기 때문에 몇 번의 추가/수정 작업이 필요하다

  1. 클래스들의 프로퍼티와 메서드 정의하기
  2. 클래스들을 상속 관계를 가지도록 변경하기
  3. 하나의 리스트객체로 모든 메뉴들을 관리하도록 수정하기

그나마 기능적으로 쓰인 건 when과 try-catch 뿐인 것 같다

무식하게 println으로 처리한 것들을 대폭 변경 할 각오를 해야 할 것 같다

문제를 제대로 이해한건지도 감이 안잡히거나, 문제는 이해가 갔는데 어떻게 해야할지 막막한게 대부분..

호텔예약과제는 손도 못대고 다음 챕터로 넘어갈 것 같다

728x90