728x90

좌표계산기 구현


좌표계산기(선 길이)

기능 요구사항

  • 사용자가 점에 대한 좌표 정보를 입력하는 메뉴를 구성한다.
  • 좌표 정보는 괄호"(", ")"로 둘러쌓여 있으며 쉼표(,)로 x값과 y값을 구분한다.
  • X, Y좌표 모두 최대 24까지만 입력할 수 있다.
  • 입력 범위를 초과할 경우 에러 문구를 출력하고 다시 입력을 받는다.
  • 정상적인 좌표값을 입력한 경우, 해당 좌표에 특수문자를 표시한다.
  • 좌표값을 두 개 입력한 경우, 두 점을 있는 직선으로 가정한다. 좌표값과 좌표값 사이는 '-' 문자로 구분한다.
  • 직선인 경우는 두 점 사이 거리를 계산해서 출력한다.

실행 결과

좌표를 입력하세요.
(10,10)-(14,15)

두 점 사이 거리는 6.403124

좌표계산기(사각형 면적)

요구사항

  • 좌표값을 두 개 입력한 경우, 두 점을 있는 직선으로 가정한다. 좌표값과 좌표값 사이는 '-' 문자로 구분한다.
  • 좌표값을 네 개 입력한 경우, 네 점을 연결하는 사각형으로 가정한다.
    • 네 점이 뒤틀어진 사다리꼴이나 마름모는 제외하고 직사각형만 허용하도록 검사한다.
    • 사각형인 경우 사각형의 넓이를 계산해서 출력한다.

실행 결과

좌표를 입력하세요.
(10,10)-(22,10)-(22,18)-(10,18)
사각형 넓이는 96

좌표계산(삼각형 면적)

요구사항

  • 좌표값을 두 개 입력한 경우, 두 점을 있는 직선으로 가정한다. 좌표값과 좌표값 사이는 '-' 문자로 구분한다.
  • 좌표값을 세 개 입력한 경우, 세 점을 연결하는 삼각형으로 가정한다.
    • 삼각형인 경우 삼각형의 넓이를 계산해서 출력한다.

실행 결과

좌표를 입력하세요.
(10,10)-(14,15)-(20,8)
삼각형 넓이는 29.0

프로그래밍 요구사항

  • 상속과 인터페이스를 적용해 중복 코드를 제거한다.
  • 자바 코드 컨벤션을 지키면서 프로그래밍한다.
    • 기본적으로 Google Java Style Guide을 원칙으로 한다.
    • 단, 들여쓰기는 '2 spaces'가 아닌 '4 spaces'로 한다.
  • indent(인덴트, 들여쓰기) depth를 2를 넘지 않도록 구현한다. 1까지만 허용한다.
    • 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다.
    • 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메서드)를 분리하면 된다.
  • 3항 연산자를 쓰지 않는다.
  • else 예약어를 쓰지 않는다.
    • else 예약어를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다.
    • 힌트: if문에서 값을 반환하는 방식으로 구현하면 else 예약어를 사용하지 않아도 된다.
  • 모든 기능을 TDD로 구현해 단위 테스트가 존재해야 한다. 단, UI(System.out, System.in) 로직은 제외
    • 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 구분한다.
    • UI 로직을 InputView, ResultView와 같은 클래스를 추가해 분리한다.
  • 함수(또는 메서드)의 길이가 10라인을 넘어가지 않도록 구현한다.
    • 함수(또는 메소드)가 한 가지 일만 하도록 최대한 작게 만들어라.
  • 모든 원시 값과 문자열을 포장한다
  • 줄여 쓰지 않는다(축약 금지).
  • 일급 컬렉션을 쓴다.

이번 과제에서 중요했던 점

  • 상속과 인터페이스 사용
  • Factory Method 사용

마무리 느낌점

 

피드백 전 Factory Method를 사용하려고 했지만 생각대로 설계가 되지 않았다

어떤 식으로 사용해야할지 아직 감이 완벽하게 오진않는다

피드백을 확인 한 뒤 피드백 내용과 다른 사람들이 작성한 코드를 분석해가며 다시 공부했다

아직도 creator 쪽은 살짝 어려운 것 같다ㅜ

좀 많이 헤매긴했지만 잘 해결 된 것 같다


변경 전 branch: before-feedback

 

GitHub - tyakamyz/java-coordinate-playground: NEXTSTEP 플레이그라운드 - 미션3 좌표계산기

NEXTSTEP 플레이그라운드 - 미션3 좌표계산기. Contribute to tyakamyz/java-coordinate-playground development by creating an account on GitHub.

github.com

 

 

변경 후 branch: after-feedback

 

GitHub - tyakamyz/java-coordinate-playground: NEXTSTEP 플레이그라운드 - 미션3 좌표계산기

NEXTSTEP 플레이그라운드 - 미션3 좌표계산기. Contribute to tyakamyz/java-coordinate-playground development by creating an account on GitHub.

github.com

 

728x90
복사했습니다!