📅 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 도전
- 오늘 작성한 코드 다시 작성해보기
- 변수명 개선 (더 직관적인 이름으로)
- 제네릭 활용해보기