
장바구니에는 계속하여 값이 쌓입니다. 같은 상품이 들어온다면 수량만을 증가하여야하고, 다른 값이라면 추가로 화면에 출력을 해주어야 합니다. 이를 위해 상품의 정보를 비교해줄 리스트를 생성하고, 비교에 따른 로직을 작성하였습니다.

장바구니를 가져올 때 필드 값을 직접 접근 할 수 없도록, 필드 값을 복사하여 새로운 객체를 만든 후 가져오도록 메서드를 작성하였습니다. 하지만 이 때문에 주문 후 재고 개수 변경이 실제 장바구니 값에는 이루어지지 않고 있습니다. 이를 해결하기 위해 Category 클래스에 재고를 업데이트 해줄 메서드를 작성하였습니다.

장바구니에 상품을 추가하는 시점에 상품의 재고가 0이라면 장바구니에 추가할 수 없도록 하는 로직을 작성하였습니다. 하지만 재고가 0보다는 크지만 장바구니에 해당 상품을 여러 개 담아 그 수가 재고의 수보다 커지는 경우의 예외 로직을 구현하지 않았습니다. 해당 코드에는 2중의 검증로직이 필요합니다.