- 개인과제 문제를 풀면서 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;
}
public List<Double> getResults() {
return results;
}
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;
}
public List<Double> getResults() {
return results;
}
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;
}
public List<Double> getResults() {
return results;
}
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 공부에 집중!!!!!!