ํ์ ๊ธฐ๋ฅ ๊ฐ์ด๋
- ๊ธฐ์ด์ ์ธ ํ๋ฆ ์ ์ด ๋ฐ ๊ฐ์ฒด ์งํฅ ์ค๊ณ ๊ฐ๋ ์ ๋ณต์ตํฉ๋๋ค.
- ์ปค๋จธ์ค ํ๋ซํผ์ ํน์ฑ(์ํ/์นดํ ๊ณ ๋ฆฌ/๊ณ ๊ฐ/์ฃผ๋ฌธ/์ฌ๊ณ )์ ๊ณ ๋ คํ์ฌ ์๊ตฌ์ฌํญ์ ๋ฐ์ํ ํด๋์ค ์ค๊ณ
- ๋จ์ ๊ธฐ๋ฅ ๊ตฌํ์ ๊ทธ์น์ง ์๊ณ , Product, Category, Customer, CommerceSystem ๋ฑ ๊ฐ ๊ฐ์ฒด์ ์ญํ ๊ณผ ์ฑ ์(R&R)์ ์ด๋ป๊ฒ ๋๋๊ณ ํ๋ ฅ์ํฌ์ง ๊ณ ๋ฏผํ๋ฉฐ ๊ตฌํ
ํด๋์ค ์ ์
- Main: ์์ ์ง์ ์ด ๋๋ ํด๋์ค, public static void main(String[] args)
- Product: ๊ฐ๋ณ ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๋ ํด๋์ค
- ์ํ๋ช , ๊ฐ๊ฒฉ, ์ค๋ช , ์ฌ๊ณ ์๋
- ์์: Galaxy S24, 1200000, ์ต์ ์ค๋งํธํฐ, 50
- `new Product("Galaxy S24", 1200000, "์ต์ ์ค๋งํธํฐ", 50)
- CommerceSystem: ํ๋ก๊ทธ๋จ ๋น์ฆ๋์ค ๋ก์ง ํด๋์ค
- Category: Product ํด๋์ค๋ฅผ ๊ด๋ฆฌํ๋ ํด๋์ค
- ์์: ์ ์์ ํ, ์๋ฅ, ์ํ ๋ฑ ๊ฐ ์นดํ ๊ณ ๋ฆฌ ๋ด์ ์ฌ๋ฌ Product๋ฅผ ํฌํจํฉ๋๋ค.
Step1: ๊ฐ์ฒด ์งํฅ ์ค๊ณ๋ฅผ ์ ์ฉํด ์ํ ๊ด๋ฆฌ ์์คํ ํ๋ก๊ทธ๋๋ฐ
- ์ํ ๋ชฉ๋ก ์ถ๋ ฅ
- JAVA ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ์ฌ๋ฌ ์ ์์ ํ์ ์ถ๋ ฅํฉ๋๋ค.
- ์ ์๋ ์ํ ์ค ์ ๋ ฅ๋ฐ์ ์ซ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ก์ง์ ์คํํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
- Product ํด๋์ค ์์ฑํ๊ธฐ
- ์ค๋ช : ๊ฐ๋ณ ์ํ์ ๊ด๋ฆฌํ๋ ํด๋์ค์ ๋๋ค. ํ์ฌ๋ ์ ์์ ํ๋ง ๊ด๋ฆฌํฉ๋๋ค.
- ํด๋์ค๋ ์ํ๋ช , ๊ฐ๊ฒฉ, ์ค๋ช , ์ฌ๊ณ ์๋ ํ๋๋ฅผ ๊ฐ์ต๋๋ค.
- main ํจ์์์ Product ํด๋์ค๋ฅผ ์์ฑํ์ฌ ์ํ ๋ชฉ๋ก์ ์ถ๊ฐํฉ๋๋ค.
- Product ๊ฐ์ฒด ์์ฑ์ ํตํด ์ํ๋ช
, ๊ฐ๊ฒฉ, ์ค๋ช
, ์ฌ๊ณ ์๋์ ์ธํ
ํฉ๋๋ค.
- ํค์๋: new
- List๋ฅผ ์ ์ธํ์ฌ ์ฌ๋ฌ Product์ ์ถ๊ฐํฉ๋๋ค.
- List<Product> products = new ArrayList<>();
- ๋ฐ๋ณต๋ฌธ์ ํ์ฉํด products๋ฅผ ํ์ํ๋ฉด์ ํ๋์ฉ ์ ๊ทผํฉ๋๋ค.
- Product ๊ฐ์ฒด ์์ฑ์ ํตํด ์ํ๋ช
, ๊ฐ๊ฒฉ, ์ค๋ช
, ์ฌ๊ณ ์๋์ ์ธํ
ํฉ๋๋ค.
์๊ฐํด๋ณด๊ธฐ
Step1 ์๊ตฌ์ฌํญ์ ์ฝ์ด๋ณด๋ ์ด๋ฒ ๋จ๊ณ์ ํต์ฌ์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ง์ด ์ถ๊ฐํ๋ ๊ฒ์ด ์๋๋ผ
- Product ํด๋์ค๋ก ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ฒด๋ก ๊ด๋ฆฌํ๊ธฐ
- List< Product>๋ก ์ฌ๋ฌ ์ํ์ ํ๋ฒ์ ๋ค๋ฃจ๊ธฐ
- ์ฝ์ ๋ฉ๋ด(์ถ๋ ฅ -> ์
๋ ฅ -> ๋ถ๊ธฐ -> ๋ฐ๋ณต) ๊ธฐ๋ณธ ํ๋ฆ ๋ง๋ค๊ธฐ
๋ผ๊ณ ์ ๋ฆฌํ๋ค.
Step1์์๋ ์ ์์ ํ ์นดํ
๊ณ ๋ฆฌ๋ง ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์, ์ํ ๋ฐ์ดํฐ๋ main์์ ์ง์ ์์ฑํด๋ ๋๋ค๊ณ ํ๋จํ๋ค.
(์ดํ Step3์์ ๋ณ๊ฒฝํ ์์ )
์ค๊ณ
Step1์์๋ Main์ด ๋ค์ ์ญํ ์ ๋ชจ๋ ๋ด๋นํ๋ค
- ์ํ ๋ฐ์ดํฐ ์ค๋น(์ํ ๊ฐ์ฒด ์์ฑ ๋ฐ ๋ฆฌ์คํธ์ ์ ์ฅ)
- ๋ฉ๋ด ์ถ๋ ฅ
- ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ
- ์ ๋ ฅ๊ฐ์ ๋ฐ๋ฅธ ๋ถ๊ธฐ(์ํ ์ ํ/์ค๋ฅ/์ข ๋ฃ)
- ๋ฐ๋ณต/์ข ๋ฃ ์ ์ด
Product ํด๋์ค ๊ตฌํ
Product ํด๋์ค๋ฅผ ๋ง๋ ์ด์
์ํ์ ์ํ๋ช /๊ฐ๊ฒฉ/์ค๋ช /์ฌ๊ณ ์ฒ๋ผ ํญ์ ํจ๊ป ์์ง์ด๋ ์ ๋ณด ๋ฌถ์์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ ๋ฐ๋ก ๋ณ์๋ก ๊ด๋ฆฌํ๊ธฐ ๋ณด๋ค Product ๊ฐ์ฒด๋ก ๋ฌถ์ด ๊ด๋ฆฌํ๋ ํธ์ด ํ์ฅ์ ์ ๋ฆฌํ๋ค๊ณ ํ๋จํ๋ค.
ํ๋ ๊ตฌ์ฑ
- name: ์ํ๋ช
- price: ๊ฐ๊ฒฉ
- description: ์ค๋ช
- stock: ์ฌ๊ณ ์๋
name, price, description์ ๋ฐ๋ ์ผ์ด ์์ผ๋ฏ๋ก final๋ก ๋๊ณ , stock์ ์ดํ ์ฃผ๋ฌธ์์ ๊ฐ์ํ ์ ์์ผ๋ฏ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํ๊ฒ ๋์๋ค.
Product.java ์ ์ฒด์ฝ๋
package kr.spartaclub.com.example.commerce;
public class Product {
// ์ํ์ ๊ธฐ๋ณธ ์ ๋ณด (์์ฑ ํ ๋ฐ๋์ง ์๋ ๊ฐ์ด๋ฏ๋ก final๋ก ๋ )
private final String name; // ์ํ๋ช
private final int price; // ๊ฐ๊ฒฉ
private final String description; // ์ค๋ช
// ์ฌ๊ณ ๋ ์ฃผ๋ฌธ/์ฅ๋ฐ๊ตฌ๋ ๊ตฌํ ์ ๊ฐ์ํ ์ ์์ผ๋ฏ๋ก final X
private int stock; // ์ฌ๊ณ ์๋
public Product(String name, int price, String description, int stock) {
this.name = name;
this.price = price;
this.description = description;
this.stock = stock;
}
// ์บก์ํ: ํ๋์ ์ง์ ์ ๊ทผํ์ง ์๊ณ getter๋ก๋ง ๊บผ๋ด๋๋ก ์ค๊ณ
public String getName() { return name; }
public int getPrice() { return price; }
public String getDescription() { return description; }
public int getStock() { return stock; }
}
Main ํด๋์ค ๊ตฌํ
List<Product>๋ฅผ ์ฌ์ฉํ ์ด์
์ํ์ ์ฌ๋ฌ ๊ฐ๊ฐ ๋์ ๋์ด ๊ด๋ฆฌ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ List๋ฅผ ์ ํํ๋ค.
- List: ์์๋๋ก ์ ์ฅํ๊ณ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ถ๋ ฅํ๊ธฐ ํธํจ
- ArrayList: ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ List ๊ตฌํ์ฒด
List<Product> products = new ArrayList<>();
๋ฉ๋ด ์ถ๋ ฅ: ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ํ ๋ชฉ๋ก ๋ณด์ฌ์ฃผ๊ธฐ
๋ฆฌ์คํธ์ ๋ด๊ธด ์ํ๋ค์ ์ํํ๋ฉด์ "๋ฒํธ + ์ํ ์ ๋ณด" ํํ๋ก ์ถ๋ ฅํ๋ค.
์ด๋ ๋ฆฌ์คํธ ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์ํ์ง๋ง ๋ฉ๋ด ๋ฒํธ๋ 1๋ถํฐ๊ฐ ์์ฐ์ค๋ฝ๊ธฐ ๋๋ฌธ์ i + 1๋ก ์ถ๋ ฅํ๋ค.
๋ํ ๊ฐ๊ฒฉ์ %, d ํฌ๋ฉง์ ์ฌ์ฉํด 1,200,000์ฒ๋ผ ๋ณด์ด๊ฒ ์ฒ๋ฆฌํ๋ค.
์ ๋ ฅ์ฒ๋ฆฌ: ์ ์ ๋ฒ์ ์ฒดํฌ
์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๊ฐ์ด 1~products.size() ๋ฒ์ ์์ผ ๋๋ง ์ํ์ ์ ํํ๋๋ก ํ๊ณ , ๊ทธ ์ธ ์
๋ ฅ์ "์๋ชป๋ ์
๋ ฅ" ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๋ค.
์ ํ๋ ์ํ์ products.get(input-1)๋ก ๊ฐ์ ธ์ค๋๋ฐ, ์ด๋ ์ฌ์ฉ์ ์
๋ ฅ(1~)์ ๋ฆฌ์คํธ ์ธ๋ฑ์ค(0~)๋ก ๋ณํํ๊ธฐ ์ํด์์ด๋ค.
์ข ๋ฃ ์กฐ๊ฑด: 0 ์ ๋ ฅ ์ ์ข ๋ฃ
0์ ํ๋ก๊ทธ๋จ ์ข ๋ฃ ์ญํ ์ด๋ฏ๋ก ๊ฐ์ฅ ๋จผ์ ์ฒดํฌํ๊ณ break๋ก ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๋ค.
Main.java ์ ์ฒด์ฝ๋
package kr.spartaclub.com.example.commerce;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 1) ์ฌ๋ฌ ์ํ์ ๋ด๊ธฐ ์ํ ๋ฆฌ์คํธ ์์ฑ
// List ์ธํฐํ์ด์ค๋ก ์ ์ธํ๋ฉด ๋์ค์ ๊ตฌํ์ฒด(ArrayList ๋ฑ)๋ฅผ ๋ฐ๊ฟ๋ ์ฝ๋ ๋ณ๊ฒฝ์ด ์ ์
List<Product> products = new ArrayList<>();
// 2) Product ๊ฐ์ฒด ์์ฑ(new) ํ ๋ฆฌ์คํธ์ ์ถ๊ฐ
// -> "๋ฐ์ดํฐ(์ํ)"๋ฅผ ๊ฐ์ฒด๋ก ๋ง๋ค๊ณ , ์ฌ๋ฌ ๊ฐ๋ฅผ List๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด Step1 ํต์ฌ
products.add(new Product("Galaxy S25", 1200000, "์ต์ ์๋๋ก์ด๋ ์ค๋งํธํฐ", 50));
products.add(new Product("iPhone 16", 1350000, "Apple์ ์ต์ ์ค๋งํธํฐ", 30));
products.add(new Product("MacBook Pro", 2400000, "M3 ์นฉ์
์ด ํ์ฌ๋ ๋
ธํธ๋ถ", 15));
products.add(new Product("AirPods Pro", 350000, "๋
ธ์ด์ฆ ์บ์ฌ๋ง ๋ฌด์ ์ด์ดํฐ", 50));
// 3) ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ๊ธฐ ์ํ Scanner ์ค๋น
Scanner sc = new Scanner(System.in);
// 4) ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์๊ฐ "0(์ข
๋ฃ)"๋ฅผ ์
๋ ฅํ ๋๊น์ง ๋ฐ๋ณต ์คํ
while (true) {
// 4-1) ๋ฉ๋ด ์ถ๋ ฅ
System.out.println("[ ์ค์๊ฐ ์ปค๋จธ์ค ํ๋ซํผ - ์ ์์ ํ ]");
// 4-2) ๋ฆฌ์คํธ์ ๋ค์ด์๋ Product๋ค์ ์ํํ๋ฉด์ ๋ฒํธ + ์ ๋ณด ์ถ๋ ฅ
for (int i = 0; i < products.size(); i++) {
Product p = products.get(i);
// ๋ฒํธ๋ ์ฌ๋์ด ๋ณด๊ธฐ ์ข๊ฒ 1๋ถํฐ ์์ํ๊ฒ ์ถ๋ ฅ (์ธ๋ฑ์ค๋ 0๋ถํฐ์ง๋ง)
// %,d -> ์ซ์์ ์ฝค๋ง(,)
// %-12s -> ๋ฌธ์์ด ์ผ์ชฝ ์ ๋ ฌ(์ถ๋ ฅ ์ ๋ ฌ ์์๊ฒ)
System.out.printf("%d. %-12s | %,d์ | %s%n",
i + 1, p.getName(), p.getPrice(), p.getDescription());
}
// 4-3) ์ข
๋ฃ ๋ฉ๋ด
System.out.println("0. ์ข
๋ฃ | ํ๋ก๊ทธ๋จ ์ข
๋ฃ");
// 5) ์ฌ์ฉ์ ์
๋ ฅ ๋ฐ๊ธฐ
System.out.print("> ");
int input = sc.nextInt();
// 6) ์
๋ ฅ๊ฐ์ ๋ฐ๋ผ ๋ถ๊ธฐ ์ฒ๋ฆฌ
if (input == 0) {
System.out.println();
System.out.println("์ปค๋จธ์ค ํ๋ซํผ์ ์ข
๋ฃํฉ๋๋ค.");
break; // while ํ์ถ(ํ๋ก๊ทธ๋จ ์ข
๋ฃ)
}
// 7) ์ ์ ๋ฒ์(1~์ํ๊ฐ์) ์ฒดํฌ
if (input >= 1 && input <= products.size()) {
Product selected = products.get(input - 1); // ๋ฒํธ(1~) -> ์ธ๋ฑ์ค(0~) ๋ณํ
System.out.println();
System.out.printf("์ ํํ ์ํ: %s | %,d์ | %s | ์ฌ๊ณ : %d๊ฐ%n%n",
selected.getName(),
selected.getPrice(),
selected.getDescription(),
selected.getStock()
);
} else {
// 8) ์์ธ ์
๋ ฅ ์ฒ๋ฆฌ
System.out.println();
System.out.println("์๋ชป๋ ์
๋ ฅ์
๋๋ค. ๋ค์ ์ ํํด์ฃผ์ธ์.\n");
}
}
// 9) ์์ ์ ๋ฆฌ
sc.close();
}
}
๊ฒฐ๊ณผ

ํ๋ก๊ทธ๋จ ์คํ ์ ์ ์์ ํ ๋ชฉ๋ก์ด ์ถ๋ ฅ๋๊ณ ,
๋ฒํธ๋ฅผ ์
๋ ฅํ๋ฉด ํด๋น ์ํ ์ ๋ณด๊ฐ ์ถ๋ ฅ๋๋ค.
๋ํ 0 ์
๋ ฅ ์ ์ข
๋ฃ๋๋ค.
'๐ฅ ๋ด์ผ๋ฐฐ์์บ ํ > ๐ ๊ณผ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ์ปค๋จธ์ค ๊ณผ์ Step3 (0) | 2026.01.28 |
|---|---|
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ์ปค๋จธ์ค ๊ณผ์ Step2 (0) | 2026.01.28 |
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ๊ณ์ฐ๊ธฐ๊ณผ์ Step3 (0) | 2026.01.27 |
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ๊ณ์ฐ๊ธฐ ๊ณผ์ Step2 (0) | 2026.01.27 |
| [๋ด์ผ๋ฐฐ์์บ ํ Spring_3๊ธฐ] CH2 ๊ณ์ฐ๊ธฐ ๊ณผ์ Step1 (0) | 2026.01.27 |