-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
📝 개요
현재 계산기 코드에 흩어져 있는 if-else 또는 switch-case 기반의 연산자 판별 로직을 제거하고, 자바의 Enum(열거형)을 활용하여 데이터와 로직이 결합된 객체지향적인 코드로 리팩토링합니다.
🎯 학습 목표
- 자바 Enum의 고급 활용법(상수별 메소드 구현) 익히기
- 조건문을 제거하여 코드의 가독성과 유지보수성 높이기
- 데이터(기호)와 행위(계산 로직)를 하나의 객체로 묶는 법 배우기
🏗️ 주요 요구사항
Operator열거형 구현- 사칙연산(
+, , ,/)을 상수로 정의합니다. - 각 상수는 자신에 해당하는 기호(String)를 필드로 가져야 합니다.
- 각 상수는 두 숫자를 받아 연산 결과를 반환하는 계산 로직을 직접 포함해야 합니다.
- 사칙연산(
- 조건문 제거 (Refactoring)
- 메인 로직(또는 계산 클래스)에서 연산 기호를 비교하기 위해 사용했던
if또는switch문을 삭제합니다. - 대신, 입력받은 문자열을
OperatorEnum 상수로 변환한 뒤, 해당 상수의 메소드를 호출하여 결과를 얻습니다.
- 메인 로직(또는 계산 클래스)에서 연산 기호를 비교하기 위해 사용했던
- 연산자 조회 로직 구현
- 사용자가 입력한 문자열(예: "*")에 해당하는
Operator상수를 찾아 반환하는 정적 메소드(예:fromSymbol)를 구현합니다.
- 사용자가 입력한 문자열(예: "*")에 해당하는
🚀 상세 구현 체크리스트
- 데이터와 로직의 결합: Enum 상수가 기호(
+)와 연산 행위(add)를 모두 가지고 있는가? - 추상 메소드 활용: Enum 내부에 추상 메소드를 선언하고 각 상수가 이를 오버라이딩하여 구현했는가?
- 확장성: 새로운 연산자(예:
%)를 추가할 때 기존 코드를 수정하지 않고 Enum에 상수 하나만 추가하면 되는 구조인가?
💡 Hint (Code Structure)
public enum Operator {
PLUS("+") {
@Override
public double apply(double x, double y) { return x + y; }
},
// 나머지 연산자 구현...
private final String symbol;
Operator(String symbol) { this.symbol = symbol; }
public abstract double apply(double x, double y);
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels