Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

이지은님의 블로그

Java 기반 계산기 - enum, 제네릭, 람다와 스트림 등을 이용한 계산기 기능 본문

프로젝트

Java 기반 계산기 - enum, 제네릭, 람다와 스트림 등을 이용한 계산기 기능

queenriwon3 2025. 1. 9. 22:24

👉 계산기 구현 과제 소개

프로젝트 명 : 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 기반 계산기 - 구현 코드 및 설명

 

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