심화 과제 : 키오스크
문제 : 실행 시 메뉴판을 보여주고 메뉴 번호를 입력 시 해당 메뉴의 세부 종류들을 보여주는 키오스크를 만들 것
* main 메소드 코드
fun main(){
var mainmenu = Menu()
var burger = Burgers()
var ice = IceCream()
var beverage = Drink()
println("${mainmenu.menu()}")
while (true) {
print("원하는 종류를 선택하세요 : ")
var number1 = readLine()!!
if(number1=="0") {
println("프로그램을 종료합니다.")
break
}
when (number1) {
"1" -> {
println("${burger.burgers()}")
print("원하시는 상품 번호를 입력하세요 : ")
var check1 = readLine()!!
when(check1){
"1" -> burger.shackburger()
"2" -> burger.smokeshack()
"3" -> burger.shroom()
"4" -> burger.cheese()
"0" -> println("뒤로가기 ${mainmenu.menu()}")
}
}
"2" -> {
println("${ice.iceCream()}")
print("원하시는 상품 번호를 입력하세요 : ")
var check2 = readLine()!!
when (check2) {
"1" -> ice.chocolate()
"2" -> ice.vanila()
"3" -> ice.strawberry()
"4" -> ice.melon()
"0" -> println("뒤로가기 ${mainmenu.menu()}")
}
}
"3" -> {
println("${beverage.drink()}")
print("원하시는 상품 번호를 입력하세요 : ")
var check3 = readLine()!!
when (check3) {
"1" -> beverage.coffee()
"2" -> beverage.black()
"3" -> beverage.lemonade()
"4" -> beverage.banana()
"0" -> println("뒤로가기 ${mainmenu.menu()}")
}
}
}
}
}
* main 메소드 코드 내용 요약
1. mainmenu 변수는 Menu 클래스에서 전체 메뉴를 보여주는 println문을 받아옴
2. Burger, ice, beverage는 각각 Burgers, IceCream, Drink 클래스를 받아온다
3. 처음에 바로 전체 메뉴가 출력되도록 println문 작성
4. while 무한 루프문을 이용하여 메뉴 출력이 유지되도록 선언
5. when 조건문을 이용하여 원하는 메뉴 번호(number1) 입력 시 해당 메뉴의 상세 종류를 보여주는 메뉴판으로 이동할 수 있게함 (만약 문자 0 입력 시 프로그램 종료)
6. 상세 메뉴판으로 이동하여 원하는 메뉴 번호(check1,2,3)을 누르면 해당 메뉴의 이름과 가격이 출력되도록 이중 when문을 작성
7. 메뉴 번호(check1,2,3) "0"을 입력 시 처음 전체 메뉴를 보여주는 메뉴판으로 돌아간다.
* Menu 클래스 코드
class Menu{
fun menu() {
println("[SHAKESHACK MENU]")
println("1.Burgers")
println("2.Ice Cream")
println("3.Drinks")
println("0.종료")
}
}
* 코드 내용 요약
1. 전체 메뉴를 보여줄 menu 메소드 작성
* Burgers 클래스 코드
class Burgers{
fun burgers(){
println("[Burgers MENU]")
println("1.ShackBurger")
println("2.SmokeShack")
println("3.Shroom Burger")
println("4.Cheeseburger")
println("0.뒤로가기")
}
fun shackburger(){
var name = "ShackBurger"
var price = 5500
println("${name}의 가격은 ${price}입니다.")
}
fun smokeshack(){
var name = "SmokeShack"
var price = 6500
println("${name}의 가격은 ${price}입니다.")
}
fun shroom(){
var name = "Shroom Burger"
var price = 7000
println("${name}의 가격은 ${price}입니다.")
}
fun cheese(){
var name = "Cheese Burger"
var price = 5700
println("${name}의 가격은 ${price}입니다.")
}
}
* 코드 내용 요약
1. 버거의 상세 종류를 보여주는 burgers 메소드 작성
2. 버거 종류마다 각 메소드 생성(shack burger, smokestack, shroom, cheese)
3. 메소드 안에 버거의 명칭(name)과 가격(price) 작성 후 출력되도록 println문 작성
* IceCream, Drinks 클래스 코드
class IceCream{
fun iceCream() {
println("[Ice Cream MENU]")
println("1.Chocolate Ice Cream")
println("2.Vanila Ice Cream")
println("3.Strawberry Ice Cream")
println("4.Melon Ice Cream")
println("0.뒤로가기")
}
fun chocolate() {
var name = "Chocolate Ice Cream"
var price = 5000
println("${name}의 가격은 ${price}입니다.")
}
fun vanila() {
var name = "Vanila Ice Cream"
var price = 6000
println("${name}의 가격은 ${price}입니다.")
}
fun strawberry() {
var name = "Strawberry Ice Cream"
var price = 6000
println("${name}의 가격은 ${price}입니다.")
}
fun melon() {
var name = "Melon Ice Cream"
var price = 5500
println("${name}의 가격은 ${price}입니다.")
}
}
class Drink{
fun drink(){
println("[Drinks MENU]")
println("1.Coffee")
println("2.Black Tea")
println("3.Lemonade")
println("4.Banana Juice")
println("0.뒤로가기")
}
fun coffee() {
var name = "Coffee"
var price = 4500
println("${name}의 가격은 ${price}입니다.")
}
fun black() {
var name = "Black Tea"
var price = 5000
println("${name}의 가격은 ${price}입니다.")
}
fun lemonade() {
var name = "Lemonade"
var price = 4500
println("${name}의 가격은 ${price}입니다.")
}
fun banana() {
var name = "Banana Juice"
var price = 5500
println("${name}의 가격은 ${price}입니다.")
}
}
-> IceCream 클래스와 Drinks 클래스도 메소드들 명칭만 다를 뿐 Burgers 클래스와 전체적인 흐름은 똑같아서 코드 내용 요약은 생략
진행하면서 느낀 점
출력은 나름 구성대로 나오는 거 같은데 내가 쓴 코드가 깔끔하게 잘 쓴 코드인지 확신을 못하겠다 ㅠㅠ.. 현재 코드에 주 생성자와 상속, 리스트도 추가해야 하는데 갈 길이 먼 거 같다.
특히 리스트랑 주 생성자는 어떻게 써야 할지 감이 안 와서 내일 좀 더 구글링 해보고 코드 작성을 해보려고 한다.
'Android 앱개발 공부 > TIL(Today I Learned)' 카테고리의 다른 글
[Android] TIL 19일차 (0) | 2024.06.17 |
---|---|
[Android] TIL 18일차 (0) | 2024.06.14 |
[Android] TIL 16일차 (2) | 2024.06.12 |
[Android] TIL 15일차 (0) | 2024.06.11 |
[Android] TIL 14일차 (2) | 2024.06.10 |