Lv 1. 클래스 없이 기본적인 연산을 수행할 수 있는 계산기 만들기
v1.0.0
- Scanner 선언 후 정수 2개를 받도록 선언
- 정수 값이 int값의 범위를 벗어날 수 있어 long타입으로 선언
- 받은 정수를 각각 x, y 변수에 저장
- 정수 1개를 받은 후 연산자 입력 요청
- 연산자는 char 타입
- switch-case문을 사용해 입력된 연산자에 맞는 사칙연산 수행
v1.0.1
- 나눗셈 연산 시 분모가 0으로 입력될 경우 처리
v1.0.2
- exit 입력 전 무한 반복화
- 정상적인 숫자가 입력되지 않을 시의 예외처리
v1.0.3
- 입력이 음의 정수일 때 예외처리 추가
Lv 2. 클래스를 적용한 계산기
v2.0.0
- Calculator 클래스를 별도로 분리, 연산 기능은 Calculator로 이전
v2.0.1
- Calculator 클래스 내 기록 저장 위한 컬렉션 필드 생성
v2.0.2
- 컬렉션 필드 캡슐화
- Getter 구현 및 적용
- Setter 구현 및 적용
- 최근 기록값 1개 삭제 기능 구현
- 주석 추가
v2.0.2
- App 클래스 내에 Display 메소드를 생성
- Display 메소드에 연산 이후의 출력 및 분기 작업 이전
v2.0.3
- 기록 조회 및 삭제 시 예외처리
- 출력 메시지 가독성 위한 줄바꿈처리
v2.0.4
- 입력이 음의 정수일 때 예외처리 추가
- 기존 예외처리 문구 수정
Lv3. Enum, 제네릭, 람다 & 스트림을 사용한 계산기
v3.0.0
- Enum 사용해 연산자 타입 관리
- ArithmeticCalculator에서 해당 타입 사용
v3.0.1
- 입출력/연산 및 기록/연산자관리의 세 클래스로 분화
v3.0.2
- ArithmeticCalculator로 연산 로직 이동
- 제네릭 사용 -> 실수타입 입력 가능
- OperatorType 내 연산결과 반환하는 불필요 코드 제거
v3.0.3
- 컬렉션타입 변경(ArrayList -> Map)
- 변경 타입에 맞춰 기타 메소드 수정
v3.0.4
- 입력값보다 큰 결과물 출력 구현
- Lambda & Stream 사용
v3.0.5
- Map에 동일한 계산 기록 안되는 문제 -> 기록번호 붙여 구분해 저장
- OperatorType 사용 주체 App에서 ArithmeticCalculator로 변경
- 주석 추가
v3.0.6
- 출력 메시지 디자인 변경
- App 내 출력 메시지 코드 메소드화 -> 가독성 수정
v3.0.7
- 두 개 이상의 수를 한 번에 입력했을 때의 예외처리 추가
- 예외처리 위한 관련 코드 및 안내 문구 수정