๐ 3์ฃผ์ฐจ ๋ชฉํ
- <๊ตฌํ → ํ ์คํธ ์ฝ๋ → ์ปค๋ฐ> ์์ ์งํค๊ธฐ
- ๊ฐ์ฒด์งํฅ ์ฝ๋๋ฅผ ์ํด ๋ ธ๋ ฅํ๊ธฐ
- 1์ฃผ์ฐจ ๋ฐ 2์ฃผ์ฐจ ํผ๋๋ฐฑ๋ฐ์ํ๊ธฐ
- ์์ด ๊ฐ๋๋๋ก ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ง๊ณ ๋ฏธ๋ฆฌ ์๊ฐํ๊ธฐ
๐ ๋ก๋ ๊ฒ์ ๊ตฌํ
โ ์ฝ๋์ ์ ๋ฌธ์ ๋๋ค.
โ ์ฌ์ฉ์๋ฅผ ์ํ ์ด๋ค ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ฑด์ง ์๊ฐํ๊ธฐ
์ด๋ฒ ์๊ตฌ์ฌํญ์ 1๋ฑ ๋น์ฒจ๊ธ(20์ต)๋งํผ์ ๋์ ์ฐ๋ฉด ์ผ๋งํผ์ ์์ต๋ฅ ์ด ์๊ธธ์ง ๊ถ๊ธํดํ๋ ์ฌ์ฉ์๊ฐ ์ด ๋ก๋๊ฒ์์ ๋ง์ด ์ด์ฉํ ๊ฒ์ด๋ผ ์๊ฐํ๊ณ ์ด์ ๋ง๊ฒ ์ค๊ณ์ ์์ธ์ฒ๋ฆฌ๋ฅผ ์งํํ๋ค.
โ MVC ์ฌ์ฉ
[ํ์ต]
3์ฃผ์ฐจ ์๊ตฌ์ฌํญ์ "๋๋ฉ์ธ ๋ก์ง์ ๋ํด ๋จ์ํ ์คํธ ํ๊ธฐ, ๋๋ฉ์ธ ๋ก์ง๊ณผ UI ๋ก์ง์ ๋ถ๋ฆฌํด๋ผ" ๊ฐ ๋์๊ธฐ ๋๋ฌธ์ ๋๋ฉ์ธ ๋ก์ง์ ๋ํด ์์๋ดค๋ค.
์ด ๊ธ์์ ์ํ ์ ๋ฌด๋ฅผ ์์๋ก ์ด๋ค ๋ก์ง์ด ๋๋ฉ์ธ์ด๊ณ , UI ์ธ์ง ์ค๋ช ํด์ค์ ๋์์ ๋ง์ด ๋ฐ์๋ค.
๋๋ฉ์ธ๋ก์ง์ ๋ํด ์ ํํ ๋ชจ๋ฅด๋ฉด ๊ผญ!! ์ฝ์ด ๋ณด๊ธธ ๊ฐ์ถํ๋ค.
๋์ค์ฝ๋์ ๊ธ์ ์ฝ์ผ๋ฉฐ ์๊ฒ ๋ MVCํจํด์ ๋๋ฉ์ธ๋ก์ง๊ณผ UI๋ก์ง๋ค์ ๋ถ๋ฆฌํ๊ธฐ ์ํด 3์ฃผ์ฐจ ๋ฏธ์ ์ ์ ์ฉํ๊ณ ์ถ์๋ค.
๋ค์์ MVC ํจํด ํ์ต์ ์ฐ์๋ ๋ธ๋ก๊ทธ ๊ธ์ด๋ค.
์ํํธ์จ์ด ์ค๊ณ์ ๊ทผ๋ณธ ์์น, MVC์ฐฝ์๊ฐ์ ๋งํ๋ MVC์ ๋ณธ์ง
๋ค์์ MVC ํจํด ํ์ต์ ์ฐ์๋ 10๋ถ ํ ์ฝํก์ด๋ค.
ํ์ตํ ๊ฒฐ๊ณผ MVCํจํด์ ๋น์ง๋์ค ๋ก์ง์ธ Model๊ณผ ๋ณ๊ฒฝ์ ์ทจ์ฝํ View์ ๋ถ๋ฆฌ๋ฅผ ํตํด ์ ์ง๋ณด์ ๋ฐ ๋ณ๊ฒฝ์ ์ฉ์ดํจ์ ์ํด ๊ณ ์๋ ๋์์ธ ํจํด ์ค ํ๋์ธ ๊ฒ์ ์๊ฒ ๋์๋ค.
๋์ ์ฝ๋๊ฐ MVCํจํด ๋ณธ์ง์ ์ ์งํฌ ์ ์๋๋ก ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ์ง์คํ๋ค.
Model : ์ ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด ์ธ ์ ์๋ ์ญํ
View : ์ฌ์ฉ์์ ์ธํฐ๋์ ํ๋ ์ญํ
Controller : View์ Model์ ์ฐ๊ฒฐํ๋ ์ญํ
[์ ์ฉ ๊ณผ์ ]
์ ํ๋ธ์ ๋ธ๋ก๊ทธ๋ค์ ์ฌ๋ฌ ๊ฐ์ ํญ์ ๋์ฐ๊ณ , ์์ ์ ์ฝ๋์ ๋ด ์ฝ๋๋ฅผ ๋น๊ตํด ๊ฐ๋ฉด์ ์ฒ์ฒํ ๊ตฌํํ๋ค.
์ ๋ฆฌ๋ ์์์ 8๋ถ 26์ด์ ๋์ค๋ "MVC์ 5๊ฐ์ง ์์น" ์ ๋ณด๋ฉฐ Model๊ณผ View๊ฐ์ ๋ถ๋ฆฌ๊ฐ ์ ๋์๋์ง ํ์ธํ๊ณ ,
ํด๋ฆฌ&์ ๋ ์์์ 6๋ถ 48์ด์ ๋์ค๋ "์ด๊ฒ ๋ฐ๋ก Controller๋ค." ์ ๋ฒ ๋ฃจ์ค๋ ์์์ 5๋ถ 17์ด์ ๋์ค๋ "Controller" ๋ฅผ ํตํด Controller๋ ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ์ฐ๊ฒฐํ๋ ์ญํ ๋ง ํ๊ณ ์๋์ง ํ์ธํ๋ค.
ํนํ, ์ด๋ฒ์ฃผ ๋ฏธ์ ์ ๊ฐ์ฒด์งํฅ ์ฝ๋๋ก ๊ตฌํํ๊ธฐ ์ํด ์ฝ๋ ํ ์ค์ ๊ตฌํํ๋๋ผ๋ ๊ฐ์ฒด๊ฐ ๋งก์ ์ฑ ์๊ณผ ์ํํ ๋ฉ์์ง์ ๋ํด ์๊ฐํ ์๊ฐ์ ์ถฉ๋ถํ ๊ฐ์ก๊ณ <๊ตฌํ → ํ ์คํธ ์ฝ๋ → ์ปค๋ฐ> ์์์ ํ์ตํ MVCํจํด๋ ์งํค๋ ค๊ณ ๋ ธ๋ ฅํ๊ธฐ์ ๊ตฌํ ์๋๊ฐ ๋งค์ฐ ๋๋ ๋ค.
[์ ์ฉ ๊ฒฐ๊ณผ]
์ ์ฉํ๋ฉฐ 2๊ฐ์ ๊ณ ๋ฏผ์ ํด๊ฒฐํด์ ์๊ฐํ๋ค.
[์ ๋ ฅ๊ฐ์ ๊ฒ์ฆ์ ์ด๋์ ํ ์ง์ ๋ํ ๊ณ ๋ฏผ ํด๊ฒฐ]
View๋ Model์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋๋ง ์ฐ๊ฒฐ์ด ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ View์์ ์ ๋ ฅ๊ฐ ๊ฒ์ฆ์ ํ๋ฉด ์๋๋ค๊ณ ์๊ฐํ๊ณ , Controller๋ View์ Model์ ์ฐ๊ฒฐํ๋ ์ญํ ์ด๋ผ์ Controller๋ ์๋๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ๋์, Model์์ ์ ๋ ฅ๊ฐ์ธ String ํ์ ์ ๊ฒ์ฆํ๊ธฐ๋ก ํ๋ค.
์ด ๋, ์์ฑ์์์ ๊ฒ์ฆ์ ํ๋๋ก ํ๋๋ฐ ๊ทธ ์ด์ ๋ ๊ฒ์ฆ์ ํตํด์ ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด ์ง๋ฉด ์ด ๊ฐ์ฒด๋ ๋ณด์ฅ๋ ๊ฐ์ฒด๋ ๊ฒ์ ์๋ฏธํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
์์๋ก, ์ฌ์ฉ์ ์ ๋ ฅ์ผ๋ก ์์ฑ๋๋ Price ๊ฐ์ฒด์ด๋ค.
๋ง์ฝ, ์ด ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค๋ฉด ์ฌ์ฉ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฅํ๋ค๋ ๊ฒ์ ๋ณด์ฅํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ง์น ์ผ๊ธ์ปฌ๋ ์ ์ ์ฌ์ฉํ ๊ฐ์ฒด๋ ๋ณด์ฅ๋ ๊ฐ์ฒด์ธ ๊ฒ์ฒ๋ผ ๋ง์ด๋ค.
["์ฌ์ฉ์ ์ ๋ ฅ์ด ์ค๋ฅ๋ฉด ๋ค์ ๊ทธ ๋ถ๋ถ๋ถํฐ ๋ฐ์์ผ ํ๋ค" ไธญ 3์ฃผ์ฐจ ์๊ตฌ์ฌํญ]
์ด ์๊ตฌ์ฌํญ ์ฒ๋ฆฌํ๋๊ฒ ์ง์ง ์ด๋ ค์ ๋ค.
new๋ก ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ค์ ๋ฐ์ง ์์ผ๋ฉด ์๋ก์ด ์ฌ์ฉ์์ ๋ ฅ์ด ๋ค์ด์๋ ์ด์ ์ฌ์ฉ์์ ๋ ฅ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋ ์ ๋ ฅ ๋ฐ์ดํฐ๊ฐ ๊ทธ๋๋ก ๋จ์์๊ฒ ๋๋ค (๋ก๋ ๊ฐ๊ฒฉ1500์์ ์ ๋ ฅํ๊ณ , error ๋ ํ, 3000์์ ์ ๋ ฅํ๋ฉด ๋๋ค๋ก๋๊ฐ 1๊ฐ๋ง ์์ฑ๋๋ค).
๊ทธ๋์, ์ฌ์ฉ์ ์ ๋ ฅ์ new๋ก ๋ค์ ๋ฐ์์ผ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด Model, View, Controller ์ค ์ด๋์ ์ฌ์ฉ์ ์ ๋ ฅ์ new ๋ก ํ ๊ฒ์ธ๊ฐ?
์ฒ์์๋ ๊ฐ๊ฒฉ์ ์ ๋ ฅ ๋ฐ๋ InputView ์์ new Price ๊ฐ์ฒด๋ฅผ ์์ฑํด์ Controller ์๊ฒ ๋์ด์ฃผ๋ ์์ผ๋ก ํ์ง๋ง, View๋ Model ์ ๋ฐ์ดํฐ์ ์ง์ ๊ด์ฌํ๋ฉด ์๋๋ค๋ ๊ท์น์ ๋ณด๊ณ , ๋ค์ ๊ณ ๋ฏผํ์๋ค.
๋ง์ ๊ณ ๋ฏผ ๋์, "MVC ์ฐฝ์์๊ฐ ๋งํ๋ MVC์ ๋ณธ์ง"์ด๋ ๊ธ์ MVC์ค๋ฌ์ด ํ๋ ฅ์์ ๋ต์ ์ฐพ๊ฒ ๋์๋ค.
"๋ทฐ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ์ฌ์ฉ์๊ฐ ์ธํฐ๋์ ์ ํ ์ ์๊ฒ ๋ง๋ค์ด์ฃผ๋ ์ต์ํ์ ์ฝ๋๋ง ๋ค์ด๊ฐ๋ค.
๋๋จธ์ง๋ ์ปจํธ๋กค๋ฌ์๊ฒ ์์ํ๋ค."
๊ทธ๋์, ์๋ ์ฝ๋ ์ฒ๋ผ Controller ์์ Price ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , Price ์๊ฒ ์ฌ์ฉ์ ์ ๋ ฅ(String ํ์ )์ ๊ฒ์ฆํ์ฌ ์ฌ์ฉ์ ์ ๋ ฅ์ new ๋ก ๋ง๋ค์๋ค.
๊ทธ๋ฆฌ๊ณ , Price ๊ฐ์ฒด์ ์ค๋ฅ๊ฐ ์๋ค๋ฉด Controller ์์ View์๊ฒ ๋ค์ ์ ๋ ฅํ๋ผ๋ ๋ฉ์์ง๋ฅผ ์ฃผ๋๋ก ๊ตฌํํ๋ค.
์ด๋ฅผ ํตํด ์์ฑ๋ Price ๋ ๋ณด์ฅ๋ ๊ฐ์ฒด์ด์ ๊น๋ํ ๋ฐ์ดํฐ๋ง ์ฌ์ฉํ ์ ์๋ค ์๊ฐํ๊ณ , View ๋ ์ต์ํ์ ์ฝ๋๋ก ์ฌ์ฉ์์ ์ธํฐ๋์ ๋ง ํ ์ ์๋ค๊ณ ์๊ฐํ๋ค.
private Price createPrice() {
try {
return new Price(InputView.inputPriceForLotto()); // Price์์ ์ฌ์ฉ์์
๋ ฅ๊ฐ์ ๊ฒ์ฆํ๋ ๋์์ ๋ณด์ฅ๋ ๊ฐ์ฒด ๋ฐํ
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
return createPrice(); // Price์์ ์ฌ์ฉ์์
๋ ฅ์ ์ค๋ฅ๊ฐ ๋๋ฉด, ๋ค์ ์
๋ ฅ์ ๋ฐ๋๋ก createPrice ๋ฅผ ํธ์ถ
}
}
์ด๋ฅผ ํตํด ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ๋ InputView์ ์ญํ ์ด ์์ฒญ ๊ฐ๋ฒผ์์ก๋ค.
๋ง์ ์๊ฐ์ ํตํด ํด๊ฒฐํ์ง๋ง ์ข์ ์ฝ๋์ธ์ง๋ ๋ถํ์คํ๋ค. ์์๋ ๋ถ์ ํผ๋๋ฐฑ์ ์ฃผ์๋ฉด ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
๊ฐ์ฒด์งํฅ ์ฒ๋ผ ๋จ์ธํ์ง ๋ง๊ณ , ์ด ์ญ์ ๊พธ์คํ ๊ณ ๋ฏผํด๋ณด์.
โ ์ผ๊ธ์ปฌ๋ ์ ์ฌ์ฉ(?)
์ฌ๋ฌ๊ฐ์ ๋๋ค๋ก๋๋ค๊ณผ ํ ๊ฐ์ ๋น์ฒจ๋ฒํธ๋ฅผ ๋น๊ตํด์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ์๊ตฌ์ฌํญ์ด ์์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๊ฐ์ ๋๋ค๋ก๋๋ค์ ๋ด์ ๋ฌด์ธ๊ฐ๊ฐ ํ์ํ๋ค.
๋๋ด List<Lotto> ๋ฅผ ์๊ฐํ๊ฒ ๋์์ง๋ง, ๊ฐ์ฒด๋ฅผ List ์ ๋ด์ผ๋ฉด ๊ฐ์ ์ด๋ป๊ฒ ๊บผ๋ด๋ ๊ฒ์ธ์ง ์ดํด๊ฐ ๊ฐ์ง ์๋ ๋๋ ์ด๋ฅผ ํ์ฉํ๊ธฐ ๊น์ง ๊ตฌํํ๋ ์ฝ๋๋ฅผ 2๋ฒ ์๊ณ List<Lotto> ํ์ ์ ์ฌ์ฉํ๋ ๊ฐ์ฒด๋ฅผ 3๋ฒ์ด๋ ๋ฐ๊พธ๊ฒ ๋์๋ค.
๊ทธ๋๋ ์ด๋ฌํ ์ํ์ฐฉ์ค ๋๋ถ์ Lotto ๊ฐ์ฒด์ ๊ฒ์ฆ ํ๋ ๋ก์ง์ด ์๋ค๋ฉด List<Lotto> ๋ ๋ณด์ฅ๋ Lotto ๋ค๋ง ์์์ ์ ์ ์์๊ณ , ์ผ๊ธ์ปฌ๋ ์ ์ ๊ธ์ ์ผ๊ธ์ปฌ๋ ์ ์ ์ฌ์ฉํ๋ ๋ชจ๋ List๋ ๊ฒ์ฆ๋ก์ง์ ์์จ๋ ๋๋ค๋ ๋ง์ ๊น์ ๊ณต๊ฐ์ ํ ์ ์์๋ค.
๋ค๋ง, ๋๋จธ์ง ์ผ๊ธ์ปฌ๋ ์ ์ ์ฅ์ ๋ค์ ์์ง ๊ณต๊ฐ์ ํ์ง ๋ชปํ๋ค.
์ผ๊ธ์ปฌ๋ ์ ์ ์ฌ์ฉํ๋ฉฐ ๋๋จธ์ง ์ฅ์ ๋ค์ ๊นจ๋ฌ์ ์ ์๊ฒ ์์ผ๋ก๋ ์๊ฐ ๋ง์ด ํด์ผ์ง
๋๋ถ์ด, 2์ฃผ์ฐจ์์ ๊ฐ์ฒด์ privateํ ์ํ๋ฅผ public ํ ๊ณณ์ ๋ ธ์ถ ์์ผฐ๋๋ฐ, ์ด์ ๋ํ ๊ณ ๋ฏผ์ ํด๊ฒฐ์ ์์ํ์ ์ ์ผ๊ธ์ปฌ๋ ์ ์ฒ๋ผ Wrappingํ๋ฉด ๋๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
ํ์ง๋ง, Wrapping๋ง ํ์ ๋ฟ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ์ํด ์ํ๋ฅผ ๋ ธ์ถ ์ํค๋ฉฐ ๋ฏธ์ ์ ์์ฃผํ์๊ธฐ ๋๋ฌธ์ ์ด๋ ์ฌ์ ํ ํด๊ฒฐํด์ผํ ๋ฌธ์ ๋ก ๋จ์๋ค.
โ ํ๋๊ณผ ์ฑ ์์ด ์๋ Enum ์ฌ์ฉ๊ธฐ
Enum์ ์ฌ์ฉํ๋ผ๋ ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ๋จ์ํ ๋น์ฒจ๋ฑ์๋ฅผ ๋ฐํํ๋ ์ด๊ฑฐํ Enum์ ์ฌ์ฉํ๊ณ ์ ํ๋ค.
๊ทธ๋ฌ์, if๋ฌธ์ด ์ฐํ์ฃฝ์์ผ๋ก ๋์ด๋๊ฒ ๋์๋ค.
/* Enum ๊ฐ์ฒด์ธ Rank */
public enum Rank {
FIRST(1), SECOND(2), THIRD(3)
}
/* matchBall์ ๋ก๋์์ ๋ง์ถ ๋ฒํธ์ ๊ฐ์, bonusball์ ๋ณด๋์ค๋ฒํธ์ ๋น์ฒจ์ฌ๋ถ */
if (matchBall == 6 && !bonusball) {
return Rank.FIRST;
}
if (matchBall == 5 && bonusball) {
return Rank.SECOND;
}
if (matchBall == 5 && !bonusball) {
return Rank.THIRD;
}
...
if๋ฌธ์ ์ค๋ณต์ด ๋ง์ ๋ค์ง ์์๋ ๋๋ ์ฒ์์ผ๋ก ๋จ์ ์ด๊ฑฐํ Enum์ด ์๋ ๊ฐ์ฒด์ฒ๋ผ ์ฑ ์์ด ์๊ณ , ํ๋์ด ์๋ Enum์ ์ฌ์ฉํ๊ฒ ๋์๋ค.
์ด ๊ณผ์ ์์ ์ฐ์ํ๊ธฐ์ ๋ธ๋ก๊ทธ์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๊ณ , ์๋ฐ์ ์ ์์ ๋ณด๋ฉฐ Enum์ ๋ค์ ํ์ตํ๊ฒ ๋์๋ค.
ํ๋๊ณผ ์ฑ ์์ด ์๋ Enum์ ๊ตฌํํ๋ ์ผ์ ์ฌ์ด์ผ์ด ์๋์๊ณ , ๋ง์ ์ํ์ฐฉ์ค๋ฅผ ๊ฒช๋ ๊ณผ์ ์์ Enum ๊ตฌํ์ ์ง์คํ ๋๋จธ์ง <๊ตฌํ → ํ ์คํธ ์ฝ๋ → ์ปค๋ฐ>์ ์งํค์ง ๋ชปํด์ ์์ฌ์ ๋ค.
๊ทธ๋๋, Enum์ ์ฌ์ฉํด์ String๊ณผ int์ boolean์ด ๊ฒฐํฉ๋ ์ฌ์ด ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์๋๊ฑด ์์ ๋๋ฐ์ด๋ค.
Map<boolean, Map<int, String>> ๊ฐ์ ์ด์ค๊ตฌ์กฐ๋ก ๋ Map์ ์ฌ์ฉํด๋ ์ถ์๋๋ฐ Enum์ ํตํด ๊น๋ํ๊ฒ ์ ๋ฆฌ๋์๊ณ ,
๋น์ฒจ ๋ฑ์์ ๊ธฐ์ค์ด ๋ฌ๋ผ์ง๊ฒ ๋๋๋ผ๋ ๋ฆฌํฉํ ๋ง์ ์ฝ๊ฒ ํ ์ ์๋ค๋ ๋๋์ ๋ฐ๊ฒ ๋์๋ค.
โ 2์ฃผ์ฐจ์ ์ด์ ํ ์คํธ ์ฝ๋์ ์ฅ์
MVCํจํด์ ๋ณธ์ง์ ์งํค๊ณ , ์ผ๊ธ ์ปฌ๋ ์ ์ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ, ์ฑ ์๊ณผ ๋ฉ์์ง๊ฐ ์๋ ๊ฐ์ฒด์งํฅ ์ฝ๋๋ก ๋ฏธ์ ์ ๊ตฌํํ๊ธฐ ์ํด ์ง์ ๊ฐ๋๋, ์ป์ ๋๋, ์ ์ด ๋ค๊ธฐ ์ ์๋ ๊ฐ์ฒด๊ฐ์ ์์กด ๊ด๊ณ๋ฅผ ์ด๋ป๊ฒ ์ค์ ํ ์ง, ๋๊ตฌ์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ๊ฑด์ง ๋ฑ์ ์๊ฐํ์๋ค.
์ด๋ฐ ์๊ฐ๋ค์ ๋ค์๋ ์์นจ์ ๋ฐ๋ก ์ ์ฉํ๊ธฐ ์ํด ์ด๋ฏธ ๊ตฌํํ๋ ์ฝ๋๋ฅผ ์ง์ฐ๊ณ ์๊ฐํด๋ธ ๋ฐฉ๋ฒ์ผ๋ก ๋ค์ ๊ตฌํํ๋ ๊ณผ์ ์ ์์ฒญ ๋ง์ด ๋ฐ๋ณตํ์๋ค.
์ด ๊ณผ์ ์์ ํ ์คํธ ์ฝ๋๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํ ๋๋ถ์ ๋ง์ ์ํ์ฐฉ์ค๋ฅผ ๊ฒช๋๋ผ๋ ๊ตฌํํ ๋ก์ง์ด ํ๋ฆฌ์ง ์์์์ ๊ฒ์ฆํ๋ ์๊ฐ์ด ๋งค์ฐ ๋จ์ถ๋์๋ค.
๋ค๋ง, Enum์ ๊ตฌํํ๋ฉด์ ๋จธ๋ฆฟ์์ด ๋ณต์กํด์ง๋ ๋ฐ๋์ ์ด ํ๋ก๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉฐ ํ ์คํธ์ฝ๋๋ฅผ ๊ฐ์ด ์์ฑํ์ง ๋ชปํ ๊ฒ์ ๋น๋ฐ์ด๋ค(????)
โ ์ ๋ณตํ์ง ๋ชปํ ๊ฐ์ฒด ์งํฅ
๋ฏธ์ ๊ตฌํ ๋์ค์ List<Lotto> ๋ฅผ ์ด์ฉํ๋ Lottos (์ ์ถ ์์๋ RandomLottos๋ก ๋ณ๊ฒฝ) ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ์จ์ผํ๊ธฐ ๋๋ฌธ์ ์ค๊ณ๋ฅผ ๋ค์ ํด์ผํ๋ค.
์ด ๋, ์ค๋ธ์ ํธ์ ์ค๊ณ๋ถ๋ถ์ ๋ค์ ์ฝ์๊ณ , ํนํ '์ ๋ณด ์ ๋ฌธ๊ฐ'๋ฅผ ์๊ฐํ๋ฉฐ ์ฑ ์์ ์ ์ํํ ๊ฐ์ฒด๋ฅผ ์ ๋ณํ๊ธฐ์ํด ๋ง์ ๊ณ ๋ฏผ์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ , '์กฐ์ํธ๋์ ๊ฐ์ฒด์งํฅ'์ด๋ ์ธ๋ฏธ๋๋ฅผ ์์ฒญํ๋ฉฐ ์ฐ๊ด๊ด๊ณ์ ์์กด๊ด๊ณ๋ฅผ ํ์ตํ๋ฉฐ ์ค๊ณ์ ์ ์ฉํ๋ค.
์ฐ๊ด๊ด๊ณ์ ์์กด๊ด๊ณ์ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
A → B : ์ฐ๊ด๊ด๊ณ
class A {
private B b;
}
A ---> B : ์์กด๊ด๊ณ
class A {
public B method (B b) {
return new B();
}
}
์ฐ๊ด๊ด๊ณ์ ์์กด๊ด๊ณ ์ค ์ด๋ค ๊ฒ์ผ๋ก ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค์ ํด์ผ ํ ๊น?
์ข์ ์์๊ฐ ์๋ค.
๋ณดํต ์ฌ๋๋ค์ ์ฅ๋ฐ๊ตฌ๋(Order)์ ์ฅ๋ฐ๊ตฌ๋ ํญ๋ชฉ(List<Order>)์ ์ฐ๊ด๊ด๊ณ(๊ฐ์ฒด์ฐธ์กฐ)๋ฅผ ์ด์ฉํด์ ๊ฐํ ๊ฒฐํฉ์ ํด์ผ ํ๋ค๊ณ ์๊ฐํ๋ค.
ํ์ง๋ง, ์ด ๋์ ๊ด๊ณ๋ ์์กด๊ด๊ณ๋ก ํด์ผํ๋ค. ๊ทธ ์ด์ ๋ ์ฅ๋ฐ๊ตฌ๋์ ์ฅ๋ฐ๊ตฌ๋ํญ๋ชฉ์ ์์ฑ์๊ธฐ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
์ฅ๋ฐ๊ตฌ๋๊ฐ ์์ฑ๋๋ ์๊ธฐ๋ ์ฌ์ฉ์๊ฐ ์ฑ์ ํค์๋ง์์ด๊ณ , ์ฅ๋ฐ๊ตฌ๋ ํญ๋ชฉ์ ์ฌ์ฉ์๊ฐ ์ฑ์ ์ฌ์ฉํด์ ๋ฌผํ์ ๋ด์์ผ๋ง ์๊ธฐ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ์ด ์์ฑ๋๊ณ , ์์ ๋๊ณ , ์ญ์ ๋๋ ๊ฐ์ฒด๋ค์ ์ฐ๊ด๊ด๊ณ(๊ฐ์ฒด์ฐธ์กฐ)๋ฅผ ์ด์ฉํด์ ๊ฒฐํฉํด์ผ ํ๋ค.
๊ทธ๋์, ์ฅ๋ฐ๊ตฌ๋์ ์ฅ๋ฐ๊ตฌ๋ ํญ๋ชฉ์ ์ฐ๊ด๊ด๊ณ๋ก ๊ฐํ ๊ฒฐํฉ์ ํ ๊ฒ์ด ์๋๋ผ, ๋ณ๊ฒฝ์ ์ฉ์ดํ ์ ์๋๋ก ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด๋ก ๊ฒฐํฉ์ ๋์จํ๊ฒ ํ ์ ์๋ ๊ฒ์ด๋ค.
ํ์ง๋ง, ์ด ๊นจ๋ฌ์์ ์ป๊ณ ๋ ๋๋ ๊ฐ์ฒด๊ฐ์ ์ข์ ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ง ๋ชปํ๋ค.
Enum์ ๊ตฌํํ๋ฉด์ ์คํ๊ฒํฐ ์ฝ๋๊ฐ ๋๋ฒ๋ ธ๊ณ , ๋ฌด์๋ณด๋ค ์ค๊ณํ์ง ๋ชปํ๋ ๊ธฐ๋ฅ๋ค์ด ๋์ค๋ ๋ฐ๋์ ๊ตฌํํ๋๋ฐ ๊ธ๊ธํ๋ค.(์ด ๋๊ฐ 5์ผ์ฐจ์ฌ์ ์ค๊ณ๋ฅผ ๋ค์ํ๊ธฐ ๋ณด๋ค๋ ๊ตฌํ์ด ๊ธํ๋ค.)
๊ฒฐ๊ตญ private ์ํ๋ฅผ ๊บผ๋ด์ค๋ get ๋ฉ์๋๋ฅผ ๋จ๋ฐํ๊ณ ์์๊ณ , MVC ํจํด๋ง ์งํฌ ๋ฟ์ด์ง ๊ฐ์ฒด์งํฅ ์ฝ๋๋ฅผ ์์ ์งํค์ง ๋ชปํ๋ค.
1์ฃผ์ฐจ๋ถํฐ ๊ฐ์ฒด์งํฅ์ ๋ํด ๋ง์ ์๊ฐ์ ์์์ง๋ง ์์ง๋ ์ ๋ณตํ์ง ๋ชปํ๋ค.
๊ทธ ์ด์ ๋ฅผ ์๊ฐํด ๋ณด์๋๋ฐ ์๋ง ์ค๊ณ๊ฐ ๋ง์ด ๋ถ์กฑํด์ ์๋๊น ์ถ๋ค.
3์ฃผ์ฐจ ๋ฏธ์ ์์ ์ ์ ์ค๊ณํ๋ README์ ๊ตฌํ์ ๋๋ธ README์ ์ฐจ์ด๊ฐ ์๋ ์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์ฐจ์ด๊ฐ ์๋ ์ฌํ๋ ์ด์ ๋ฅผ ์๊ฐํด๋ดค๋ค.
1. ๊ฐ์ฒด๋ฅผ ์์ธํ ํ์ง ๋ชปํจ. ์ด๋ฐ ๊ฒ๋ ๊ฐ์ฒด๋ก ํด์ผ๋๋ ๊ฑธ ๋ชฐ๋์.
→ ์ด๋ฒ์ ์์ํ์ ์ Wrapping ํ๊ณ ์ผ๊ธ์ปฌ๋ ์ ๋ ์๊ฒ ๋๋ฉฐ ์ด๋ฐ ๊ฒ๋ ๊ฐ์ฒด๋ก ๋ด์ผํ๊ตฌ๋๋ฅผ ์๊ฒ ๋์์ผ๋ ํด๊ฒฐ์ธ๊ฐ?
2. ๊ธฐ๋ฅ์ ์์ ๋จ์๋ก ๋๋์ง ๋ชปํด์ ๊ตฌํ ๊ณผ์ ์ค ์ถ๊ฐ๋๋ ๊ธฐ๋ฅ์ด ๋ง์
→ ์๊ตฌ์ฌํญ์ ๋ณด๋ฉฐ ๊ธฐ๋ฅ์ ๋ ์ธ๋ถ์ ์ผ๋ก ๋๋์ง ๋ชปํ๋ค. ๊ทผ๋ฐ, ํจ์๋ถ๋ฆฌ๋ฅผ ํ๋ฉฐ ๋๋๊ฑด๋ฐ ํจ์๋ถ๋ฆฌ๋ฅผ ํ ์๋ก ๊ธฐ๋ฅ์ ์์ ๋จ์๋ก ๋๋ ์ ์๋ ๋์ด ์๊ธฐ๋ ๊ฑฐ ๊ฐ๋ค.
3. ์ฌ์ฉ์์ ์ ๋ ฅ๋ถํฐ ๊ตฌํํ๊ณ ์์์.
→ ์กฐ์ํธ๋์ ์ธ๋ฏธ๋๋ฅผ ๋ณด๋ฉฐ ๊นจ๋ฌ์๊ฒ ๋ด๊ฐ ๊ตฌํํ ๋, ์ฌ์ฉ์์ ์ ๋ ฅ๋ถํฐ ๊ตฌํํ๊ธฐ ์์ํ์ผ๋ ๋น์ฐํ๊ฒ ์ ์ฐจ์งํฅ์ ์ผ๋ก ์ง ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ , ์ด๋ฒ 3์ฃผ์ฐจ ์ฝ์ํ์์ ํต์ฌ ๊ธฐ๋ฅ์ ๋จผ์ ์๊ฐํ๊ณ , ๊ตฌํํ๋ผ๋ ๊ฐ๋ฅด์นจ์ "์ด, ์ด๋ฌ๋ฉด ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ์งค ์ ์์ง ์์๊น?" ๋ ์๊ฐ์ ํ๊ฒ ๋์๋ค.
4์ฃผ์ฐจ๋ ์ฝ์น๋์ ๊ฐ๋ฅด์นจ๋๋ก ๋จผ์ ํต์ฌ ๊ธฐ๋ฅ์ ์๊ฐํ๊ณ , ๊ตฌํํด๋ณด๋ฉฐ ๊ฐ์ฒด์งํฅ์ ์ ๋ณตํด๋ณด์!
โ ๊ทธ ์ธ ๋ ธ๋ ฅ๋ค
- 1,2์ฃผ์ฐจ์๋ ์๋ฌ๋ฉ์์ง๋ฅผ ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์ด์ฉํ ๋, ํท๊ฐ๋ฆฌ์ง ์๋ ์กฐ๊ฑด์ผ๋ก ์ค์ ํ์๋ค. ๊ฐ๊ด์ ์ผ๋ก ์ข์ ์๋ฌ๋ฉ์์ง๋ ๋ฌด์์ธ๊ฐ๋ฅผ ์๊ธฐ ์ํด ์ข์ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํ 6๊ฐ์ง ์์น์ ๋ณด์๊ณ , ์ข์ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ง๋ค๋๋ก ๋ ธ๋ ฅํ๋ค.
- ๋งํฌ๋ค์ด ์ฌ์ฉ๋ฒ์ ๋ณด๋ฉฐ ๋ฆฌ๋๋ฏธ๋ฅผ ๊น๋ํ๊ฒ ์์ฑํ๋๋ก ๋ ธ๋ ฅํ๋ค.
- 2์ฃผ์ฐจ ํผ๋๋ฐฑ์ ๋ณด๊ณ , ๋ฆฌ๋๋ฏธ ๊ธฐ๋ฅ ๋ชฉ๋ก๊ณผ ์ปค๋ฐ๋ฉ์์ง์ ํด๋์ค ๋ฐ ํจ์๋ช ์ ๋ฃ์ง ์๊ณ ์ปค๋ฐํ๋ค.(์ค๊ฐ๋ถํฐ ์์)
- 1์ฃผ์ฐจ ํผ๋๋ฐฑ์ ํ ์คํธ ๊ฐ์ ์์์ ๋ณด๋ฉฐ @BeforeEach ์ฌ์ฉ๊ณผ ํ ์คํธ์ฝ๋๋ฅผ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์๊ฒ ์ข์ ๋ค์ด๋ฐ์ผ๋ก ์ ์ธํ๋๋ก ๋ ธ๋ ฅํ๋ค.
- ์ข์ ๋ค์ด๋ฐ์ ์ํ ๊ท์น์ ํ์ตํ๊ณ ํจ์ ๋ถ๋ฆฌ๋ฅผ ํ๋ฉฐ ๋์ ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ด ์์ด์ง๋ฌธ์ ์ฝ๋ ๋๋์ ๋ฐ์ ์ ์๋๋ก ๋ ธ๋ ฅํ๋ค.
๐๋ง์น๋ฉฐ
๋ ํ ํ ๋๋ ์ฝ๋ฉํ๋ ค๊ณ ๋ฐ์ ๋์์๋ ์๊ฐ์ 10์๊ฐ์ด์๋ค. ์ด ์ค, ์ดํํ์ ๊ธฐ๋ก๋ ์๊ณต ์๊ฐ์ 6~7์๊ฐ ์ ๋์๋ค.
์์นจ์ ์ผ์ด๋์ ๋์๊ด ๊ฐ์ ๊ณต๋ถํ๊ณ , ์ด๋ํ๊ณ ์ง์ ๋์์ค๋ฉด 22~23์์ผ ์ ๋๋ก ํ๋ฃจ๋ฅผ ์์ฐจ๊ฒ ๋ณด๋ธ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ค์ค๋ก ์ ๋ง ์ด์ฌํ ์ด๊ณ ์๊ณ , ์ถฉ๋ถํ ๋ง์กฑ์ ํ๊ณ ์์๋ค.
๊ทธ๋ฆฌ๊ณ , ์ด๊ฒ์ด ๋ด๊ฐ ์ฝ๋ฉ์ ํ ์ ์๋ ์ต๋ ์๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ๋ฌ๋, ํ๋ฆฌ์ฝ์ค์์๋ ๋ฐค 10์์ ๋์๊ด์ ๋์ค๋ฉด์ ํด๊ฒฐํ์ง ๋ชปํ ๊ณ ๋ฏผ๋ค์ ์ง์ ๊ฐ๋ฉด์๋, ์ง์ ๋์ฐฉํด์๋ ๊ณ ๋ฏผํ๋ค.
"์์ฑ์๋ก ๊ฒ์ฆํ๋ฉด ์ด๋ค ์ด์ ์ด ์๋๊ฑฐ์ง?" , "WinningLotto์ ์ํ๋ฅผ ์ด๋ป๊ฒ Lotto ๋ก ๋ง๋ค์ง?", "์ผ๊ธ ์ปฌ๋ ์ ์ด ๋ญ ๋ง์ด์ง?" ์ด ๊ณ ๋ฏผ๋ค์ ์ ์๋ ค๊ณ ๋์ด ์ํ์์๋ ํ๋ค ๋ณด๋ ๋๋ ํ์ ์ด ๋๋ ๋ฐ๋์ ์ ์ด ๊นจ๋ฒ๋ ค์ ์๋ฒฝ์ ์ฝ๋ฉ๋ ํ๋ค.
์์นจ์๋ ์ด์ ํ ์๊ฐ๋ค์ ๋นจ๋ฆฌ ์ ์ฉํ๊ฑฐ๋ ํด๊ฒฐ๋์ง ์์ ๊ณ ๋ฏผ๋ค์ ํด๊ฒฐํ๊ณ ์ถ์ ๋ง์์ ์์นจ ์ผ์ฐ ์ผ์ด๋ ํ๊ต๋ฅผ ๊ฐ์ ์ฝ๋ฉ์ ํ๋ค. ๊ทธ๋ฌ์, ์ฝ๋ฉํ๋ฌ ๋ฐ์ ๋์ ์๋ ์๊ฐ์ 12์๊ฐ~14์๊ฐ์ผ๋ก ํ๊ท 2~4์๊ฐ์ด ๋์๋ค.
ํ์์ ๋ฌ๋ฆฌ ๋ ๋ง์ด ์ฝ๋ฉ์ ํด๋ ์ง์น์ง ์์๋ค.
์คํ๋ ค, ๋ ธํธ๋ถ์ ๋ฎ์๋๋ฐ๋ ์ฝ๋ฉ ์๊ฐ์ ํ๋ ๋๋ฅผ ๋ณด๋ฉฐ ๊ธฐ์กด ํ์ต๋ฐฉ์๋ง๊ณ ์ด ๋ฏธ์ ์ค์ฌ์ ๊ณต๋ถ๋ฅผ ์งํํด์ผ ํ๋ ํ์์ฑ์ ๋๊ผ๋ค.
๋ฏธ์ ์ค์ฌ์ ๊ณต๋ถ๋ฅผ ํ๋ฉฐ ๋ด๊ฐ ์ฑ์ฅํ๊ณ ์๋ ๊ฒ์ ๋๊ผ๋ค. ์๋ 3๊ฐ์ง๋ ์ฑ์ฅํ๊ณ ์๋ ๋์ ๋๋์ ๊ตฌ์ฒดํ ํ ๊ฒ์ด๋ค.
1. ์ด๋ค ๊ฒ์ ํ์ตํ๊ณ , ๋ฐ๋ก ์ ์ฉํ๋ ๊ฒ์ ์ฝ์ง ์์์ง๋ง, ์ ์ฉํ๊ณ ์ถ์๊ธฐ์ ๋ ๋ง์ ์๊ฐ์ ์ฝ๋ฉํ๊ฒ ๋์๋ค.
2. ์ด๋ค ๊ฒ์ ํ๋ค์ด ํ๋์ง ์๊ฒ ๋์ด ๋ณด์ํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค.
์๋ฅผ ๋ค๋ฉด, ๋๋ ๋๋ค์ ํ์ฉ์ ํ๋ค์ด ํ๋ ๊ฒ์ ์๊ฒ ๋์ด ๋ชจ๋ ๋ก์ง์ ๋๋ค์์ ์ ์ฉํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค.
3. ์ ์ผ ์ค์ํ ๊ฒ์ ์ค์ค๋ก ์๊ฐํ๋ ์๊ฐ์ด ์๋ฑํ๊ฒ ๋ง์์ก๋ค๋ ์ ์ด๋ค.
์๊ฐํ๋ ์๊ฐ์ด ๋ง์์ง์๋ก ๊ถ๊ธํ ์ ๋ค์ด ๋ง์ด ์๊ฒผ๊ณ , ์ด ๊ถ๊ธ์ฆ๋ค์ ํด๊ฒฐํ๊ณ ์ถ๋ค ๋ณด๋ ์์ฐ์ค๋ ๊ณต๋ถ์ ๋ ์ง์คํ์๋ค.
๋, ๊ถ๊ธ์ฆ์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฒ์ํ๊ณ ์ฑ
์ ๋ค์ฌ๋ค๋ณด๋ ๊ณผ์ ์์ ๋ค์ํ ๊ฒ๋ค์ ์๊ฒ ๋์๋ค.(๋น๋ก ๋ฏธ์
์ ๋ฐ๋ก ์ ์ฉ์ํค์ง ๋ชปํ๋๋ผ๋ ๋์ค์ ๋ถ๋ช
ํ ๋์๋๋ ๊ฒ์ ์๊ธฐ์ ์ข์๋ค)
์ด๋ ๊ฒ ๊ถ๊ธ์ฆ์ด ํด์๋๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๊ธธ์ด์ง์๋ก ๊ถ๊ธ์ฆ์ ํด์ํ์ ๋์ ์ค๋ ์พ๊ฐ, ๊นจ๋ฌ์์ ์ป์ ๋์ ์ค๋ ๊ทธ ์๋ฆ๊ณผ ํฌ์ด๊ฐ์ ์ป๋ ํ์๊ฐ ๋
ํํ ๋์๋ ๋น๊ตํ ์ ์์ ์ ๋๋ก ๋ง์์ก๋ค.
๊ธฐ์กด ๋ ํ๋ฐฉ์์ <์ฑ , ๊ฐ์ ์์ฒญ → ์ดํด → ๊ธฐ๋ก> ์ด์๋๋ฐ,
์์ผ๋ก <์ฑ
,๊ฐ์ ์์ฒญ → ๋ฏธ์
or ์ฝ๋์ ์ ์ฉํ๋ฉฐ ์ดํด → ๊ธฐ๋ก> ์์ผ๋ก ํด์ผ ๊ฒ ๋ค.
๋์ผ๋ก MVCํจํด, ๊ฐ์ฒด์งํฅ ์ฝ๋, <๊ตฌํ → ํ
์คํธ ์ฝ๋ → ์ปค๋ฐ> ์์, ์ฌ๋ฌ ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ ํ
์คํธ ์ฝ๋, ์ฌ๋ฐ๋ฅธ ์ปค๋ฐ๋ฉ์์ง, ์ด์์๋ README ์์ฑ๊ณผ ๊ฐ์ด 3์ฃผ ๋์ ํ์ตํ ๊ฒ๋ค์ ์ฝ๋์ ์ ์ฉํ๋ ๊ฒ์ ์์ง๋ ์ต์ํ์ง ์์ ๋ฐ๋์ ๋ช ๊ฐ๋ ์งํค์ง ๋ชปํ๋ค. ๊ทธ๋์์ธ์ง ํญ์ ๋ฏธ์
์ด ๋๋๋๋ผ๋ ์์ฌ์์ด ๋จ๋๋ค.
4์ฃผ์ฐจ์๋ ์ด๋ค ์์ฌ์๋ ์๋๋ก ์ํด๋ณด์!!
'๊ธฐํ > ์ฐ์ํํ ํฌ์ฝ์ค > ํ๋ฆฌ์ฝ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ฆฌ์ฝ์ค 4์ฃผ์ฐจ] ํฌ๋ฆฌ์ค๋ง์ค ํ๋ก๋ชจ์ ํ๊ณ (0) | 2023.11.17 |
---|---|
[ํ๋ฆฌ์ฝ์ค 3์ฃผ์ฐจ] - ์ข์ ๋ค์ด๋ฐ์ ์ํ ๊ท์น (0) | 2023.11.09 |
[ํ๋ฆฌ์ฝ์ค 2์ฃผ์ฐจ] 1์ฃผ์ฐจ ๊ณตํต ํผ๋๋ฐฑ ํ์ต (0) | 2023.11.02 |
[ํ๋ฆฌ์ฝ์ค 2์ฃผ์ฐจ] ์๋์ฐจ ๊ฒฝ์ฃผ ๊ฒ์ ํ๊ณ (0) | 2023.11.01 |
[ํ๋ฆฌ์ฝ์ค 1์ฃผ์ฐจ] ์๋ฐ ์ฝ๋ฉ ์ปจ๋ฒค์ (ํด์ค) (1) | 2023.10.26 |