이지은님의 블로그
Java 기반 계산기 - enum, 제네릭, 람다와 스트림 등을 이용한 계산기 기능 본문
👉 계산기 구현 과제 소개
프로젝트 명 : Java로 계산기를 구현해보자
배운 내용을 바탕으로 계산기를 구현하는 과제입니다.
지원하는 연산은 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%), 제곱 및 제곱근(^) 입니다.
CUI로 동작합니다.
개발 기간 : 2024.12.31 ~ 2025.1.9 (약 10일)
github : https://github.com/queenriwon/Calculator
개발 환경
- environment : IntelliJ IDEA, git, github
- development : JAVA JDK 17
👉 구현 내용
필수 구현사항
- Lv.1
- 양의 정수를 2개 입력하여 계산 결과를 출력합니다.
- 사칙연산 기호를 문자 자료형으로 입력받습니다.
- 조건문을 이용해 연산 결과를 출력합니다.
- exit을 입력할 때까지 연산을 반복해서 할 수 있도록 구현합니다.
- Lv.2
- 클래스와 메서드를 이용하여 계산기를 구현합니다.
- 컬렉션 필드를 가지는 클래스를 구현하여 결과값을 컬렉션에 저장합니다.
- 캡슐화를 적용하여 간접접근으로 클래스의 필드를 사용합니다.
- 가장 오래된 컬렉션 데이터를 삭제합니다.
선택 구현사항
- Lv.3
- Enum 타입을 사용하여 연산자에 접근합니다. (구현)
- 제네릭을 사용하여 피연산자 자료형을 확장시킵니다. (구현)
- 람다와 스트림을 사용하여 연산결과를 조회합니다. (구현)
- 추상클래스를 이용하여 연산클래스를 상속하여 사용합니다. (구현)
- 함수형 인터페이스를 이용하여 조회기준에 따른 데이터를 조회합니다. (구현)
- 각 예외상황에서 예외처리를 합니다. (구현)
- 피연산자 1개를 사용하는 등 고급 연산 지원 (미구현)
- 괄호 사용 지원 (미구현)
- 연산을 저장하여 그 결과를 추가로 연산할 수 있는 기능 (미구현)
👉 구현 핵심
- 연산자 기능 확장성을 위해 enum 자료형 활용(switch 구문 불필요)
- 조회 기준 확장성을 위해 함수형 인터페이스를 활용
👉 부족하거나 아쉬운 점, 공부하고 싶은 내용
- 효과적으로 github사용하기(커밋 컨벤션)
- 내가 만든 프로젝트 또는 과제를 소개할 수 있는 다이어그램 작성하기
- 함수형 인터페이스 심화
- Throw, throws, try-catch의 심화(예외종류 다루기)
- 제네릭 심화
- 고급연산을 지원하기위해 전위표기법 사용
- 괄호 사용을 위해 트리순회 알고리즘에 대해 배우는 것도 좋을 것 같다.
👉 클래스 다이어그램/ 플로우차트
(Lv.1 다이어그램은 생략)
Calculator Lv.2
Calculator Lv.3
👉구현결과
Lv.1 과제 결과
Lv.2 과제 결과
Lv.3 구현 결과
👉 기능소개
Java 기반 계산기 - 구현 코드 및 설명
차례Main.java (시작)CalculatorApp.java (계산기 앱 진행)CalculationLookup.java (문자열 판단 - lookup입력시)Parser.java (문자열을 정제, 분석하여 값을 옮겨줌)OperatorType.java (enum으로 사용 연산자 저장)ArithmeticCa
queenriwon3.tistory.com
👉 트러블슈팅
https://queenriwon3.tistory.com/75
250108 - Java 계산기 Lv.2 및 Lv.3 구현 트러블슈팅: NaN 처리, 간접 접근, Switch 개선, 입력 문제 해결
▷ 오늘 배운 것계산기 과제 Lv.2와 Lv.3를 구현하면 생긴 문제에 관해 트러블 슈팅하는 내용을 작성해보려고 한다. 계산기에서 값을 출력할 수 없을 때 처리방법에 대하여간접접근 활용코드정
queenriwon3.tistory.com
https://queenriwon3.tistory.com/76
250109 - Java 계산기 Lv.3 구현과 트러블슈팅: 제네릭, 람다와 스트림, 조회 기능 클래스화, Enum 연산
▷ 계산기 작성 과정계산기 Lv.3를 어떻게 작성했는지 과정을 써보면서 트러블슈팅을 한 과정을 작성해보려고 한다. >1.계산기 작성 초안(ver.1)2. 제네릭을 사용해보기3. 람다와 스트림을 사
queenriwon3.tistory.com
'프로젝트' 카테고리의 다른 글
Java 기반 키오스크 - enum, 제네릭, 람다와 스트림 등을 이용한 키오스크 기능 (1) | 2025.01.17 |
---|---|
Java 기반 키오스크 - level6 구현 코드 및 설명 (0) | 2025.01.17 |
Java 기반 계산기 - 구현 코드 및 설명 (0) | 2025.01.09 |
자기소개 페이지 - 어려웠던 점, 아쉬웠던 점 정리 (0) | 2024.12.27 |
자기소개 페이지 - Firebase를 활용한 실시간 방명록 기능 구현 및 관리(CRUD) (2) | 2024.12.26 |