์๊ฐํด๋ณด๊ธฐ
Step 4 ์๊ตฌ์ฌํญ์ ์ฝ์ด๋ณด๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์๋๋ผ, ์ด๋ฏธ ๋ง๋ค์ด์ง ๊ฐ์ฒด๋ค์ ๋ ์์ ํ๊ฒ ๋ง๋๋ ๋ฐ ์๋ค๊ณ ์๊ฐํ๋ค.
ํ๋์ ์ง์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ๋ง๊ณ , Getter๋ฅผ ํตํด์๋ง ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ํ๊ณ , ๊ฐ์ฒด์ ๋ด๋ถ ์ํ๋ฅผ ์ธ๋ถ์์ ํจ๋ถ๋ก ๋ณ๊ฒฝํ์ง ๋ชปํ๊ฒ ํ๋ ์บก์ํ ๊ฐ๋ ์ ์ฝ๋๋ก ์ง์ ์ ์ฉํด๋ณด๋ ๋จ๊ณ๋ผ๊ณ ์๊ฐํ๋ค.
์ค๊ณ
- ๋ชจ๋ ํ๋๋ private๋ก ์ค๊ณ
- ์ธ๋ถ์์ ์ฝ์ด์ผ ํ๋ ๊ฐ๋ง getter ์ ๊ณต
- setter๋ ์ต์ํํ๊ฑฐ๋ ์ฌ์ฉํ์ง ์์
- ์ปฌ๋ ์ ํ๋๋ ๊ทธ๋๋ก ๋ ธ์ถํ์ง ์์
๊ฐ์ฒด ๋ด๋ถ ์ํ๋ฅผ ๊ฐ์ฒด ์ค์ค๋ก ๋ณดํธํ๋๋ก ์ค๊ณ
Product ํด๋์ค
Product ํด๋์ค์์๋ ์ํ์ ๊ธฐ๋ณธ ์ ๋ณด์ ์ฌ๊ณ ๋ฅผ ํ๋๋ก ๊ฐ์ง๊ณ ์๋ค.
๋ชจ๋ ํ๋๋ฅผ private๋ก ์ ์ธํ๊ณ ์ธ๋ถ์์๋ getter๋ฅผ ํตํด์๋ง ๊ฐ์ ํ์ธํ ์ ์๋๋ก ํ๋ค.
Product.java ์ ์ฒด ์ฝ๋
package kr.spartaclub.com.example.commerce;
public class Product {
private final String name;
private final int price;
private final String description;
private int stock;
public Product(String name, int price, String description, int stock) {
this.name = name;
this.price = price;
this.description = description;
this.stock = stock;
}
public String getName() { return name; }
public int getPrice() { return price; }
public String getDescription() { return description; }
public int getStock() { return stock; }
}
Category ํด๋์ค
Category ํด๋์ค๋ ์นดํ
๊ณ ๋ฆฌ ์ด๋ฆ๊ณผ ํด๋น ์นดํ
๊ณ ๋ฆฌ์ ์ํ ์ํ ๋ชฉ๋ก์ ๊ด๋ฆฌํ๋ค.
์ํ ๋ฆฌ์คํธ๋ ์ธ๋ถ์์ ์ง์ ์์ ๋์ง ์๋๋ก ์ค๊ณํ์ฌ, ๋ด๋ถ ์ปฌ๋ ์
์ ๋ณดํธํ๋ ๊ตฌ์กฐ๋ก ๊ฐ์ ํ๋ค.
์ธ๋ถ ์ฝ๋์์ ๋ด๋ถ ์ปฌ๋ ์ ์ ๋ณ๊ฒฝํ๋ ์ํฉ์ ๋ฐฉ์งํ ์ ์์
Category.java ์ ์ฒด ์ฝ๋
package kr.spartaclub.com.example.commerce.step4;
import kr.spartaclub.com.example.commerce.Product;
import java.util.List;
// ํ๋์ ์นดํ
๊ณ ๋ฆฌ(์ ์์ ํ, ์๋ฅ, ์ํ)๋ฅผ ํํํ๋ ๊ฐ์ฒด
// ์นดํ
๊ณ ๋ฆฌ ์ด๋ฆ๊ณผ ํด๋น ์นดํ
๊ณ ๋ฆฌ์ ์ํ ์ํ ๋ชฉ๋ก์ ํจ๊ป ๊ด๋ฆฌํ๋ค.
public class Category {
// ์นดํ
๊ณ ๋ฆฌ ์ด๋ฆ - ์ธ๋ถ์์ ์ง์ ๋ณ๊ฒฝํ์ง ๋ชปํ๋๋ก private + final
private final String name;
// ํด๋น ์นดํ
๊ณ ๋ฆฌ์ ์ํ ์ํ ๋ฆฌ์คํธ - ์ธ๋ถ์์ ์ง์ ์ ๊ทผ ๋ถ๊ฐ
private final List<Product> products;
/**
* Category ์์ฑ์
* @param name ์นดํ
๊ณ ๋ฆฌ ์ด๋ฆ
* @param products ํด๋น ์นดํ
๊ณ ๋ฆฌ์ ํฌํจ๋ ์ํ ๋ชฉ๋ก
*/
public Category(String name, List<Product> products) {
this.name = name;
this.products = products;
}
// ์นดํ
๊ณ ๋ฆฌ ์ด๋ฆ ์กฐํ
public String getName() {
return name;
}
// ์นดํ
๊ณ ๋ฆฌ์ ์ํ ์ํ ๋ชฉ๋ก ์กฐํ
public List<Product> getProducts() {
return products;
}
}
Customer ํด๋์ค
Customer ํด๋์ค๋ ๊ณ ๊ฐ์ ์ด๋ฆ, ์ด๋ฉ์ผ, ๋ฑ๊ธ, ๋์ ์ฃผ๋ฌธ ๊ธ์ก ์ ๋ณด๋ฅผ ๊ฐ์ง๋ค.
๋ชจ๋ ํ๋๋ฅผ private์ผ๋ก ์ ์ธํ๊ณ getter๋ง ์ ๊ณตํ์ฌ ์ธ๋ถ์์ ์ง์ ์์ ํ์ง ๋ชปํ๋๋ก ๊ตฌํํ๋ค.
Customer.java ์ ์ฒด ์ฝ๋
package kr.spartaclub.com.example.commerce.step4;
// Customer ํด๋์ค
// ๊ณ ๊ฐ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด
public class Customer {
// ๊ณ ๊ฐ ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ์ ์์ฑ ํ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฏ๋ก final
private final String name;
private final String email;
// ๊ณ ๊ฐ ๋ฑ๊ธ๊ณผ ๋์ ์ฃผ๋ฌธ ๊ธ์ก
private String grade;
private int totalOrderAmount;
// Customer ์์ฑ์
public Customer(String name, String email) {
this.name = name;
this.email = email;
this.grade = "BRONZE";
this.totalOrderAmount = 0;
}
// Getter ๋ฉ์๋๋ง ์ ๊ณต
public String getName() { return name; }
public String getEmail() { return email; }
public String getGrade() { return grade; }
public int getTotalOrderAmount() { return totalOrderAmount; }
}
๊ฒฐ๊ณผ

์บก์ํ๋ฅผ ์ ์ฉํ ์ดํ์๋ Step3์์ ๊ตฌํํ๋ ๊ธฐ๋ฅ๋ค์ ์ ์์ ์ผ๋ก ๋์ํ๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
๊ฐ์ฒด ๋ด๋ถ ๊ตฌํ์ ์์ ํ์ง๋ง ์ธ๋ถ์์๋ ๋์ผํ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์๊ณ ,
์ด๋ฅผ ํตํด ์บก์ํ์ ์ฅ์ ์ ์ง์ ์ฒด๊ฐํ ์ ์์๋ค.