[내일배움캠프] Java 기초 문법으로 만드는 커머스 플랫폼 Step2.

김재진·2025년 12월 17일

내일배움캠프

목록 보기
20/70

1. Step 2. 객체 지향 설계를 적용해 순서 제어를 클래스로 관리하기

  • CommerceSystem 클래스 생성하기
    • 설명: 커머스 플랫폼의 상품을 관리하고 사용자 입력을 처리하는 클래스입니다.
    • Product를 관리하는 리스트가 필드로 존재합니다.
    • main 함수에서 관리하던 입력과 반복문 로직은 이제 start 함수를 만들어 관리합니다.
    • List<Product> productsCommerceSystem 클래스 생성자를 통해 값을 할당합니다.
      • CommerceSystem 객체를 생성하고 사용하는 main 함수에서 객체를 생성할 때 값을 넘겨줍니다.
  • Step 1에서 사용한 클래스들 중 Main 클래스에서 관리하는 기능들을 CommerceSystem 클래스를 이용하여 따로 관리하여 객체 지향 설계를 시도 해보았다.

2. CommerceSystem 클래스

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

public class CommerceSystem implements  Runnable {

    @Override
    public void run() {
        List<Product> products = new ArrayList<>(); // 리스트 생성
        Scanner scanner = new Scanner(System.in); // 스캐너 생성
        
		// 상품 등록
        Product product1 = new Product("Galaxy S25", 1200000, "최신 안드로이드 스마트폰", 10);
        Product product2 = new Product("iPhone 16", 1350000, "Apple의 최신 스마트폰", 20);
        Product product3 = new Product("MacBook Pro", 2400000, "M3 칩셋이 탑재된 노트북", 5);
        Product product4 = new Product("AirPods Pro", 350000, "노이즈 캔슬링 무선 이어폰", 40);
        // 리스트에 추가
        products.add(product1);
        products.add(product2);
        products.add(product3);
        products.add(product4);
        
        // 터미널에 보여질 내용
        System.out.println("[ 실시간 커머스 플랫폼 - 전자제품 ]");
        int index = 1;
        for (Product product : products) {
            System.out.println(index + ". " + product.getName() + " | " + product.getPrice() + " | " + product.getDescription());
            index++;
        }
        System.out.println("0. 종료 | 프로그램 종료");
        String exit = scanner.nextLine();
        if (exit.equals("0")) {
            System.out.println("커머스 플랫폼을 종료합니다.");
        }
    }
}
  • Step1 에서 Main 클래스에 작성한 내용을 CommerceSystem 클래스로 옮겨 run() 메서드로 만들어서 활용하도록 만들었다.

3. Main 클래스

public class Main {

    public static void main(String[] args) {

        CommerceSystem commerceSystem = new CommerceSystem();
        Thread thread1 = new Thread(commerceSystem); // 스레드 생성

        thread1.start(); // 스레드 실행
    }
}
  • Main 클래스에서는 스레드를 실행하는 것 만으로 기능을 구현 할 수 있도록 간결하게 되어있다.

4. 마무리

  • 기능들을 따로 관리하는 클래스를 만드는 것이 나중에 코드를 수정하거나 보완할때 더 간편하고 오류가 적을 것 같다는 느낌을 직접적으로 느낄 수 있었다. 왜 여러개의 클래스를 따로 만드는지에 대해서 실습으로 알 수 있었다.
profile
개발공부 처음해보는 사람

0개의 댓글