
LEVEL 2부터는 좀 신경쓸 조건들이 생기기 시작한다.
기초 문법이 같더라도 세세한 부분에서 생기는 차이가 설계방법과 프로그램 구조 자체를 다르게 생각하게 끔 하는 거 같다.
Level 2
public void init(){
runExit = true;
circleExit = true;
normalExit = true;
}
/// 1: 둘레 , 2 : 너비
public void initCircle(int brMode){
calculatorCircle = switch (brMode) {
case 1 -> new CircleAroundOperator();
case 2 -> new CircleAreaOperator();
default -> null;
};
}
/// 사칙연산 기호 대로
public void initNormal(char brMode){
calculator = switch (brMode) {
case '+' -> new AddOperator();
case '-' -> new SubtractOperator();
case '*' -> new MultiplyOperator();
case '/' -> new DivideOperator();
case '%' -> new ModeOperator();
default -> null;
};
}
public Calculator() {
resultList = new LinkedList<Double>();
init();
}
public void removeResult() {
resultList.remove();
}
public void inquiryResults() {
int sidx = 1;
for (Double feElement : resultList) {
System.out.println(sidx++ + "번째 결과 = " + feElement);
}
}
public void addResult(double brResult) {
resultList.add(brResult);
}
public double calculate(int a, int b) {
return calculator.operate(a,b);
}
public double calculate(int a) {
return calculatorCircle.operate(a);
}
잘 보면 2개의 인터페이스가 선언되어 있다.

그렇기 때문에 사용자의 입력에 따라 각 인터페이스에 상황에 맞는 클래스가 주입이 된다.
``` java
calculator.initCircle(selectedmode);
calculator.initNormal(arithemeticSign);
```
이 두가지의 함수로 계산법에 맞는 값이 주입이 된다.
여기까지도 크게 문제는 없다 아직 피드백은 없었기 때문에 튜터님께 피드백을 받은 후 수정 예정이다.
<br>
<br>
<br>
<br>
결과 값은 이렇다..

P.S 역시 다른 언어는 힘들어..