๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๊ธฐํƒ€/์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค > ํ”„๋ฆฌ์ฝ”์Šค

[ํ”„๋ฆฌ์ฝ”์Šค 3์ฃผ์ฐจ] ๋กœ๋˜ ๊ฒŒ์ž„ ํšŒ๊ณ 

๐Ÿ˜Š 3์ฃผ์ฐจ ๋ชฉํ‘œ

  • <๊ตฌํ˜„ → ํ…Œ์ŠคํŠธ ์ฝ”๋“œ → ์ปค๋ฐ‹> ์ˆœ์„œ ์ง€ํ‚ค๊ธฐ
  • ๊ฐ์ฒด์ง€ํ–ฅ ์ฝ”๋“œ๋ฅผ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ธฐ
  • 1์ฃผ์ฐจ ๋ฐ 2์ฃผ์ฐจ ํ”ผ๋“œ๋ฐฑ๋ฐ˜์˜ํ•˜๊ธฐ
  • ์†์ด ๊ฐ€๋Š”๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ๋ง๊ณ  ๋ฏธ๋ฆฌ ์ƒ๊ฐํ•˜๊ธฐ

๐Ÿ˜Š ๋กœ๋˜ ๊ฒŒ์ž„ ๊ตฌํ˜„

โ˜† ์ฝ”๋“œ์˜ ์ „๋ฌธ์ž…๋‹ˆ๋‹ค.

 

โœ… ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ฑด์ง€ ์ƒ๊ฐํ•˜๊ธฐ

์ด๋ฒˆ ์š”๊ตฌ์‚ฌํ•ญ์€ 1๋“ฑ ๋‹น์ฒจ๊ธˆ(20์–ต)๋งŒํผ์˜ ๋ˆ์„ ์“ฐ๋ฉด ์–ผ๋งŒํผ์˜ ์ˆ˜์ต๋ฅ ์ด ์ƒ๊ธธ์ง€ ๊ถ๊ธˆํ•ดํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ด ๋กœ๋˜๊ฒŒ์ž„์„ ๋งŽ์ด ์ด์šฉํ•  ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ–ˆ๊ณ  ์ด์— ๋งž๊ฒŒ ์„ค๊ณ„์™€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.

 

โœ… MVC ์‚ฌ์šฉ

[ํ•™์Šต]

3์ฃผ์ฐจ ์š”๊ตฌ์‚ฌํ•ญ์— "๋„๋ฉ”์ธ ๋กœ์ง์— ๋Œ€ํ•ด ๋‹จ์œ„ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ, ๋„๋ฉ”์ธ ๋กœ์ง๊ณผ UI ๋กœ์ง์„ ๋ถ„๋ฆฌํ•ด๋ผ" ๊ฐ€ ๋‚˜์™”๊ธฐ ๋•Œ๋ฌธ์— ๋„๋ฉ”์ธ ๋กœ์ง์— ๋Œ€ํ•ด ์•Œ์•„๋ดค๋‹ค.

 

์ด ๊ธ€์—์„œ ์€ํ–‰ ์—…๋ฌด๋ฅผ ์˜ˆ์‹œ๋กœ ์–ด๋–ค ๋กœ์ง์ด ๋„๋ฉ”์ธ์ด๊ณ , UI ์ธ์ง€ ์„ค๋ช… ํ•ด์ค˜์„œ ๋„์›€์„ ๋งŽ์ด ๋ฐ›์•˜๋‹ค.

๋„๋ฉ”์ธ๋กœ์ง์— ๋Œ€ํ•ด ์ •ํ™•ํžˆ ๋ชจ๋ฅด๋ฉด ๊ผญ!! ์ฝ์–ด ๋ณด๊ธธ ๊ฐ•์ถ”ํ•œ๋‹ค.

 

๋””์Šค์ฝ”๋“œ์˜ ๊ธ€์„ ์ฝ์œผ๋ฉฐ ์•Œ๊ฒŒ ๋œ MVCํŒจํ„ด์„ ๋„๋ฉ”์ธ๋กœ์ง๊ณผ UI๋กœ์ง๋“ค์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด 3์ฃผ์ฐจ ๋ฏธ์…˜์— ์ ์šฉํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.

 

๋‹ค์Œ์€ MVC ํŒจํ„ด ํ•™์Šต์— ์“ฐ์˜€๋˜ ๋ธ”๋กœ๊ทธ ๊ธ€์ด๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์˜ ๊ทผ๋ณธ ์›์น™, MVC์ฐฝ์‹œ๊ฐ€์ž ๋งํ•˜๋Š” MVC์˜ ๋ณธ์งˆ

 

๋‹ค์Œ์€ MVC ํŒจํ„ด ํ•™์Šต์— ์“ฐ์˜€๋˜ 10๋ถ„ ํ…Œ์ฝ”ํ†ก์ด๋‹ค.

์ œ๋ฆฌ์˜ MVC

ํ•ด๋ฆฌ&์…˜์˜ MVC

๋ฒ ๋ฃจ์Šค์˜ MVC

 

ํ•™์Šตํ•œ ๊ฒฐ๊ณผ 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 ๊ฐ์ฒด์ด๋‹ค.

์‚ฌ์šฉ์ž ์ž…๋ ฅ์œผ๋กœ 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์ฃผ์ฐจ์—๋Š” ์–ด๋–ค ์•„์‰ฌ์›€๋„ ์—†๋„๋ก ์ž„ํ•ด๋ณด์ž!!