Adder와 Multiplier는 두 숫자를 인자로 받아 연산하는 같은 행위(Common Behavior)를 수행한다. 이 공통된 행위를 interface로 만든다.(BinaryOp) 그 후 Adder와 Multiplier는 이를 implements 한다.
코드
BinaryOp.java
interface BinaryOp {
int apply(int left, int right);
}
Adder.java
class Adder implements BinaryOp {
public int apply(int left, int right) {
return left + right;
}
}
Multiplier.java
public class Multiplier implements BinaryOp {
public int apply(int left, int right) {
return left * right;
}
}
Algorithm.java
public class Algorithm {
static final int addFrom1To10 = 55;
public static int sigma(int begin, int end, int step) {
return accumulate(new Adder(), 0, begin, end, step);
}
public static int pi(int begin, int end, int step) {
return accumulate(new Multiplier(), 1, begin, end, step);
}
static int accumulate(BinaryOp binder, int init, int begin, int end, int step) {
int result = init;
for (int next = begin; next <= end; next = next + step) {
result = binder.apply(result, next);
}
return result;
}
public static void main(String[] args) {
System.out.println(sigma(1, 10, 1));
System.out.println(pi(1, 10, 1));
}
}
실행 결과
55
3628800
2024.08.30 - [Java] - [Java] 10. Java에서의 상속
출처: https://github.com/gikpreet/class-programming_with_java/tree/master
GitHub - gikpreet/class-programming_with_java
Contribute to gikpreet/class-programming_with_java development by creating an account on GitHub.
github.com
'Java > Java 연습 문제' 카테고리의 다른 글
[Java 연습 문제] 학생 관리 시스템 * (0) | 2024.09.01 |
---|---|
[Java 연습 문제] String Sort (with Bubble Sort) (0) | 2024.09.01 |
[Java 연습 문제] 텍스트 파일의 소문자 복사본 생성 (0) | 2024.08.30 |
[Java 연습 문제] Text file 입출력 (0) | 2024.08.29 |
[Java 연습 문제] 분수 계산(덧셈, 뺄셈, 곱셈) 코드 (0) | 2024.08.27 |