본 프로젝트는 Java를 사용하여 구현한 사칙연산 계산기 프로그램이다. 기본적인 연산 수행뿐만 아니라 제네릭, 컬렉션, 람다, 스트림을 활용하여 연산 결과의 저장, 삭제, 조건별 조회 기능을 포함하고 있다.
- Language: Java
- IDE: IntelliJ IDEA
- Key Concepts:
- 구조화
- Collection Framework
- Generics
- Enum
- Lambda & Stream
Scanner를 통해 양의 정수 2개와 연산 기호(+, -, *, /)를 입력받아 연산을 수행한다.OperatorTypeEnum을 사용하여 연산자 타입을 관리하고 분기 처리한다.- 나눗셈 연산 시 분모가 0일 경우 예외 메시지를 출력하고 연산을 실행하지 않는다.
- 모든 연산 결과는
Calculator클래스 내부의ArrayList에 저장된다. - 캡슐화 원칙에 따라 Getter/Setter 메서드를 활용해 데이터에 접근한다.
- 저장된 연산 결과 중 사용자가 입력한 기준 값보다 큰 값들을 필터링하여 출력한다.
Stream과Lambda를 활용하여 반복문 없이 간결한 로직으로 구현하였다.
- 삭제: 가장 먼저 저장된 연산 결과 하나를 삭제한다.
- 초기화: 저장된 모든 연산 기록을 초기화한다.
- 프로그램의 Main이며, 사용자와의 상호작용(입출력)을 담당한다.
Scanner객체를 사용하여 입력을 받고, 입력된 명령어(exit, inquiry, remove, reset)에 따라 분기 처리한다.
- 연산의 로직을 담당하는 클래스이다.
- 제네릭(
<T extends Number>)을 사용하여 숫자 타입에 대한 유연성을 확보하였다. - 연산 결과를 리스트로 관리하며,
inquiryResults메서드를 통해 필터링 기능을 제공한다.
- 사칙연산 기호(+, -, *, /)를 Enum으로 정의하여 관리한다.
- 입력받은
char타입의 연산자를 해당 Enum 타입으로 매핑해주는classify메서드를 포함한다.
App.java를 실행한다.- 콘솔 안내에 따라 첫 번째 숫자, 두 번째 숫자, 연산 기호를 입력한다.
- 연산 수행 후, 추가 작업을 원할 경우 아래 명령어를 입력한다.
inquiry: 기준값을 입력하여 그보다 큰 결과값들을 조회한다.remove: 가장 오래된 연산 기록을 삭제한다.reset: 모든 연산 기록을 삭제한다.exit: 프로그램을 종료한다.