요구 사항 정의 및 설계
Level 1: https://gajicoding.tistory.com/173
Lv1. 요구사항 정의 및 설계
Lv1. 클래스 없이 기본적인 연산을 수행할 수 있는 계산기 만들기계산기는 2개의 숫자를 받을 수 있고 사칙연산 될 문자를 받을 수 있다. 계산기는 exit을 입력할 때까지 계속해서 값을 받고 연산
gajicoding.tistory.com
Level 2: https://gajicoding.tistory.com/179
Lv2. 요구사항 정의 및 설계
Lv2. 클래스를 적용해 기본적인 연산을 수행할 수 있는 계산기 만들기계산된 결과 값들을 기록하는 컬렉션을 만든다.컬렉션의 가장 먼저 저장된 데이터를 삭제하는 기능을 만든다.[요구사항 정
gajicoding.tistory.com
Level 3: https://gajicoding.tistory.com/190
Lv3. 요구사항 정의 및 설계
Lv3. Enum, 제네릭, 람다 & 스트림을 이해한 계산기 만들기양의 정수만 받았지만 이제부터는 실수도 받을 수 있게 수정한다.결과가 저장되어 있는 컬렉션을 조회하는 기능을 만든다.그 때 특정 값
gajicoding.tistory.com
문제 해결 & 코드 개선
문제 해결 (트러블 슈팅)
- 반복문 안에서 InputMismatchException 예외 발생 시 무한 루프 발생
- java: incompatible types: T cannot be converted to capture#1 of ?
코드 개선 (리팩토링)
새롭게 알게된 문법
- switch 표현식 (Switch Expression)
- 커밋 컨벤션 (Commit Convention)
- 유틸리티 클래스 (Utility Class)
- Enum 열거형 타입
- 어노테이션(Annotation)
단계별 학습 목표
(체크리스트) ☑️ 완료, ✖️ 실패, △ 미흡
🌱 Level1: 클래스를 사용하지 않은 계산기
(필수 구현) 클래스 없이 자바의 기본 문법만을 사용하여 구현한 계산기
- ☑️ JVM 환경을 설치하고, JDK 버전 설정을 통해 프로젝트를 생성할 수 있는가?
- ☑️ 변수 선언 및 데이터 타입을 적절히 지정 및 변환할 수 있는가?
- ☑️ 표준 입출력 사용법을 이해하고, 연산자를 활용해 연산할 수 있는가?
- ☑️ 조건문(if, else if, else)을 사용하여 흐름 제어가 가능한가?
- ☑️ 반복문(for, while)을 활용하여 반복 작업을 수행할 수 있는가?
🌿 level 2: 클래스를 활용한 계산기
(필수 구현) 객체 지향 개념을 적용하여 클래스 정의, 연산을 수행하는 메소드 작성한 계산기
- ☑️ 메서드를 정의하고 호출할 수 있는가?
- ☑️ 배열을 선언하고 활용해 여러 개의 값을 저장하고 조작할 수 있는가?
- ☑️ 클래스를 작성하고 객체를 생성하여 활용할 수 있는가?
🌳 level 3: 고급 기능을 적용한 계산기
(도전 구현) 자바의 Enum, 제네릭, 람다 & 스트림을 적용한 계산기
- ☑️ 인터페이스 또는 상속을 활용하여 코드의 재사용성을 높일 수 있는가?
- △ 제네릭을 활용하여 재사용 가능 클래스를 설계할 수 있는가?
- 구현은 했으나, 아직 제네릭에 대한 이해가 부족한 것 같다. - 복습 필요
- ☑️ 람다식을 활용한 함수형 인터페이스를 구현할 수 있는가?
- ☑️ 스트림 API를 활용하여 데이터를 필터링, 변환할 수 있는가?
Java 문법 종합반 강의 수강시 달성 가능한 학습 목표
- ☑️ 예외 처리(try-catch-finally)를 통해 오류를 적절히 처리할 수 있는가?
느낀 점 & 마무리
코딩 경험이 있었기 때문에, 처음엔 계산기 과제를 비교적 쉽게 접근할 수 있을 거라고 생각했다.
하지만 Level 1, 2는 기본 문법에 대한 복습의 느낌으로 진행할 수 있었던 반면,
Level 3에서는 생각보다 많은 고민과 시행착오를 겪게 되었다.
Level 3에서 마주한 Enum, 제네릭, 람다, 스트림 등은 단순히 문법을 안다고 끝나는 것이 아니었다.
개념 자체보다도, 실제 코드에 적용하면서 발생하는 에러들을 해결하는 과정이 훨씬 더 어려웠다.
에러를 수정하는 과정에서 모르는 부분은 검색하거나 튜터님께 질문을 드려가며 하나씩 해결해 나갔고,
그 과정에서 코드 개선뿐만 아니라, 질문하는 법과 문제를 해결하는 방식에 대해서도 많은 것을 배울 수 있었다.
작은 계산기 과제 였지만, 이 경험을 통해 더 나은 코드를 작성하는 방향을 잡을 수 있었다.
또한, 모르는 것을 두려워하지 않고 적극적으로 해결하는 법을 배웠다.
이 경험을 바탕으로, 앞으로는 가독성 좋고 효율적인 코드를 작성할 수 있도록 더 학습하고 노력해야겠다고 결심했다.
전체 소스 코드
https://github.com/gajicoding/calculator-project
GitHub - gajicoding/calculator-project
Contribute to gajicoding/calculator-project development by creating an account on GitHub.
github.com
'내일배움캠프(Spring 7기) > 내일배움캠프' 카테고리의 다른 글
[CH 2 키오스크 과제] 정리 & 회고 (0) | 2025.04.29 |
---|---|
[CH 2 키오스크 과제] 요구사항 정의 (1) | 2025.04.29 |
[CH 2 계산기 과제] Lv3. 요구사항 정의 및 설계 (0) | 2025.04.21 |
[CH 2 계산기 과제] Lv2. 요구사항 정의 및 설계 (0) | 2025.04.18 |
[CH 2 계산기 과제] Lv1. 요구사항 정의 및 설계 (0) | 2025.04.18 |