24.07.26

윤지현·2024년 7월 26일

TIL

목록 보기
25/75
  • 개인과제 문제를 풀면서 Level2의 3~5까지 문제를 풀었다.
    캡슐화하여 App클래스의 Main메서드가 Calculator 클래스의 연산결과를 저장하고 있는 필드에 접근하지 못하도록 했다.
    또한 Getter메서드와 Setter메서드를 이용하여 필드에 간접 접근하여 가져오고 수정할 수 있게 하였다.
public class Calculator {
    /* 연산 결과를 저장하는 컬렉션 타입 필드 선언 및 생성 (접근 제어)*/
    private List<Double> results = new ArrayList<>();

    public Double calculate(int num1, int num2, char op) throws BadException {
        double result = 0;
        switch (op) {
            case '+':
                result = num1 + num2;
                break;
            case '-':
                result = num1 - num2;
                break;
            case '*':
                result = num1 * num2;
                break;
            case '/':
                if (num2 == 0) {
                    throw new BadException("분모가 0이 아닌 양의 정수");
                } else {
                    result = num1 / num2;
                }
                break;
            default:
                throw new BadException("사칙연산자[+, -, *, /]");
        }
        return result;
    }

    // Getter 메서드
    public List<Double> getResults() {
        return results;
    }

    // 결과값을 리스트에 저장하는 Setter 메서드
    public void setResults(double result) {
        this.results.add(result);
    }
 }
  • 가장 먼저 저장된 데이터를 삭제하는 메서드를 Calculator 클래스에서 구현하여 App 클래스의 Main 메서드에서 삭제 메서드가 활용되도록 하였다.
public class Calculator {
    /* 연산 결과를 저장하는 컬렉션 타입 필드 선언 및 생성 (접근 제어)*/
    private List<Double> results = new ArrayList<>();

    public Double calculate(int num1, int num2, char op) throws BadException {
        double result = 0;
        switch (op) {
            case '+':
                result = num1 + num2;
                break;
            case '-':
                result = num1 - num2;
                break;
            case '*':
                result = num1 * num2;
                break;
            case '/':
                if (num2 == 0) {
                    throw new BadException("분모가 0이 아닌 양의 정수");
                } else {
                    result = num1 / num2;
                }
                break;
            default:
                throw new BadException("사칙연산자[+, -, *, /]");
        }
        return result;
    }

    // Getter 메서드
    public List<Double> getResults() {
        return results;
    }

    // 결과값을 리스트에 저장하는 Setter 메서드
    public void setResults(double result) {
        this.results.add(result);
    }

    // 가장 먼저 저장된 데이터를 삭제하는 메서드
    public void removeResult() {
        double removeResult = results.get(0);
        results.remove(0);
        System.out.println("삭제된 값 : " + removeResult);
    }
 }
  • 마지막으로는 연산 결과들을 조회하는 메서드를 Calculator 클래스에서 구현하여 App 클래스의 Main 메서드에서 조회 메서드가 활용되도록 하였다.
public class Calculator {
    /* 연산 결과를 저장하는 컬렉션 타입 필드 선언 및 생성 (접근 제어)*/
    private List<Double> results = new ArrayList<>();

    public Double calculate(int num1, int num2, char op) throws BadException {
        double result = 0;
        switch (op) {
            case '+':
                result = num1 + num2;
                break;
            case '-':
                result = num1 - num2;
                break;
            case '*':
                result = num1 * num2;
                break;
            case '/':
                if (num2 == 0) {
                    throw new BadException("분모가 0이 아닌 양의 정수");
                } else {
                    result = num1 / num2;
                }
                break;
            default:
                throw new BadException("사칙연산자[+, -, *, /]");
        }
        return result;
    }

    // Getter 메서드
    public List<Double> getResults() {
        return results;
    }

    // 결과값을 리스트에 저장하는 Setter 메서드
    public void setResults(double result) {
        this.results.add(result);
    }

    // 가장 먼저 저장된 데이터를 삭제하는 메서드
    public void removeResult() {
        double removeResult = results.get(0);
        results.remove(0);
        System.out.println("삭제된 값 : " + removeResult);
    }

    // 저장된 연산결과를 조회하는 메서드
    public void inquiryResults() {
        System.out.print("저장된 연산 결과 : ");
        for (double value : results) {
            System.out.print(value + " ");
        }
        System.out.println();
    }
}
  • 후기
    처음에는 JDK에 FIFO라는 기능이 있는 QUEUE를 활용할까라는 생각을 했었다. 하지만 QUEUE보다는 그 동안 내가 알고리즘을 풀면서 많이 활용했던 List를 이용하였다. List를 사용해도 크기 제한이 없으니 사용하기에도 매우 유리했다.
    ...... 지금 현재 자격증 공부 중인데 시험이 얼마 안 남아서 공부를 별로 하지 못한 것 같다. 시험끝나고 Back-end 공부에 집중!!!!!!
profile
첫 시작

0개의 댓글