Skip to content

계산기 구현 #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

계산기 구현 #2

wants to merge 2 commits into from

Conversation

tonic523
Copy link

계산기 구현 어렵네요.. 코틀린 문법도 어색하다보니 시간이 생각보다 오래 걸려서 객체지향과는 거리가 조금 있는 코드로 작성된 것 같습니다 ㅠㅠ
조금 더 개선할 부분이 너무 많아서 당장의 리뷰를 요청드리기 보다 코드 수정 이후에 리뷰 요청 드리겠습니다.
당장은 돌아가는 코드에 집중해서 정말 코드가 돌아가기만 합니다 ㅎㅎ 구현하면서 제가 그래도 도메인의 역할과 책임을 나누려고 노력했습니다. 해당 내용은 아래에 정리했으니 코드를 보실 때 참고하시면 됩니다!

요구사항 분석

비즈니스 로직

연산

  1. 왼쪽부터 오른쪽으로 사칙연산 중 곱하기(*), 나누기(/) 부터 연산한다.
  2. 왼쪽부터 오른쪽으로 사칙연산 중 더하기(+), 빼기(-) 를 연산한다.

조회

  1. 식을 저장한다.
  2. 연산 완료된 값을 저장한다.

도메인 별 역할

Expression

  • 숫자를 받으면 연산한 결과값을 반환할 수 있다.
  • 연산자와 숫자를 가지고 있다.
  • EmptyExpression은 연산할 경우 전달받은 숫자를 그대로 반환한다.

Operator

  • 연산자에 맞게 연산할 수 있다.
  • 연산자끼리의 연산 우선순위를 비교할 수 있다.
  • 사칙연산이 구현되어 있다.
예시

입력값: 1 + 2 * 4 

- 시작 숫자: 1
- Expression:
  - 1번식: (+ 2)
  - 2번식: (* 4)
- Operator: +, *

1. 시작 숫자를 가지고 1번식을 실행한다.
2. 1번식은 2번식의 Operator와 비교한다.
3. 2번식이 우선순위가 높으면 2번식을 먼저 실행시키고 결과가 나오면 1번식을 실행한다.
4. 2번식은 다음 식이 없기 때문에 바로 2번식을 실행한다.

그 외 객체의 역할

  • controller: 프로그램의 프로세스를 관리할 수 있다.
  • repository: 연산 결과를 저장하고 조회할 수 있다.

tonic523 added 2 commits September 15, 2023 01:06
기능 구현에 집중한 나머지 기능 별 커밋을 나누지 못했네요.. 리팩토링할 때 기능 별로 수정하여 커밋올리겠습니다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant