[과제] 1주차 계산기(lv2)

Shaun.the.sheep·2025년 7월 9일

[과제] 1주차

목록 보기
2/3
post-thumbnail

들어가기 전

LEVEL 2부터는 좀 신경쓸 조건들이 생기기 시작한다.
기초 문법이 같더라도 세세한 부분에서 생기는 차이가 설계방법과 프로그램 구조 자체를 다르게 생각하게 끔 하는 거 같다.


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 역시 다른 언어는 힘들어..

0개의 댓글