Skip to content

yhh1056/atdd-subway-path

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Website GitHub


지하철 노선도 미션

스프링 과정 실습을 위한 지하철 노선도 애플리케이션


🚀 Getting Started

Usage

application 구동

./gradlew bootRun

✏️ Code Review Process

텍스트와 이미지로 살펴보는 온라인 코드 리뷰 과정


🐞 Bug Report

버그를 발견한다면, Issues 에 등록해주세요 :)


📝 License

This project is MIT licensed.

기능 요구사항

1단계 요구사항 도출

지하철역

  • 지하철 역을 등록한다.
    • 같은 역의 이름으로 중복될 수 없다.
    • 역 이름은 10글자를 넘길 수 없다.
    • 역 이름은 2글자 이상이어야 한다.
    • 역 이름은 한글과 숫자의 조합이어야 한다.
  • 지하철 역을 조회한다.
  • 지하철 역을 삭제한다.
    • 삭제할 역이 있어야 한다.

지하철 노선

  • 지하철 노선을 등록한다.
    • 같은 노선의 이름으로 중복될 수 없다.
    • 색깔은 중복 될 수 없다.
    • 노선 이름은 10글자를 넘길 수 없다.
    • 노선 이름은 3글자 이상이어야 한다.
    • 노선 이름은 한글과 숫자의 조합이어야 한다.
    • 이름과 색깔이 있어야 한다.
  • 지하철 노선 목록을 조회한다.
  • 지하철 노선 조회
    • 조회할 노선이 있어야 한다.
  • 지하철 노선 수정
    • 같은 노선의 이름으로 중복될 수 없다.
    • 색깔은 중복 될 수 없다.
    • 노선 이름은 10글자를 넘길 수 없다.
    • 노선 이름은 3글자 이상이어야 한다.
    • 노선 이름은 한글이어야 한다.
    • 이름과 색깔이 있어야 한다.
  • 지하철 노선 삭제

2단계 요구사항 도출

  • H2 설정하기
  • DAO 에 JDBC Template 사용하여 DB 에 저장하기
  • 스프링 빈으로 변경
  • 기존 테스트코드를 DAO test 로 변경

3단계 요구사항 도출

지하철 노선

  • 노선을 등록한다.
    • 상행 지점, 하행 지점, 거리가 있어야 한다.
  • 노선을 조회한다.
    • 노선이 가진 구간들을 정렬해서 반환한다.
  • 노선 목록을 조회한다.
    • 노선들이 가진 구간들을 정렬해서 반환한다.

지하철 구간

  • 구간을 등록한다.
    • 존재하는 노선이어야 한다.
    • 추가하려는 구간이 상행역이나 하행역이 있어야 한다.
    • 상행역과 하행역이 둘다 존재할 수 없다.
    • 추가하려는 거리가 기존 구간의 거리보다 짧아야 한다.
    • 거리는 음수일 수 없다.
  • 구간을 삭제한다.
    • 삭제하려는 구간이 종점일 경우 이전역이 종점이 된다.
    • 중간역이 삭제되는 경우 재배치된다.
    • 구간이 2개 이상이어야 한다.

1단계 요구사항 도출

지하철 경로 조회 API

  • 경로를 조회한다.

    • jgrapht 라이브러리를 활용한다.
      • 점(vertex)과 간선(edge), 그리고 가중치 개념을 이용
        • 정점: 지하철역(Station)
        • 간선: 지하철역 연결정보(Section)
        • 가중치: 거리
      • 최단 거리 기준 조회 시 가중치를 거리로 설정
    • 최단 경로 및 거리를 반환한다.
    • 경로가 존재하는지 검증한다.
  • 요금을 계산한다.

    • 기본운임(10㎞ 이내): 기본운임 1,250원
    • 이용 거리 초과 시 추가운임 부과
      • 10km~50km: 5km 까지 마다 100원 추가
      • 50km 초과: 8km 까지 마다 100원 추가
      • 지하철 운임은 거리비례제로 책정된다.

2단계 요구사항 도출

요금 정책 추가

  • 노선 등록시 추가요금을 받는다.
  • 노선 수정시 추가요금을 받는다.
    • 추가요금이 0원 미만인지 검증한다.
  • 요금 계산시 추가 요금을 측정된 요금에 추가한다.
    • 여러 노선을 이용할 경우 가장 높은 금액의 추가 요금을 추가한다.
  • 나이가 13세 이상~19세 미만일 경우 350원을 공제한 금액의 20% 할인한다.
  • 나이가 6세 이상~13세 미만 미만일 경우 350원을 공제한 금액의 50% 할인한다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%