카테고리 없음

[TIL] JAVA 새로운 과제 CH2 커머스

mooncommit 2026. 3. 26. 20:06

📅 2026.03.26

오늘 한 일

오늘 새로운 과제가 올라왔다! CH2 커머스 STEP1 🛒

계산기 필수과제에서 익혔던 기술들을 활용하는 과제라서, 처음 계산기 문제를 접했을 때보다 훨씬 수월하게 할 수 있었다.


시작하기 전에 문제를 보고 클래스를 그림으로 간단하게 정리해봤다.

클래스 다이어그램


오늘 작성한 코드

Product.java — 상품 클래스

상품명, 가격, 설명, 재고수량을 속성, 생성기, 기능으로 구현했다.

public class Product {
    String name;
    int price;
    String explain;
    int inventory;

    public Product(String name, int price, String explain, int inventory) {
        this.name = name;
        this.price = price;
        this.explain = explain;
        this.inventory = inventory;
    }

    public String getName() { return name; }
    public int getPrice() { return price; }
    public String getExplain() { return explain; }
    public int getInventory() { return inventory; }
}

Main.java — 커머스 플랫폼 실행

Product 객체를 만들고, List에 담아서 while 반복문으로 상품 목록을 출력한다. 0을 입력하면 종료!

List<Product> productList = new ArrayList<>();
productList.add(galaxy);
productList.add(iphone);
// ...

while (true) {
    int exitButton = 1;
    for (Product product : productList) {
        System.out.println(exitButton + ". " + product.getName() + " | " + product.getPrice() + "원");
        exitButton++;
    }
    System.out.println("0. 종료");
    int exit = sc.nextInt();
    if (exit == 0) break;
}

배운 점 & 깨달음

1. 제네릭 <>

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

<Product> 이 꺽쇠 안에 타입을 넣으면 그 타입만 담을 수 있는 리스트가 된다.
지금까지는 그냥 습관처럼 쓰고 있었는데, 제네릭을 제대로 이해할 수 있었다.

2. 참조변수 & Getter

처음에 product를 그냥 출력했더니 이상한 주소값이 나왔다.

project.Product@1b6d3586  // 이런 거 나왔을 때 당황

이유는 Java에서 객체는 힙(Heap) 영역에 올라가고, 변수는 그 힙 주소를 참조하는 참조변수이기 때문이다.
그냥 product를 출력하면 주소값이 나올 수밖에 없다.


그래서 Getter 메서드(getName(), getPrice() 등)를 통해 원하는 값을 꺼내야 한다.

// ❌ 이렇게 하면 주소값 출력
System.out.println(product);

// ✅ 이렇게 해야 실제 값 출력
System.out.println(product.getName() + " | " + product.getPrice() + "원");

실행 결과

실시간 커머스 플랫폼 - 전자제품


어려웠던 점

  • List<Product>ArrayList의 관계 — List는 인터페이스고, ArrayList가 그걸 구현한 클래스라는 개념이 처음엔 헷갈렸다
  • 참조변수를 출력했을 때 왜 주소값이 나오는지 → 힙 메모리 개념이랑 연결해서 이해하고 나서야 깨달았다.
  • 제네릭 <> 문법 — 그냥 따라 쓰던 걸 오늘 제대로 이해했다.

 

느낀 점

솔직히 계산기 과제 할 때 진짜 힘들었는데, 그때 시간 들어가며 열심히 했던 노력들이 오늘 커머스 STEP1에서 확실히 도움이 됐다.
처음 봤을 때 막막함이 훨씬 줄었다는 게 느껴지니까 내 자신도 놀랍고 뿌듯했다.

 

코드 주석도 내가 이해한 걸 그때그때 적어놓으니까 나중에 다시 봐도 잘 이해되는 것 같아서 앞으로도 잘 활용해야겠다.


내일 계획

  • 커머스 STEP2 도전
  • 오늘 작성한 코드 다시 작성해보기
  • 변수명 개선 (더 직관적인 이름으로)
  • 제네릭 활용해보기