/java-calculator

자바 계산기 구현 미션 Repository입니다.

Primary LanguageJava

과제 요구사항

  • 객체지향적인 코드로 콘솔객 계산기 구현하기
    • 더하기
    • 빼기
    • 곱하기
    • 나누기
    • 우선순위(사칙연산)
  • 테스트 코드 구현하기
  • 계산 이력을 맵으로 데이터 저장기능 만들기
    • 애플리케이션이 동작하는 동안 데이터베이스 외에 데이터를 저장할 수 있는 방법을 고안해보세요.
  • 정규식 사용 - (숫자, 연산자, 수식 판별)

실행결과(콘솔)

1. 조회
2. 계산

선택 : 2

1 + 2
3

1. 조회
2. 계산

선택 : 2

1 + 2 * 3
7

1. 조회
2. 계산

선택 : 1

1 + 2 = 3
1 + 2 * 3 = 7

선택 : 2

3 - 2 * 2
-1

설명

다이어그램

스크린샷 2022-10-26 오후 1 32 39

인터페이스 & 객체

  • Controller : 입력을 받고, 그 입력을 Validator들로 검사한 후 Calcuator로 계산해 Repository에 저장하는 역할을 하는 인터페이스 입니다.
  • Validator : 입력이 특정 조건을 만족하는지 검사하기 위한 인터페이스입니다.
  • Calculator : String 입력을 받아, double형 계산 결과를 반환하는 인터페이스 입니다.
  • Repository : 계산 이력을 저장하고, 조회 할 수 있게 하는 인터페이스입니다.

  • FormValidator : 주어진 식의 괄호짝이 맞는지 검사하는 객체 입니다.

  • MathExpressionValidator : 주어진 식이 올바른 식 인지를 검사하는 객체 입니다.

  • FormValidator : 입력이 받고자하는 형태로 들어오는지 검사하는 객체 입니다.

    받고자 하는 형태 - 숫자(공백)연산자(공백)숫자 (단, 가장 첫 글자에 연산자를 허용하지 않음) ex) 1 + 2 * ( 1 + 3 )


  • Console : Controller를 구현한 클래스입니다
  • PostfixCalculator : 후위 연산으로 Calculator를 구현한 객체입니다.
  • InMemoryRepository : 계산 이력을 HashMap에 저장하고, 조회 할 수 있게 하는 객체입니다.