์ด์ง€๋ฏผ์˜ ๊ฐœ๋ฐœ ๋…ธํŠธ

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•˜๋ฉฐ Java์™€ Spring์„ ์ค‘์‹ฌ์œผ๋กœ ํ•™์Šต ๊ธฐ๋ก์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค.

๐Ÿ”ฅ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/๐Ÿ“Œ ๊ณผ์ œ

[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Spring_3๊ธฐ] CH2 ์ปค๋จธ์Šค ๊ณผ์ œ Step2

jiiimni 2026. 1. 28. 11:50

์ƒ๊ฐํ•ด๋ณด๊ธฐ

Step2 ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฝ์–ด๋ณด๋‹ˆ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด Step1 ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์žˆ๋‹ค๊ณ  ๋А๊ผˆ๋‹ค.

Main ํด๋ž˜์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ์ž…๋ ฅ, ์ถœ๋ ฅ, ๋ฐ˜๋ณต, ์ข…๋ฃŒ ํ๋ฆ„์ด ๋ชจ๋‘ main ๋ฉ”์„œ๋“œ์— ๋ชฐ๋ ค ์žˆ์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ Step2์—์„œ๋Š” ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์˜€๋‹ค.


์„ค๊ณ„

Step2์—์„œ๋Š” ์—ญํ• ๊ณผ ์ฑ…์ž„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜๋ˆ„์—ˆ๋‹ค.

Main ํด๋ž˜์Šค

  • ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์ง€์ 
  • ์ƒํ’ˆ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
  • CommerceSystem ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ start() ํ˜ธ์ถœ

CommerceSystem ํด๋ž˜์Šค

  • ๋ฉ”๋‰ด ์ถœ๋ ฅ
  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ฒ˜๋ฆฌ
  • ๋ฐ˜๋ณต ๋ฐ ์ข…๋ฃŒ ์ œ์–ด
  • ์ƒํ’ˆ ์„ ํƒ ๋กœ์ง ์ฒ˜๋ฆฌ

CommerceSystem ํด๋ž˜์Šค

Step1์—์„œ๋Š” main ๋ฉ”์„œ๋“œ ์•ˆ์— while๋ฌธ๊ณผ scanner, ๋ฉ”๋‰ด ์ถœ๋ ฅ๊ณผ ์ž…๋ ฅ ๋ถ„๊ธฐ ๋กœ์ง์ด ๋ชจ๋‘ ๋“ค์–ด ์žˆ์—ˆ๋‹ค.
Step2์—์„œ๋Š” ์ด ํ๋ฆ„์„ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋กœ ๋ฌถ์–ด ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํ๋ฆ„์„ ์ฑ…์ž„์ง€๋Š” ๊ฐ์ฒด๋กœ ๋ถ„๋ฆฌํ–ˆ๋‹ค.

ํ•„๋“œ ์„ค๊ณ„

  • List<Product>: Main์—์„œ ๋งŒ๋“  ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ๊ด€๋ฆฌ
  • Scanner: ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ฒ˜๋ฆฌ

์ƒ์„ฑ์ž

public CommerceSystem(List<Product> products) {
    this.products = products;
}

Main์—์„œ ๋งŒ๋“  ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด CommerceSystem์— ์ „๋‹ฌํ•˜๋„๋ก ์„ค๊ณ„ํ–ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด CommerceSystem์€ ์ƒํ’ˆ์ด ์–ด๋””์„œ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€๋Š” ์•Œ ํ•„์š”๊ฐ€ ์—†๊ณ  ๊ทธ์ € ์ „๋‹ฌ๋ฐ›์€ ์ƒํ’ˆ ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•˜๋Š” ์—ญํ• ๋งŒ ํ•œ๋‹ค.

start() ๋ฉ”์„œ๋“œ

start() ๋ฉ”์„œ๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘์  ์—ญํ• ์„ ํ•œ๋‹ค.

  • ๋ฉ”๋‰ด ์ถœ๋ ฅ
  • ์ž…๋ ฅ ์ฒ˜๋ฆฌ
  • ์ข…๋ฃŒ ์กฐ๊ฑด ํŒ๋‹จ
    ์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ 0์ด ์ž…๋ ฅ๋˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.

CommerceSystem.java ์ „์ฒด์ฝ”๋“œ

package kr.spartaclub.com.example.commerce.step2;

import kr.spartaclub.com.example.commerce.Product;

import java.util.List;
import java.util.Scanner;

public class CommerceSystem {

    private final List<Product> products;
    private final Scanner sc = new Scanner(System.in);

    // ์ƒ์„ฑ์ž: Main์—์„œ ๋งŒ๋“  ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ „๋‹ฌ๋ฐ›์Œ
    public CommerceSystem(List<Product> products) {
        this.products = products;
    }

    // ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ๋ฉ”์„œ๋“œ
    public void start() {
        while (true) {
            printMenu();
            int input = sc.nextInt();

            if (input == 0) {
                System.out.println();
                System.out.println("์ปค๋จธ์Šค ํ”Œ๋žซํผ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.");
                break;
            }

            handleInput(input);
        }
    }

    // ๋ฉ”๋‰ด ์ถœ๋ ฅ
    private void printMenu() {
        System.out.println("[ ์‹ค์‹œ๊ฐ„ ์ปค๋จธ์Šค ํ”Œ๋žซํผ - ์ „์ž์ œํ’ˆ ]");

        for (int i = 0; i < products.size(); i++) {
            Product p = products.get(i);
            System.out.printf("%d. %-12s | %,d์› | %s%n",
                    i + 1, p.getName(), p.getPrice(), p.getDescription());
        }

        System.out.println("0. ์ข…๋ฃŒ           | ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ");
        System.out.print("> ");
    }

    // ์ž…๋ ฅ๊ฐ’ ์ฒ˜๋ฆฌ
    private void handleInput(int input) {
        if (input >= 1 && input <= products.size()) {
            Product selected = products.get(input - 1);

            System.out.println();
            System.out.printf(
                    "์„ ํƒํ•œ ์ƒํ’ˆ: %s | %,d์› | %s | ์žฌ๊ณ : %d๊ฐœ%n%n",
                    selected.getName(),
                    selected.getPrice(),
                    selected.getDescription(),
                    selected.getStock()
            );
        } else {
            System.out.println();
            System.out.println("์ž˜๋ชป๋œ ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ์„ ํƒํ•ด์ฃผ์„ธ์š”.\n");
        }
    }
}


Main ํด๋ž˜์Šค ๋ณ€ํ™”

step2 ์ดํ›„ Main ํด๋ž˜์Šค๋Š” ํ›จ์”ฌ ๋‹จ์ˆœํ•ด์กŒ๋‹ค.
while๋ฌธ, scanner, ์ž…์ถœ๋ ฅ ๋กœ์ง์ด ๋‹ค ์ œ๊ฑฐ๋˜์—ˆ๋‹ค.
Main์€ ์ด์ œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋Š” ์—ญํ• ๋งŒ ๋‹ด๋‹นํ•œ๋‹ค.

CommerceSystem system = new CommerceSystem(products);
system.start();

Main.java ์ „์ฒด์ฝ”๋“œ

package kr.spartaclub.com.example.commerce.step2;

import kr.spartaclub.com.example.commerce.Product;

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {

        List<Product> products = new ArrayList<>();

        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));

        // Step2 ํ•ต์‹ฌ
        CommerceSystem system = new CommerceSystem(products);
        system.start();
    }
}


๊ฒฐ๊ณผ

Step1๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉฐ,
๋‚ด๋ถ€ ๊ตฌ์กฐ๋งŒ ๊ฐœ์„ ๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.