이 프로젝트는 "메인화면(카테고리 선택) → 상품 선택/수량 입력 → 장바구니 확인 → 주문 확정" 흐름을 기준으로
필요 기능부터 역순으로 쌓는 방식으로 설계했습니다.
id, productName, price, description, inventorysetInventory() 제공id, name, List<Product> productsaddProduct()로 카테고리에 상품 등록totalAmountgetRating()에서 실시간 계산(계산형 메서드)List<Product> 기반 장바구니Product 객체를 quantity만큼 리스트에 반복 저장addShoppingBasket(product, quantity) : 수량만큼 addgetOverLab() : 장바구니에서 중복 제거된 상품 목록(한 종류씩만)getCount(product) : 특정 상품이 장바구니에 몇 개 담겼는지 카운트printBasketItems() : 상품별로 묶어서 수량 출력getTotalPrice() : (가격 × 수량) 합산Basketclear() : 주문 확정 후 장바구니 초기화printMain() + 카테고리 선택 + 장바구니 메뉴categoryProduct()에서 상품 선택/수량 입력/장바구니 담기주문 확정은 아래 3가지 처리가 반드시 필요하다고 판단해 순서를 고정했습니다.
customer.addOrderAmount(total)systemDeductStock()basket.Basketclear()categoryId()에서 null 처리null 처리totalAmount(누적 구매금액)을 기준으로 getRating()에서 실시간 산정합니다.getDiscountRate() / getDiscountPercent()에서 계산합니다.addOrderAmount()로 누적 금액이 증가하며, 변경된 등급은 다음 주문부터 적용됩니다.할인 후 금액 = 할인 전 총액 × (1 - 할인율)Math.round()로 반올림하여 정수 금액으로 출력합니다.최길중의 커머스 시스템: 카테고리별 상품 선택 → 장바구니 담기 → 주문 확정(누적금액/등급 반영 + 재고 차감)