์๊ฐํด๋ณด๊ธฐ
Step2๋ฅผ ์งํํ๊ธฐ ์ ์ ์๊ตฌ์ฌํญ์ ์ฝ์ด๋ณด๋
์ด๋ฒ ๋จ๊ณ์ ํต์ฌ์ ์๋ก์ด ์ฐ์ฐ ๊ธฐ๋ฅ ์ถ๊ฐ๊ฐ ์๋๋ผ
- ๊ณ์ฐ ๋ก์ง์ ํด๋์ค ๋จ์๋ก ๋ถ๋ฆฌ
- ์ฐ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ปฌ๋ ์ ์ผ๋ก ๊ด๋ฆฌ
- ์ธ๋ถ์์ ํ๋์ ์ง์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์บก์ํ๋ฅผ ์ ์ฉ
์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
์ค๊ณ
Step1์์๋ App ํด๋์ค์ main ๋ฉ์๋ ์์์
์
๋ ฅ, ์ฐ์ฐ, ์ถ๋ ฅ, ๋ฐ๋ณต ์ ์ด๊ฐ ๋ชจ๋ ์ด๋ฃจ์ด์ก๋ค.
Step2์์๋ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ด ๋๋์๋ค.
- App ํด๋์ค
์ฌ์ฉ์ ์ ๋ ฅ, ๊ฒฐ๊ณผ ์ถ๋ ฅ, ๋ฐ๋ณต ๋ฐ ์ข ๋ฃ ์ ์ด - Calculator ํด๋์ค
์ฌ์น์ฐ์ฐ ์ํ, ์ฐ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ปฌ๋ ์ ์ ์ ์ฅ, ์ ์ฅ๋ ๊ฒฐ๊ณผ ์ญ์
Calculator ํด๋์ค ๊ตฌํ
Calculator ํด๋์ค์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฌ์น์ฐ์ฐ ์ํ
- ์ฐ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌ์คํธ์ ์ ์ฅ
- ์ ์ฅ๋ ๊ฒฐ๊ณผ ๊ด๋ฆฌ
์ฐ์ฐ ๊ฒฐ๊ณผ ์ ์ฅ ์ปฌ๋ ์
์ฐ์ฐ ๊ฒฐ๊ณผ๋ ์ฌ๋ฌ ๊ฐ๊ฐ ๋์ ๋๊ธฐ ๋๋ฌธ์ List๋ฅผ ์ฌ์ฉํ๋ค.
private final List<Integer> results = new ArrayList<>();
- private: App ํด๋์ค์์ ์ง์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์ ํ
- List: ๊ฒฐ๊ณผ๋ฅผ ์์๋๋ก ์ ์ฅ
- ArrayList: ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ List ๊ตฌํ์ฒด
calculate ๋ฉ์๋ ๊ตฌํ
calculate ๋ฉ์๋๋
์ฐ์ฐ ์ํ → ๊ฒฐ๊ณผ ์ ์ฅ → ๊ฒฐ๊ณผ ๋ฐํ
์ด 3๊ฐ์ง ์ญํ ์ ์ํํ๋๋ก ๊ตฌํํ๋ค.
public int calculate(int num1, int num2, char operator) {
int result = 0;
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 == 0) {
throw new IllegalArgumentException("0์ผ๋ก ๋๋ ์ ์์ต๋๋ค.");
}
result = num1 / num2;
break;
default:
throw new IllegalArgumentException("์ง์ํ์ง ์๋ ์ฐ์ฐ์์
๋๋ค.");
}
results.add(result);
return result;
}
Step1์์๋ main ๋ฉ์๋์์ ์ฐ์ฐ๊ณผ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ์ง๋ง,
Step2์์๋ Calculator ํด๋์ค๊ฐ ์ด๋ฅผ ๋ด๋นํ๋๋ก ๋ณ๊ฒฝํ๋ค.
์๋ชป๋ ์ฐ์ฐ์ ์
๋ ฅ์ด๋ 0์ผ๋ก ๋๋๋ ๊ฒฝ์ฐ์๋
IllegalArgumentException์ ๋์ง๊ณ ,
App ํด๋์ค์์ ์ด๋ฅผ ๋ฐ์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๋ค.
์บก์ํ (getter, setter)
App ํด๋์ค์์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ง์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํ๋ค.
public List<Integer> getResults() {
return new ArrayList<>(results);
}
public void setResults(List<Integer> newResults) {
results.clear();
results.addAll(newResults);
}
์ธ๋ถ์์ ๋ฆฌ์คํธ๋ฅผ ์ง์ ์์ ํ๋ ์ํฉ์ ๋ฐฉ์งํ ์ ์๋ค.
removeResult ๋ฉ์๋ ๊ตฌํ
์ ์ฅ๋ ๊ฒฐ๊ณผ ์ค ๊ฐ์ฅ ๋จผ์ ์ ์ฅ๋ ๊ฐ์ ์ญ์ ํ๋ ๊ธฐ๋ฅ๋ ์ถ๊ฐํ๋ค.
public void removeResult() {
if (!results.isEmpty()) {
results.remove(0);
}
}
๋ฆฌ์คํธ๊ฐ ๋น์ด ์๋ ์ํ์์ ์ญ์ ๋ฅผ ์๋ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์
isEmpty()๋ก ํ ๋ฒ ๋ ์ฒดํฌํ๋๋ก ๊ตฌํํ๋ค.
Calculator.java ์ ์ฒด ์ฝ๋
package com.example.calculator.step2;
import java.util.ArrayList;
import java.util.List;
public class Calculator {
private final List<Integer> results = new ArrayList<>();
public int calculate(int num1, int num2, char operator) {
int result = 0;
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 == 0) {
throw new IllegalArgumentException("0์ผ๋ก ๋๋ ์ ์์ต๋๋ค.");
}
result = num1 / num2;
break;
default:
throw new IllegalArgumentException("์ง์ํ์ง ์๋ ์ฐ์ฐ์์
๋๋ค.");
}
results.add(result);
return result;
}
public List<Integer> getResults() {
return new ArrayList<>(results);
}
public void setResults(List<Integer> newResults) {
results.clear();
results.addAll(newResults);
}
public void removeResult() {
if (!results.isEmpty()) {
results.remove(0);
}
}
}
App ํด๋์ค ๊ตฌํ
App ํด๋์ค์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ๋ Step1๊ณผ ๋์ผํ๊ฒ ์ ์งํ๋ค.
๋ฌ๋ผ์ง ์ ์ ์ฐ์ฐ์ ์ง์ ์ํํ์ง ์๊ณ
Calculator ํด๋์ค์ calculate ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค๋ ์ ์ด๋ค.
Calculator calculator = new Calculator();
try {
int result = calculator.calculate(num1, num2, operator);
System.out.println("๊ฒฐ๊ณผ: " + result);
} catch (IllegalArgumentException e) {
System.out.println("์ค๋ฅ: " + e.getMessage());
}
getter์ removeResult ๋ฉ์๋๋ฅผ ํ์ฉํด
์ ์ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ์กฐํํ๊ณ ์ญ์ ํ๋ ๊ธฐ๋ฅ๋ ํจ๊ป ํ์ธํ๋ค.
App.java ์ ์ฒด ์ฝ๋
package com.example.calculator.step2;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Calculator calculator = new Calculator();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์:");
int num1 = sc.nextInt();
System.out.print("๋ ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์:");
int num2 = sc.nextInt();
System.out.print("์ฌ์น์ฐ์ฐ ๊ธฐํธ๋ฅผ ์
๋ ฅํ์ธ์: ");
char operator = sc.next().charAt(0);
try {
int result = calculator.calculate(num1, num2, operator);
System.out.println("๊ฒฐ๊ณผ: " + result);
} catch (IllegalArgumentException e) {
System.out.println("์ค๋ฅ: " + e.getMessage());
}
System.out.println("์ ์ฅ๋ ๊ฒฐ๊ณผ ๋ชฉ๋ก: " + calculator.getResults());
System.out.println("๊ฐ์ฅ ๋จผ์ ์ ์ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ์ญ์ ํ์๊ฒ ์ต๋๊น? (remove ์
๋ ฅ ์ ์ญ์ )");
String cmd = sc.next();
if (cmd.equalsIgnoreCase("remove")) {
calculator.removeResult();
System.out.println("์ญ์ ํ ๊ฒฐ๊ณผ ๋ชฉ๋ก: " + calculator.getResults());
}
System.out.println("๋ ๊ณ์ฐํ์๊ฒ ์ต๋๊น? (exit ์
๋ ฅ ์ ์ข
๋ฃ)");
String answer = sc.next();
if (answer.equals("exit")) break;
}
sc.close();
}
}
๊ฒฐ๊ณผ

