이 프로젝트는 Java를 활용하여 계산기를 단계적으로 구현했습니다.
Java의 기본 문법부터 고급 개념(Enum, 제네릭, 예외 처리 등)을 학습하고 적용한 프로젝트 입니다.
✏️프로젝트 회고.
src
└── main
└── java
└── com
└── example
├── calculator
│ └── Calculator.java
├── calculator2
│ ├── App.java
│ └── Calculator.java
├── calculator3
│ ├── App.java
│ ├── ArithmeticCalculator.java
│ └── OperatorType.java
└── online
├── week3
│ └── calculator
│ ├── AbstractOperation.java
│ ├── AddOperation.java
│ ├── Calculator.java
│ ├── DivideOperation.java
│ ├── Main.java
│ ├── MultiplyOperation.java
│ └── SubstractOperation.java
└── week4
└── calculator
├── AbstractOperation.java
├── AddOperation.java
├── BadInputException.java
├── Calculator.java
├── CalculatorApp.java
├── DivideOperation.java
├── Main.java
├── MultiplyOperation.java
├── Parser.java
└── SubstractOperation.java
- 클래스 없이 기본적인 연산을 수행할 수 있는 계산기.
- 클래스를 적용해 기본적인 연산을 수행할 수 있는 계산기.
- Enum, 제네릭, 람다&스트림을 이해한 계산기.
- [Java 문법 종합반] 과제 패키지:
- week3.calculator: 계산기 설계 및 구현 과제.
- week4.calculator: 예외 처리 과제.
-
Step 1:
Calculator클래스 구현- 사칙연산(
+,-,*,/)을 수행하는calculate메서드 작성. - 제어문(
if,switch)을 사용해 연산자를 처리.
- 사칙연산(
-
Step 2: 나머지 연산(%) 추가.
-
AddOperation,SubtractOperation,MultiplyOperation,DivideOperation클래스를 생성.Calculator클래스와 포함 관계를 설정.
-
AbstractOperation추상 클래스를 도입하여 다형성을 활용.
- 사용자 입력 검증과 예외 처리를 위한
Parser클래스- 정규식(
Pattern.match())을 사용해 입력값을 검증. - 입력 오류 시
BadInputException을 활용하여 예외 처리.
- 정규식(
- 기능:
- 사용자로부터 두 개의 양의 정수(0 포함)와 사칙연산 기호를 입력받아 계산을 수행합니다.
- 사칙연산 결과를 출력하고, 잘못된 입력(연산 기호, 0으로 나눗셈 등)에 대한 오류 메시지를 제공합니다.
- 사용자가 "exit"를 입력하기 전까지 무한 반복으로 계산할 수 있습니다.
- 주요 특징:
if와switch를 활용한 연산 처리.- 나눗셈의 분모가 0일 경우에 대한 예외 처리.
- "exit" 입력을 통한 종료.
- 기능:
- 사칙연산 결과를 저장하고 관리하는
Calculator클래스를 추가했습니다. - 연산 결과를 저장하는 컬렉션 타입 필드(
List<Integer>)와 캡슐화를 적용한 Getter/Setter 메서드를 구현했습니다. - 연산 결과 리스트의 가장 오래된 데이터를 삭제하는
removeResult메서드를 제공합니다.
- 사칙연산 결과를 저장하고 관리하는
- 주요 특징:
- App 클래스에서
Calculator객체를 활용해 계산 기능 수행. - 리스트에 연산 결과 저장, 관리, 삭제 기능 제공.
- App 클래스에서
- 기능:
- 제네릭을 활용해 다양한 숫자 타입(
Number하위 클래스)을 지원합니다. OperatorTypeEnum 클래스를 통해 연산자 타입 관리 및 각 연산별 메서드를 구현했습니다- Lambda & Stream을 활용해 입력값보다 큰 연산 결과를 필터링하고 출력합니다.
- 최대 5개의 연산 결과를 저장하며, 이를 초과할 경우 가장 오래된 결과를 삭제합니다.
- 사용자 입력을 검증하여 연산이 올바르게 수행되도록 합니다.
- 제네릭을 활용해 다양한 숫자 타입(
- 주요 특징:
ArithmeticCalculator클래스calculate메서드를 통해 제네릭 숫자 타입으로 연산을 수행.- 연산 결과를 저장하고 관리하는
List필드 제공. filterResultsGreaterThan메서드로 Lambda와 Stream을 활용해 조건에 맞는 결과 출력.
OperatorTypeEnum- 사칙연산(
+,-,*,/) 및 이모지 연산자(➕,➖,✖,➗) 지원. - 각 연산자에 대해 추상 메서드(
operate) 구현.
- 사칙연산(
- 이 저장소를 클론합니다:
git clone https://github.com/mannaKim/java-calculator.git
- 선호하는 Java IDE(IntelliJ 등)로 프로젝트를 엽니다.
- 각 패키지의 App 클래스를 실행하여 계산기를 시작합니다.





