TIL

2023.10.20 TIL

  • 오늘 한 것 
    • 콘솔 키오스그 주문 프로그램 구현

어제에 이어서 키오스크 프로그램을 계속 구현하고있다

어설픈 이슈란

오늘은 필수 요구사항에 필요한 기능을 모두 구현해서 선택 요구사항 기능을 구현을 했다.

기존 구매 상품을 선택할 때, 옵션 을 추가하는 기능인데  기능을 구현하면서 문제가 조금 발생했다.

요구사항은 이렇다.

1. 상품 선택시 옵션을 추가 선택

2. 주문 시 상품 리스트를 볼 때 옵션별로 나누기.


문제사항

1. 구매 로직

기존에 구매까지의 프로세스는 이렇다

키오스크 실행 -> 각 메뉴(커피,음료,케이크) 객체 별로 상품 리스트 생성 ->

상품리스트 중 상품 선택 -> 해당 상품 주문객체에 추가(장바구니) -> 주문처리

 

여기서 문제는 상품을 선택하고 옵션을 추가해줄 때 발생했다.

기존에 상품은 키오스크 초기화 시점에 Menu 에 할당한 상품 객체들로 활용했다.

 

메뉴에 있는 상품과 옵션을 선택하면 해당 상품 객체에 옵션을 세팅해주고 주문객체에 해당 상품을 넣어주었다.

여기서 문제는 옵션을 통해 같은 상품명이어도 상품이 분류되어야 하다보니

상품의 옵션을 변경해줄 때,  주문 상품리스트에 있는 같은 상품들의 옵션이 같이 변경이되어서, 옵션 값이 모두 같아져 버린 것이다.


해결

List안에 객체를 add 할 때, 넣는 순간 다른 객체가 되는 줄 알고 착각하면서 시간을 많이썻다...

해결은 상품 주문을 선택하는 시점에 메뉴에 등록된 상품 데이터와 선택한 옵션을 기반으로 새로운 상품을 생성하여 넣어주었다.

로직을 변경하면서 상품을 생성할 때, 파라미터의 수가 달라져서 추후 다른 생성자가 나올 경우를 생각해

정적 팩토리 메소드로 수정하여 생성하는 방향으로 구현했다. 


느낀 점

컬렉션에 객체들을 저장했다고 객체가 달라지는게 아니라는 간단한 문제인데..

별거 아니겠지 하고 대충 로직만 훑어봤던게 너무 시간을 잡아먹었다...

그냥 디버거로 포인트찍고 확인해볼걸..

 

결론: 간단해보여도 신중히 접근해보자.

 

 

 

728x90

'TIL' 카테고리의 다른 글

2023.10.26 TIL  (0) 2023.10.26
2023-10-24 TIL  (2) 2023.10.24
2023.10.19 TIL  (0) 2023.10.19
2023.10.18 TIL  (2) 2023.10.19
2023.10.16 TIL  (1) 2023.10.16