๊ฐ์ฒด ์งํฅ ์ค๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ ์ฝ์ ๊ธฐ๋ฐ ์ปค๋จธ์ค ํ๋ซํผ์ ๋๋ค. ์ํ ๊ด๋ฆฌ, ์นดํ ๊ณ ๋ฆฌ, ์ฅ๋ฐ๊ตฌ๋, ์ฃผ๋ฌธ, ๊ด๋ฆฌ์ ๋ชจ๋๋ฅผ ๋จ๊ณ์ ์ผ๋ก ๊ตฌํํ๋ฉฐ Java OOP ๊ฐ๋ ๊ณผ ์์ธ ์ฒ๋ฆฌ, ์บก์ํ๋ฅผ ํ์ตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ Java์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ ์์น์ ์ ์ฉํ์ฌ ์ค์ ์ปค๋จธ์ค ํ๋ซํผ์ ํต์ฌ ๊ธฐ๋ฅ์ ์ฝ์ ํ๊ฒฝ์์ ๊ตฌํํ ํ์ต์ฉ ํ๋ก์ ํธ์ ๋๋ค.
๋ฉ์ธ์์คํ (CommerceSystem) ์ถ๋ ฅ๋ด๋น
์ํ(Product) ๊ด๋ฆฌ
์นดํ ๊ณ ๋ฆฌ(Category) ๊ตฌ์กฐ
์ฅ๋ฐ๊ตฌ๋(Cart) & ์ฃผ๋ฌธ(Order)
๊ด๋ฆฌ์ ๋ชจ๋ (MasterService)
๊ณ ๊ฐ(Customer)
๊ณ ๊ฐ๋ฑ๊ธ(CustomerGrade)
์์ธ ์ฒ๋ฆฌ ๋ฐ ์ ๋ ฅ ๊ฒ์ฆ
๊ฐ์ฒด ์งํฅ ์ค๊ณ (SRP, ์ฑ ์ ๋ถ๋ฆฌ)
ํด๋์ค ๊ฐ ํ๋ ฅ ๊ตฌ์กฐ ์ค๊ณ
์์ธ ์ฒ๋ฆฌ (try-catch, ์ปค์คํ ์์ธ)
์ปฌ๋ ์ ํ์ฉ (List, ArrayList)
์ ๋ ฅ ๊ฒ์ฆ ๋ฐ ์ฌ์ฉ์ ์ธํฐ๋์ ์ค๊ณ
์บก์ํ & ์ ๋ณด ์๋
๋ชฉํ
Product ํด๋์ค๋ฅผ ์์ฑํ์ฌ ์ฌ๋ฌ ์ํ์ ๊ด๋ฆฌ
List๋ฅผ ํ์ฉํ ์ํ ๋ชฉ๋ก ์ถ๋ ฅ
์ฃผ์ ๊ตฌํ
Product ํด๋์ค: ์ํ๋ช , ๊ฐ๊ฒฉ, ์ค๋ช , ์ฌ๊ณ ์๋ ํ๋
ArrayList๋ก ์ฌ๋ฌ ์ํ ๊ด๋ฆฌ
๋ฐ๋ณต๋ฌธ์ ํตํด ์ํ ๋ชฉ๋ก ์ถ๋ ฅ
๋ชฉํ
๋ชจ๋ ์ ๋ ฅ ๋ฐ ๋ก์ง์ CommerceSystem ํด๋์ค์์ ๊ด๋ฆฌ
start() ๋ฉ์๋๋ก ํ๋ก๊ทธ๋จ ์ง์ ์ ๋ถ๋ฆฌ
์ฃผ์ ๊ตฌํ
main ํจ์์์๋ CommerceSystem ๊ฐ์ฒด๋ง ์์ฑ
์ค์ ๋น์ฆ๋์ค ๋ก์ง์ start() ๋ด๋ถ์์ ์ฒ๋ฆฌ
๋ชฉํ
์ํ์ ์นดํ ๊ณ ๋ฆฌ ๋จ์๋ก ๊ด๋ฆฌ
๊ณ ๊ฐ ์ ๋ณด๋ฅผ ๊ฐ์ฒด๋ก ๋ถ๋ฆฌ
์ฃผ์ ๊ตฌํ Category
์นดํ ๊ณ ๋ฆฌ ์ด๋ฆ + List ๊ด๋ฆฌ
์ ์์ ํ / ์๋ฅ / ์ํ ๊ตฌ์กฐ
Customer
๊ณ ๊ฐ๋ช , ์ด๋ฉ์ผ, ๋ฑ๊ธ, ๋์ ์ฃผ๋ฌธ ๊ธ์ก ํ๋
๊ณ ๊ฐ ๋ฑ๊ธ์ ๋์ ์ฃผ๋ฌธ ๊ธ์ก ๊ธฐ์ค์ผ๋ก ๊ฒฐ์
๋ชฉ์
๋ชจ๋ ํด๋์ค์ ํ๋๋ฅผ private์ผ๋ก ๋ณดํธ
Getter / Setter๋ฅผ ํตํ ์ ๊ทผ
ํจ๊ณผ
๊ฐ์ฒด ๋ด๋ถ ์ํ ๋ณดํธ
์ ์ง๋ณด์ ๋ฐ ํ์ฅ์ฑ ํฅ์
์ฃผ์ ๊ธฐ๋ฅ
์ํ ์ฅ๋ฐ๊ตฌ๋ ์ถ๊ฐ
์๋ ์ ๋ ฅ ๋ฐ ์ฌ๊ณ ๊ฒ์ฆ
์ฅ๋ฐ๊ตฌ๋ ์ถ๋ ฅ
์ด ๊ธ์ก ๊ณ์ฐ
์ฃผ๋ฌธ ์๋ฃ ์ ์ฌ๊ณ ์ฐจ๊ฐ
๊ด๋ฆฌ์ ์ ์ฉ ๊ธฐ๋ฅ์ MasterService ํด๋์ค๋ก ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌ
๊ด๋ฆฌ์ ์ธ์ฆ
๋น๋ฐ๋ฒํธ ์ ๋ ฅ (3ํ ์คํจ ์ ๋ฉ์ธ ๋ณต๊ท)
์ํ ๊ด๋ฆฌ ๊ธฐ๋ฅ
์ํ ์ถ๊ฐ
์ํ ์์
์ํ ์ญ์
๊ฐ์ ์นดํ ๊ณ ๋ฆฌ ๋ด ์ค๋ณต ์ํ๋ช ๊ฒ์ฆ
์ญ์ ๋ ์ํ์ ์ฅ๋ฐ๊ตฌ๋์์๋ ์ ๊ฑฐ