Search
🤖

Simple Mall Design with OOP

가. 작업 방식

‘테스트 주도 개발로 배우는 객체 지향 설계와 실천’에 따라 대략적인 설계 위에서 테스트-구현 반복

1) 목표

TDD 기반 구현
SOLID 원칙 만족

2) 대략적인 설계

요구사항에 대한 이해를 토대로 대략적인 설계 진행
설계 결과물로 주요 객체 간 협력을 인터페이스 바탕의 ERD로 도식화
‘테스트 주도 개발로 배우는 객체 지향 설계와 실천’에 언급한 작업 흐름은 다음의 링크 참고
참고

3) 테스트 흐름

주요 기능의 작업 진행 상황의 척도로 삼기 위해, 인수 테스트 우선 작성
인수 테스트를 성공시키기 위해 실패하는 단위테스트 작성 → 테스트 성공 → 리팩토링의 과정을 순회

나. 문제 이해

1) 요구사항 파악

장난감 가게에서는 다섯 가지의 기능이 필요하다
장난감 전체 목록 조회
장난감 추가
개별 장난감 상세 조회
개별 장난감 수정
개별 장난감 삭제 기능
장난감에는 네 가지 속성값이 필요하다
이름: 장난감을 대표하는 한 문장
메이커: 장난감 생산업체 이름
가격: 장난감의 가치, 한화로 표현됨
이미지: 업로드된 이미지 파일이 위치한 URL
개별 장난감은 id라는 식별자를 통해 구분할 수 있다

2) 객체 간 협력 파악

본 시스템은 장난감 가게를 하나만 관리한다
장난감 가게는 장난감을 모두 찾아서 보여줄 수 있다
장난감 가게는 특정 장난감을 찾아서 보여줄 수 있다
장난감 가게는 장난감을 새로 들여올 수 있다
장난감 가게는 특정 장난감의 이름, 메이커, 가격, 이미지 정보를 수정할 수 있다
장난감 가게는 특정 장난감을 매장에서 제거할 수 있다
장난감은 하나의 이름을 가지며, 문자열로 이름을 나타낸다
장난감은 하나의 가격을 가지며, 원화로 나타낸다
장난감은 하나의 메이커를 가지며, 문자열로 나타낸다
장난감은 하나의 이미지를 가지며, 업로드된 이미지의 URL로 나타낸다
원화는 금전적 가치를 보여줄 수 있다
메이커는 이름을 보여줄 수 있다
이미지는 업로드된 위치를 URL로 보여줄 수 있다

다. 대략적인 설계

1) 인터페이스 정의

Shop(→ ToyShop)
Product(→ ToyProduct)
Money(→ Won)
Producer(→ ToyProducer)
MediaDemo(→ ImageDemo)

2) Entity, VO 분류

Entity: ToyShop, ToyProduct, ToyProducer
VO: Won, ImageDemo

3) Interface in Java

코드 참고

라. 인수테스트 케이스

1) 장난감 목록 조회

2) 장난감 상세 조회

3) 장난감 생성

4) 장난감 수정

5) 장난감 삭제