내일이 과제 제출날이지만 오늘 학교 수업이 있어서 시간이 촉박했다.
어제는 졸업논문을 작성하고 교수님께 검토받느라 TIL을 쓸 시간이 없었다.
즉 오늘 오후에 과제를 어느정도 끝내 놔야 했다.
과제의 진행도가 많아 간단하게 발생했던 문제와 해결한 방법을 적어놓고 코드는 깃허브에 자세히 적어놓을 예정이다.
class Cart {
var selectedMenuNum: Int = 0
var myCart: MutableList<MenuInfo> = mutableListOf()
fun printMenuInCart(){
var sumPrice = 0.0
for(myMenu in myCart){
println("${myMenu.name}")
println(" Price: ${myMenu.price}")
sumPrice += myMenu.price
}
println(" Total Price: ${sumPrice}")
}
fun addMenuInCart(selectedMenuNum: Int){
}
}
오류는 장바구니 클래스 사용중에 발생했다.
먼저 myCart라는 리스트는 제품정보를 담은 클래스 객체가 저장되는 리스트이다.
각각의 메뉴 클래스에서 사용자가 선택한 제품을 인덱스로 접근해서 저 리스트 안에 집어넣는다.
printMenuInCart 메소드는 카트에 담긴 제품을 출력하는 함수이다.
return if (option == 1) burgerList[(choice*2)]
else if(option == 2) burgerList[choice*2-1]
BurgerMenu.kt
이런식으로 인덱스로 접근해서 반환한다 이 반환된 클래스 객체는
cart.myCart.add(choosedMenu.printMenu())
이렇게 MenuControl 클래스에서 add를 이용해 myCart 안에 집어넣는다.
그리고 printMenuInCart 메소드는 각 카테고리 메뉴판 아래에 출력해서 장바구니를 항상 확인할 수 있도록 하려고 했으나
myCart 리스트가 출력이 되지 않았다.
정확히는 myCart리스트에 정보가 들어가지 않아 printMenuInCart 메소드 내부 for문이 돌아가지 않았던 것이다.
원인을 찾기 위해 튜터님께도 물어보고, 구글링도 해 봤지만 별다른 소득은 없었다.
이때 불현듯 떠오른 아이디어가 객체를 인스턴스화 할 때 객체 내부 프로퍼티도 초기값으로 초기화될지도 모른다는 것이였다. 만약 내 생각이 맞다면 BurgerMenu 클래스와 MenuControl 클래스 모두 Cart클래스를 인스턴스화 하기 때문에 계속해서 myCart가 빈 리스트로 선언되고 있는 중일 것이였다.
구글링을 해 보니 내 생각은 맞았고, 오류의 원인을 알았으니 해결을 해야 했다.
해결법은 방법을 좀 찾아보니 여러 클래스에서 한 클래스의 메소드나 프로퍼티를 접근할 땐 object로 선언하면 사용이 가능하단 걸 알았다.
object Cart {
var selectedMenuNum: Int = 0
var myCart: MutableList<MenuInfo> = mutableListOf()
var sumPrice = 0.0
fun printMenuInCart(){
var totalPrice = 0.0
var count: Int = 1
println("======================================")
for(myMenu in myCart){
println("$count. ${myMenu.name}")
println("----------Price: ${myMenu.price}")
totalPrice += myMenu.price
count++
}
println("======================================")
println(">>>> Total Price: ${round(totalPrice * 10) / 10}")
sumPrice = totalPrice
}
}
계산을 위해 가격 총 합을 사용할 수 있도록 밖으로 빼 두었다.
'TIL' 카테고리의 다른 글
| TIL - 23.12.26 (1) | 2023.12.26 |
|---|---|
| TIL - 23.12.20 (1) | 2023.12.20 |
| TIL - 23.12.19 (1) | 2023.12.19 |
| TIL - 23.12.18 (0) | 2023.12.18 |
| TIL - 23.12.12 (0) | 2023.12.12 |