상속 예제

김재익·2023년 6월 15일
0

JAVA

목록 보기
5/18
post-thumbnail

계산기 만들기
1. Calculator에서 사칙연산 구현하기
2. 사칙연산을 각각 클래스로 만들어서 이용하기
3. 추상클래스를 만들어 사칙연산 클래스를 연결하기
4. Calculator에서 3번의 추상클래스를 이용하기

연산 클래스들을 AbstractOperation(추상 클래스)를 사용하여 추상화하고 Calculator 클래스의 내부 코드를 변경합니다.

  • hint. 클래스간의 결합도, 의존성(의존성역전원칙)

Calculator.java

public class Calculator {
    public AbstractOperation operation;

    public Calculator(AbstractOperation operation) {
        this.operation = operation;
    }

    public void setCalculator(AbstractOperation operation) {
        this.operation = operation;
    }

    public double calculate(int firstNumber, int secondNumber) {
        return this.operation.operate(firstNumber, secondNumber);
    }
}

AbstractOperation.java

public abstract class AbstractOperation{
    public abstract double operate(int a, int b);
}

AddOperation.java

public class AddOperation extends AbstractOperation {

    @Override
    public double operate(int a, int b) {
        return a + b;
    }
}
+빼기, 곱하기, 나누기

Main.java

public class Main {
    public static void main(String[] args) {
        Calculator calculator = new Calculator(new DivideOperation());
        System.out.println(calculator.calculate(10, 4));
        calculator.setCalculator(new AddOperation());
        System.out.println(calculator.calculate(10, 4));
    }
}

3번에서 추상클래스와 사칙연산간의 관계는 이해하고 작성했으나 4번에서 AbstractOperation을 선언하고 생성자와 Setter로 연결하는 법을 생각해내지 못했음.

profile
개발자호소인

0개의 댓글