ํ๋ก๊ทธ๋จ์ ์คํํด๋ณด๋ฉด
์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ๋ฆฌ์คํธ์ ์ฐจ๋ก๋๋ก ์ ์ฅ๋๊ณ ,
remove๋ฅผ ์
๋ ฅํ๋ฉด ๊ฐ์ฅ ๋จผ์ ์ ์ฅ๋ ๊ฐ์ด ์ญ์ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ค์ Step3์์๋
์ค์ ์ฐ์ฐ, ๊ฒฐ๊ณผ ์กฐ๊ฑด ์กฐํ, Enum๊ณผ ์คํธ๋ฆผ ๋ฑ์ ์ ์ฉํ๋ฉฐ
๊ณ์ฐ๊ธฐ๋ฅผ ์กฐ๊ธ ๋ ํ์ฅํด๋ณผ ์์ ์ด๋ค.
'๐ฅ ๋ด์ผ๋ฐฐ์์บ ํ > ๐ ๊ณผ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ์ปค๋จธ์ค ๊ณผ์ Step2 (0) | 2026.01.28 |
|---|---|
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ์ปค๋จธ์ค ๊ณผ์ Step1 (0) | 2026.01.28 |
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ๊ณ์ฐ๊ธฐ๊ณผ์ Step3 (0) | 2026.01.27 |
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ๊ณ์ฐ๊ธฐ ๊ณผ์ Step1 (0) | 2026.01.27 |
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH1 ๋ง์ง ๊ด๋ฆฌ API ์ค๊ณํ๊ธฐ (0) | 2026.01.27 |