1단계: 콘솔 주문 관리 (초급 기술)
1단계: 배열과 클래스로 만드는 콘솔 주문 관리
소규모 쇼핑몰의 회원·상품·주문을 초급 문법만으로 콘솔에서 관리한다. 이 단계에서 쓰는 기술: 클래스와 생성자, private 필드 + getter, 배열(
Member[],int[]),if/for,static메서드 분리,String.format. 마지막에 "이 코드가 어디서 아파오는가"를 짚어 2단계의 동기를 만든다.
1. 이번 단계의 목표
이 프로젝트 레벨은 하나의 도메인 — 온라인 쇼핑몰 정산 시스템 — 을 4단계에 걸쳐 키운다. 각 단계는 앞 단계 코드를 리팩터링·확장하며, 새로운 기술은 "배웠으니까"가 아니라 "이 문제를 풀려면 필요하니까" 등장한다.
1단계의 요구사항은 다음과 같다.
| # | 요구사항 | 세부 |
|---|---|---|
| R1 | 회원 등록 | ID, 이름, 보유 포인트 |
| R2 | 상품 등록 | ID, 이름, 카테고리, 단가, 재고 |
| R3 | 주문 생성 | 회원 1명이 상품 여러 개를 수량과 함께 주문. 재고 차감, 결제액의 1% 포인트 적립 |
| R4 | 주문 목록 | 주문 번호, 회원 이름, 항목별 금액, 주문 합계 |
| R5 | 총액 계산 | 전체 매출, 회원별 매출, 남은 재고 |
| R6 | 실패 처리 | 없는 회원/상품, 재고 부족, 저장 공간 초과 시 메시지 출력 후 무시 |
제약은 하나다. 초급 레벨에서 배운 것만 쓴다. 컬렉션(ArrayList, HashMap) 없이 배열로, 예외 없이 null과 boolean으로, 인터페이스 없이 구체 클래스만으로. 이 제약을 지키면서 R1~R6을 만족시키면, 자연스럽게 "왜 컬렉션이, 왜 예외가, 왜 인터페이스가 필요한가"를 몸으로 알게 된다.
이전 단계가 없으므로 "이전 단계의 한계"는 없다. 대신 이 단계가 끝날 때 여섯 가지 아픈 지점을 명시할 것이다. 그것이 2단계의 출발점이다.