-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
📝 개요
기존의 if-else 또는 switch 문으로 분기 처리하던 연산 로직을 인터페이스(Interface)와 다형성(Polymorphism)을 활용한 구조로 리팩토링합니다. 이를 통해 새로운 연산 기능이 추가되어도 기존 코드를 수정하지 않는 개방-폐쇄 원칙(OCP)을 직접 실천해 봅니다.
🎯 학습 목표
- 인터페이스를 정의하고 이를 구현(implements)하는 클래스 작성법 익히기.
- 다형성을 활용하여 실행 시점(Runtime)에 적절한 객체가 동작하게 만들기.
- 객체지향 설계 원칙(SOLID) 중 하나인 OCP(Open-Closed Principle) 이해하기.
🏗️ 주요 요구사항
Operation인터페이스 생성- 모든 연산 클래스의 뼈대가 되는 인터페이스입니다.
double calculate(double n1, double n2)메소드를 정의합니다.
- 연산별 구현 클래스 작성
Operation인터페이스를 상속받아 실제 계산을 수행하는 클래스들을 만듭니다.- 예:
AddOperation(더하기),SubOperation(빼기),MulOperation(곱하기),DivOperation(나누기) 등.
- 다형성을 활용한 로직 연결
- 계산기 클래스에서 직접 산술 연산을 하지 않고,
Operation타입의 변수를 통해calculate()메소드를 호출합니다. - 사용자가 입력한 기호에 따라 어떤 구현체(
AddOperation등)를 할당할지만 결정합니다.
- 계산기 클래스에서 직접 산술 연산을 하지 않고,
🚀 상세 구현 체크리스트
- 인터페이스 추출: 모든 연산자가 공통으로 가지는 행위를 인터페이스로 분리했는가?
- 조건문 최소화: 연산 실행부에서
if-else를 통한 직접 연산 로직이 사라졌는가? - 확장성 테스트: 새로운 클래스
ModOperation(나머지 연산)을 추가할 때, 기존의 다른 연산 클래스나 메인 연산 로직을 수정하지 않고 추가가 가능한가?
💡 Hint (Code Structure)
// 1. 인터페이스 정의
public interface Operation {
double calculate(double n1, double n2);
}
// 2. 구현 클래스 예시
public class AddOperation implements Operation {
@Override
public double calculate(double n1, double n2) {
return n1 + n2;
}
}
// 3. 사용 예시 (다형성)
Operation op = new AddOperation();
System.out.println(op.calculate(10, 20)); // 인터페이스 타입으로 실행Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels