๋ฌธ์ ์ค๋ช
์์ ์ํ ์ฃผ๋ฌธ ์์คํ ์ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ๋๋ก ๊ฐ์ ํด๋ณด์.
์๊ตฌ ์ฌํญ
- ์๋ ์ ๋ ฅ,์ถ๋ ฅ ์์๋ฅผ ์ฐธ๊ณ ํด์ ๋ค์ ์ฌํญ์ ์ ์ฉํ์.
- ์ฃผ๋ฌธ ์๋์ ์ ๋ ฅ ๋ฐ์
- ์) ์ ๋ ฅํ ์ฃผ๋ฌธ์ ๊ฐ์๋ฅผ ์ ๋ ฅํ์ธ์.
- ๊ฐ๊ฒฉ, ์๋, ์ํ๋ช ์ ์ ๋ ฅ ๋ฐ์
- ์ ๋ ฅ์ ์ํ ์์๋ฅผ ์ ์ ์๊ฒ "n๋ฒ์งธ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์ ๋ ฅํ์ธ์"๋ผ๋ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ์ธ์.
- ์ ๋ ฅ์ด ๋๋๋ฉด ๋ฑ๋กํ ์ํ๊ณผ ์ด ๊ฒฐ์ ๊ธ์ก์ ์ถ๋ ฅํ์.
1. ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์ ์ฅํด์ผ ํฉ๋๋ค.
2. ์ ์ฅ๋ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ ์ ์์ด์ผ ํฉ๋๋ค.
3. ์ ์ฅ๋ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ด ๊ธ์ก์ ๊ณ์ฐํด์ผ ํฉ๋๋ค.
<์ ๋ต ์ฝ๋>
package javaBasicLecture.ref.quiz1;
import java.util.Scanner;
public class ProductOrderMain2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("์
๋ ฅํ ์ฃผ๋ฌธ ๊ฐ์๋ฅผ ์
๋ ฅํ์ธ์: ");
int n = scanner.nextInt();
scanner.nextLine();
ProductOrder [] orders = new ProductOrder[n];
for(int i= 0; i < orders.length; i++){
System.out.println("(i+1)๋ฒ์งธ ์ฃผ๋ฌธ์ ์
๋ ฅํ์ธ์. ");
System.out.println("์ํ๋ช
: ");
String productName = scanner.nextLine();
System.out.println("๊ฐ๊ฒฉ: ");
int price = scanner.nextInt();
System.out.print("์๋: ");
int quantity = scanner.nextInt();
scanner.nextLine(); // ์
๋ ฅ ๋ฒํผ๋ฅผ ๋น์ฐ๊ธฐ ์ํ ์ฝ๋
orders[i] = createOrder(productName, price, quantity);
}
printOrders(orders);
int totalAmount = getTotalAmount(orders);
System.out.println("์ด ๊ฒฐ์ ๊ธ์ก: " + totalAmount);
}
static ProductOrder createOrder(String productName, int price, int quantity){
ProductOrder order = new ProductOrder;
order.productName = name;
order.price = price;
order.quantity = quantity;
return order;
}
static void printOrders(ProductOrder[] orders) {
for(ProductOrder order : orders) {
System.out.println("์ํ๋ช
: " + order.productName + " ,๊ฐ๊ฒฉ:" + order.price + " ,์๋: " + order.quantity);
}
}
static void getTotalAmount (ProductOrder[] orders) {
int totalAmount=0;
for (ProductOrder order : orders) {
totalAmount += order.price * order.quantity;
}
}
}
์ํ ์ฃผ๋ฌธ์ ์ ๋ ฅ๋ฐ์ ์ด ๊ฒฐ์ ๊ธ์ก์ ๊ณ์ฐํ๊ณ ์ถ๋ ฅํ๋ ๊ฐ๋จํ ์ฝ๋์ด๋ค.
์ฝ๋์ ๋ ผ๋ฆฌ ๊ณผ์
1. ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด ์ฌ์ฉ์์๊ฒ ์ฃผ๋ฌธ์ ๊ฐ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค.
- ์ ๋ ฅ๋ ๊ฐ์๋งํผ ๋ฐฐ์ด์ ์์ฑํด ๊ฐ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ค๋น๋ฅผ ํ๋ค.
2. ๋ฐ๋ณต๋ฌธ์ ํตํ ์ฃผ๋ฌธ ์ ๋ณด ์ ๋ ฅ
- ์ฃผ๋ฌธ์ ๊ฐ์๋งํผ ๋ฐ๋ณต๋ฌธ์ด ์คํ๋๋ค.
- ์ฌ์ฉ์์๊ฒ ์ํ๋ช , ๊ฐ๊ฒฉ, ์๋์ ์ ๋ ฅ๋ฐ๊ณ , ์ด๋ฅผ createOrder๋ฉ์๋๋ก ์ ๋ฌํด ProductOrder ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๋ค.
3. ์ถ๋ ฅ๊ณผ ๊ณ์ฐ
- printOrders ๋ฉ์๋๊ฐ ๋ฐฐ์ด์ ์ํํ๋ฉฐ ๋ชจ๋ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ค.
- getTotalAmount ๋ฉ์๋๊ฐ ๋ฐฐ์ด์ ๋ชจ๋ ์ฃผ๋ฌธ์ ๋ํด ๊ฐ๊ฒฉ * ์๋์ ๊ณ์ฐํด ์ด ๊ฒฐ์ ๊ธ์ก์ ๋ฐํํ๋ค.
4. ๊ฒฐ๊ณผ ์ถ๋ ฅ
- ๊ณ์ฐ๋ ์ด ๊ฒฐ์ ๊ธ์ก์ ์ถ๋ ฅํ๋ค.
---
์ฃผ์ ๋ ผ๋ฆฌ์ ์ฐ๊ด.
(1) ์ฌ์ฉ์ ์ ๋ ฅ๊ณผ ๊ฐ์ฒด ์์ฑ์ ์ฐ๊ด
- ์ฌ์ฉ์ ์ ๋ ฅ:
- Scanner ๊ฐ์ฒด๋ฅผ ํตํด ์ฌ์ฉ์๋ก๋ถํฐ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์
๋ ฅ๋ฐ๋๋ค.
- ์
๋ ฅ๋ ์ ๋ณด๋ฅผ ๋ณ์(productName, price, quantity)์ ์ ์ฅํ๋ค.
- ๊ฐ์ฒด ์์ฑ:
- ์ ๋ ฅ๋ฐ์ ์ ๋ณด๋ createOrder๋ฉ์๋๋ฅผ ํตํด ProductOrder๊ฐ์ฒด๋ก ๋ณํ๋๋ค.
- ์ด ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ ์ฅ๋์ด ๋์ค์ ์ถ๋ ฅ ๋ฐ ๊ณ์ฐ์ ์ฌ์ฉ๋๋ค.
๋ ผ๋ฆฌ์ ๊ด๊ณ : ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ProductOrder๋ผ๋ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ก ๋ง๋ค์ด ์ ์ฅํ๋ค.
(2) ๋ฐฐ์ด๊ณผ ๋ฐ๋ณต๋ฌธ์ ์ฐ๊ด - ๋ฐฐ์ด ์ฌ์ฉ: - ์ฌ๋ฌ ๊ฐ์ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ฐฐ์ด(ProductOrder[])์ ์ฌ์ฉํ๋ค. - ๋ฐฐ์ด์ ๊ฐ ์์๋ ํ ๋ฒ์ ์ฌ์ฉ์ ์ ๋ ฅ์ ํด๋นํ๋ ProductOrder ๊ฐ์ฒด์ด๋ค.- ๋ฐ๋ณต๋ฌธ : - ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ์ฑ์ฐ๊ธฐ ์ํด ๋ฐ๋ณต๋ฌธ์ด ์ฌ์ฉ๋๋ค. - ๋ฐ๋ณต๋ฌธ์ ์ ๋ ฅ๋ฐ์ ์ ๋ณด๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ , ๋์ค์ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉฐ ์ถ๋ ฅํ๊ฑฐ๋ ๊ณ์ฐ์ ํ์ฉํ๋ค.
๋ ผ๋ฆฌ์ ๊ด๊ณ : ๋ฐฐ์ด๊ณผ ๋ฐ๋ณต๋ฌธ์ "์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ์ฅํ๊ณ ์ฒ๋ฆฌ"ํ๋ ์ญํ ์ ํ๋ค.๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋๊ตฌ์ด๊ณ , ๋ฐ๋ณต๋ฌธ์ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋๊ตฌ์ด๋ค.
(3) ํด๋์ค์ ๊ฐ์ฒด์ ์ฐ๊ด - ํด๋์ค ProductOrder: - ์ํ๋ช , ๊ฐ๊ฒฉ, ์๋๊ณผ ๊ฐ์ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ์ด๋ค. - ๊ฐ ์ฃผ๋ฌธ์ ProductOrder๊ฐ์ฒด๋ก ํํ๋๋ค.- ๊ฐ์ฒด ์ฌ์ฉ: - ๊ฐ ProcudtOrder ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์์๋ก ์ ์ฅ๋๋ค. - ์ดํ, ๊ฐ์ฒด์ ์์ฑ(productName, price, quantity)์ ์ถ๋ ฅ ๋ฐ ๊ณ์ฐ์ ์ฌ์ฉ๋๋ค.
๋ ผ๋ฆฌ์ ๊ด๊ณ : ํด๋์ค๋ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ์ค๊ณ๋์ด๊ณ , ๊ฐ์ฒด๋ ๊ทธ ์ค๊ณ๋๋ก ๋ง๋ค์ด์ง ์ค์ฒด์ด๋ค.ProductOrder ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ ์ ๋ฐ์์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ํ์ฉ์ ๊ธฐ๋ณธ ๋จ์๋ก ์ฌ์ฉ๋๋ค.
(4) ์ถ๋ ฅ๊ณผ ๊ณ์ฐ์ ์ฐ๊ด - ์ถ๋ ฅ(printOrders) : - ๋ฐฐ์ด์ ์ ์ฅ๋ ๊ฐ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ค. - ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ํ๋์ฉ ์ฒ๋ฆฌํ๋ฉฐ productName, price,quantity๋ฅผ ์ถ๋ ฅํ๋ค. - ๊ณ์ฐ(getTotalAmount):
- ๋ฐฐ์ด์ ์ ์ฅ๋ ๊ฐ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด price × quantity๋ฅผ ๊ณ์ฐํ๋ค
- ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉฐ ๊ธ์ก์ ๋์ ํ๋ค.
๋ ผ๋ฆฌ์ ๊ด๊ณ : ์ถ๋ ฅ๊ณผ ๊ณ์ฐ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋๋ค. ๋ฐฐ์ด์ ์ ์ฅ๋ ๊ฐ์ฒด์ ์์ฑ์ ํ์ฉํ์ฌ ํ์ํ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๊ฑฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํ๋ค.
(5) ๋ฉ์๋ ๊ฐ์ ์ฐ๊ด
• main ๋ฉ์๋:
ํ๋ก๊ทธ๋จ์ ์ค์ฌ์ผ๋ก, ๊ฐ ๋ฉ์๋๋ฅผ ํธ์ถํด ๋ ผ๋ฆฌ์ ์ธ ํ๋ฆ์ ์ ์ดํ๋ค.
• createOrder, printOrders, getTotalAmount๋ฅผ ํธ์ถํ์ฌ ์ ๋ ฅ → ์ถ๋ ฅ → ๊ณ์ฐ์ ํ๋ฆ์ ๋ง๋ ๋ค.
• createOrder:
์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ProductOrder ๊ฐ์ฒด๋ก ๋ณํํ๋ ์ญํ ์ ํ๋ค.
์ด ๊ฐ์ฒด๋ ์ดํ printOrders์ getTotalAmount ๋ฉ์๋์์ ์ฌ์ฉ๋๋ค.
• printOrders:
createOrder๋ก ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ๋ค.
• getTotalAmount
createOrder๋ก ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ๊ธ์ก์ ๊ณ์ฐํ๋ค.
๋ ผ๋ฆฌ์ ๊ด๊ณ:
๊ฐ ๋ฉ์๋๋ ์๋ก ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ ์์ฑ, ์ฒ๋ฆฌ, ๊ฒฐ๊ณผ ๋์ถ์ด๋ผ๋ ํ๋ฆ์ ๋ง๋ ๋ค.
createOrder → ๋ฐฐ์ด ์ ์ฅ → printOrders / getTotalAmount์ ์์๋ก ์งํ๋๋ค
