🗒️ 플로우차트
1단계: if문 기초
- BMI 계산 후 체중 판별

2단계: if문 응용 + 중첩
- 윤년판별기

1️⃣ Step1 : 객체 지향 설계를 적용해 상품 관리 시스템을 프로그래밍
1. Product 클래스
- 개별 상품을 관리하는 클래스
- 상품명, 가격, 설명, 재고수량 필드 생성
// 상품명, 가격, 설명, 재고수량 필드 만들기
private String name;
private int price;
private String description;
private int stock;
- prive로 직접 접근을 막음 (캡슐화)
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;
}
- getter을 이용하여 Main 클래스에 정보 출력
2. Main 클래스
- 프로그램 시작 전에 필요한 것들 준비하는 곳 / 셋팅 담당
- List를 선언하고 Product 제품 세팅, 리스트에 추가
// 리스트 선언, product 추가
List<Product> products = new ArrayList<>();
// 제품 세팅
products.add(new Product(
"Galaxy S25",
1200000,
"최신 안드로이드 스마트폰",
10
));
products.add(new Product(
"iPhone 16",
1350000,
"Apple의 최신 스마트폰",
5
));
products.add(new Product(
"MacBook Pro",
2400000,
"M3 칩셋이 탑재된 노트북",
7
));
products.add(new Product(
"AirPods Pro",
350000,
"노이즈 캔슬링 무선 이어폰",
13
));
- 반복문(for)을 통해 products 탐색 / 0 입력 시 종료
Scanner sc = new Scanner(System.in);
//제목
System.out.println("[ 실시간 커머스 플랫폼 - 전자제품 ]");
// 상품 목록 출력(List > size 이용)
for (int i = 0; i < products.size(); i++){
Product a = products.get(i);
System.out.println(
(i+1) + ". " + a.getName() + " | " + a.getPrice() + "원" + " | " +a.getDescription()
);
}
// 종료
System.out.println("0. 종료 | 프로그램 종료");
String exit = sc.nextLine();
if(exit.equals("0")){
System.out.println("커머스 플랫폼을 종료합니다.");
}
}
- 실행(run)
[ 실시간 커머스 플랫폼 - 전자제품 ]
1. Galaxy S25 | 1200000원 | 최신 안드로이드 스마트폰
2. iPhone 16 | 1350000원 | Apple의 최신 스마트폰
3. MacBook Pro | 2400000원 | M3 칩셋이 탑재된 노트북
4. AirPods Pro | 350000원 | 노이즈 캔슬링 무선 이어폰
0. 종료 | 프로그램 종료
0
커머스 플랫폼을 종료합니다.
- 트러블 슈팅
: 0을 입력받고 종료하기 위해
int exit = Integer.parseInt(sc.nextLine());
로 이용하려 했으나 오류가 발생하여 String 이용 ( "0" 또한 문자열이기 때문)
2️⃣ Step2 : 객체 지향 설계를 적용해 순서 제어를 클래스로 관리
1. CommerceSystem 클래스
- 커머스 플랫폼의 상품을 관리하고 사용자 입력을 처리하는 클래스
- Product를 관리하는 리스트 필드 생성
private List<Product> products;
- products 상품목록 입력받기
// Main = 상품 준비, CommerceSystem = 상품 사용
public CommerceSystem(List<Product> products){
this.products = products;
}
- start() 함수로 입력, 반복문 관리
public class CommerceSystem {
public void start() {
Scanner sc = new Scanner(System.in);
//제목
System.out.println("[ 실시간 커머스 플랫폼 - 전자제품 ]");
// 상품 목록 출력(List > size 이용)
for (int i = 0; i < products.size(); i++){
Product a = products.get(i);
System.out.println(
(i+1) + ". " + a.getName() + " | " + a.getPrice() + "원" + " | " +a.getDescription()
);
}
// 종료
System.out.println("0. 종료 | 프로그램 종료");
String exit = sc.nextLine();
if(exit.equals("0")){
System.out.println("커머스 플랫폼을 종료합니다.");
}
}
public class Main {
public static void main(String[] args) {
CommerceSystem system = new CommerceSystem(products);
system.start();
3️⃣ Step3 : 객체 지향 설계를 적용해 상품 카테고리와 고객 관리를 클래스 기반으로 관리
1. Category 클래스
- Product 클래스를 관리하는 클래스
- 카테고리 필드 생성 > 반환
public class Category {
// 카테고리 이름 필드(전자제품 등)
private String name;
// 카테고리에 속한 상품들
private List<Product> products = new ArrayList<>();
// 카테고리 이름 필드
public Category(String name){
this.name = name;
this.products = new ArrayList<>();
}
// 카테고리 이름 반환
public String getName(){
return name;
}
// 카테고리 상품들 반환
public List<Product> getProducts(){
return products;
}
}
2. Main 클래스
- 셋팅 담당 / 매장 준비
- 카테고리 생성 > 상품 담기 > 리스트로 묶고 CommerceSystem 으로 넘기기
public class Main {
public static void main(String[] args) {
// 리스트 선언, product 추가
List<Product> products = new ArrayList<>();
// 카테고리 생성
Category electronics = new Category("전자제품");
Category cloth = new Category("의류");
Category food = new Category("식품");
// 카테고리에 상품 담기
electronics.getProducts().add(new Product(
"Galaxy S25",
1200000,
"최신 안드로이드 스마트폰",
10
));
electronics.getProducts().add(new Product(
"iPhone 16",
1350000,
"Apple의 최신 스마트폰",
5
));
electronics.getProducts().add(new Product(
"MacBook Pro",
2400000,
"M3 칩셋이 탑재된 노트북",
7
));
electronics.getProducts().add(new Product(
"AirPods Pro",
350000,
"노이즈 캔슬링 무선 이어폰",
13
));
// 카테고리 리스트로 묶기
List<Category> categories = new ArrayList<>();
categories.add(electronics);
categories.add(cloth);
categories.add(food);
// start() 함수 / 커머스 시스템으로 넘기기
CommerceSystem system = new CommerceSystem(categories);
system.start();
}
}
3. CommerceSystem 클래스
- 반복문을 이용하여 카테고리, 카테고리 내 제품 출력
public class CommerceSystem {
// 카테고리 목록 관리
private List<Category> categories;
public CommerceSystem(List<Category> categories) {
this.categories = categories;
}
// start() 메서드로 관리
public void start() {
Scanner sc = new Scanner(System.in);
while (true) {
// 카테고리 출력
System.out.println("[ 실시간 커머스 플랫폼 메인 ]");
for (int i = 0; i < categories.size(); i++) {
System.out.println((i + 1) + ". " + categories.get(i).getName());
}
// 종료
System.out.println("0. 종료 | 프로그램 종료");
// 카테고리 숫자 입력받기
int categoryChoice = Integer.parseInt(sc.nextLine());
if (categoryChoice == 0) {
System.out.println("커머스 플랫폼을 종료합니다.");
break;
}
// 선택한 카테고리
Category selecCategory = categories.get(categoryChoice - 1);
// 카테고리 내 제품 보여주기
List<Product> products = selecCategory.getProducts();
for (int i = 0; i < products.size(); i++) {
Product p = products.get(i);
System.out.println((i + 1) + ". " + p.getName() + " | " + p.getPrice() + "원" + " | " + p.getDescription());
}
System.out.println("0. 뒤로가기");
// 제품 숫자 입력받기
int productChoice = Integer.parseInt(sc.nextLine());
if (productChoice == 0) {
continue;
}
Product selecProduct = products.get(productChoice -1);
System.out.println("선택한 상품: "+ selecProduct.getName()+" | "+selecProduct.getPrice()+"원"+" | "
+selecProduct.getDescription()+" | "+selecProduct.getStock()+"개");
}
}
}
- 트러블 슈팅: 전자제품 카테고리 내에 0(뒤로가기) 입력 시 continue; 가 없을 때 오류 발생
'🔌 SPARTA > Assignments' 카테고리의 다른 글
| [Spring 과제] 일정 관리 앱 Develop (0) | 2026.02.13 |
|---|---|
| [Spring 과제] 일정 관리 앱 만들기 (0) | 2026.02.05 |
| [Java] 계산기 과제 2회차 : 1회차와의 차이점(2) (0) | 2026.01.21 |
| [Java] 계산기 과제 2회차 : 1회차와의 차이점(1) (0) | 2026.01.19 |
| [Java 문법] 계산기 과제 (0) | 2026.01.12 |