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

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

[ํ”„๋ฆฌ์ฝ”์Šค 1์ฃผ์ฐจ] ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„ ํšŒ๊ณ 

๐Ÿ˜Š 1์ฃผ์ฐจ ์‹œ์ž‘ ์ „

์ทจ์ค€ ๊ธฐ๊ฐ„ ์ค‘ 1๋‹ฌ์ด๋ž€ ์‹œ๊ฐ„์„ ํ”„๋ฆฌ์ฝ”์Šค์— ํˆฌ์žํ•˜๋Š” ๋งŒํผ ๊ผญ ์„ฑ์žฅํ•˜๊ณ  ์‹ถ์—ˆ๊ธฐ์— ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํ”„๋ฆฌ์ฝ”์Šค์˜ ์ „๋ณด๋‹ค ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ณ ๋ฏผํ–ˆ๊ณ  ์ด๋ฒˆ ์ฃผ์—๋Š” 2๊ฐœ์˜ ๋ชฉํ‘œ๋ฅผ ์„ธ์› ๋‹ค.

 

โœ…๋ชฉํ‘œ

์ฒซ ๋ฒˆ์งธ๋Š” ํ”„๋ฆฌ์ฝ”์Šค๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ชจ๋ฅด๋Š” ์šฉ์–ด๋“ค์„ ๋‹ค ์ฐพ์•„๋ณด๊ณ  ์ดํ•ด ํ•˜๊ธฐ.

๋‘ ๋ฒˆ์งธ๋Š” ์ตœ๊ทผ์— ํ•™์Šตํ•œ ๋žŒ๋‹ค์‹๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ์„ ํ™œ์šฉํ•ด์„œ 1์ฃผ์ฐจ ๋ณด๋‚ด๊ธฐ.

 

์ตœ์†Œ ์ด 2๊ฐœ๋ฅผ ์ทจ์ค€์ƒ์ด์–ด์„œ ํ”„๋ฆฌ์ฝ”์Šค์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„๊ณผ ๋…ํ•™์ด๋ž€ ๊ธธ์„ ๊ฑธ์–ด์˜จ ๋…ธ๋ ฅ๊ณผ ๊ทผ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์ด๋ฃจ๊ณ ์ž ํ•œ๋‹ค.

๋ถ„๋ช…ํžˆ ์„ฑ์žฅํ•ด์žˆ๊ฒ ์ง€!?

๐Ÿ˜Š ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„ ๊ตฌํ˜„

โœ… ๊ตฌํ˜„ ์ค‘์— ๋งŒ๋‚œ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ๊ณผ ์•„์‰ฌ์›€

๋‚˜๋Š” ์ด์ „ ๊ธฐ์ˆ˜ ํ”„๋ฆฌ์ฝ”์Šค ๋ฌธ์ œ๋“ค ์ค‘ ์œ ์ผํ•˜๊ฒŒ ๋”ฑ ํ•œ ๋ฌธ์ œ๋ฅผ ํ•˜๋ฃจ๋™์•ˆ ํ’€์–ด๋ดค์—ˆ๋Š”๋ฐ, ๊ทธ๊ฒŒ ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์ด์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๊ณ„์† ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผํ–ˆ์—ˆ์ง€๋งŒ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๊ณ , ํ”„๋ฆฌ์ฝ”์Šค๋ฅผ ์‹œ์ž‘ํ–ˆ์—ˆ๋‹ค.

 

๋‹คํ–‰ํžˆ(?)๋„ 6๊ธฐ ํ”„๋ฆฌ์ฝ”์Šค 1์ฃผ์ฐจ๋Š” ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์ด์˜€๋‹ค. ์ด๋ฒˆ์—๋Š” ์—๋Ÿฌ๋ฅผ ๊ผญ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋งˆ์Œ์— ๋œ์ปฅ ๊ฒ์ด๋‚ฌ์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์˜ค๋ฅ˜๋ฅผ ๋งˆ์ฃผํ•˜์ง€ ์•Š์•„์„œ ๊ธฐ์œ ๋งˆ์Œ์— ์‹ฑ๊ธ€๋ฒ™๊ธ€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋Œ๋ ค๋ดค๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉฐ ์‹คํŒจํ–ˆ๋‹ค...

 

์˜ค๋ฅ˜๋Š” [๊ฒŒ์ž„์„ ์‹œ์ž‘ํ• ์ง€ ๋ง์ง€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๋กœ์ง์—์„œ ์ž˜๋ชป ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ํ„ฐ๋œจ๋ ค์ค€ ๊ณณ]์—์„œ ๋ฐœ์ƒํ–ˆ๋‹ค. ๋‚˜๋Š” "์˜ˆ์™ธ๋ฅผ ํ„ฐ๋œจ๋ ค์„œ ์ข…๋ฃŒ์‹œํ‚ค๋ผ๋Š” ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ท„์„ ๋ฟ์ธ๋ฐ ์™œ ํ‹€๋ฆฐ๊ฑฐ์•ผ!!" ํ–ˆ๋‹ค.

 

๋‹ค์Œ ๋‚ , ์šฐํ…Œ์ฝ”์—์„œ ์ œ๊ณตํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ๋ฉ”์„œ๋“œ๋“ค์„ ๋‚ด๋ถ€์ ์œผ๋กœ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์•˜๊ณ , ์ด๊ฑฐ๋‹ค!! ์‹ถ์€ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

 

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋œฏ๋‹ค๋ณด๋ฉด thenReturn์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๋‚˜์˜จ๋‹ค.

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ thenReturn ๋ฉ”์„œ๋“œ

thenReturn ๋ฉ”์„œ๋“œ์˜ ์„ค๋ช…์— checked exception (๋นจ๊ฐ„ ์ค„)์„ ๋ฐœ๊ฒฌํ•˜์˜€๊ณ , ์–ด๋…ธํ…Œ์ด์…˜์—๋Š” unchecked๋ผ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜์˜€๋‹ค.

@SuppressWarning์˜ unchecked๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ํ•ด๋‹น ๋ถ€๋ถ„์„ ๊ฒฝ๊ณ ํ•˜์ง€ ๋ง๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๊ณ ,

๋นจ๊ฐ„ ์ค„์€ checked exception์œผ๋กœ ๋ฌด์กฐ๊ฑด ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•˜๋Š” ์˜ˆ์™ธ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋Š” "๊ฒŒ์ž„์„ ์ƒˆ๋กœ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ข…๋ฃŒํ•  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž˜๋ชป ์ž…๋ ฅ์„ ํ•˜๋ฉด ์˜ˆ์™ธ๋ฅผ ํ„ฐ๋œจ๋ฆฌ์ง€๋ง๊ณ  ์žก์•„์•ผ ํ•˜๋Š”๊ตฌ๋‚˜!! ์˜ˆ์™ธ๋ฅผ ์•ˆ์žก์œผ๋ฉด ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ๋žตํ•˜๋ผ!!" ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ, ์•„๋ž˜์— ์žˆ๋Š” [๊ฒŒ์ž„์„ ์ƒˆ๋กœ ์‹œ์ž‘ํ• ์ง€ ๋ง์ง€์˜ ๋ฉ”์„œ๋“œ]๋ฅผ try-catch๋ฌธ์œผ๋กœ ๊ฐ์‹ธ์ฃผ์–ด ์˜ˆ์™ธ๋ฅผ ์žก์•„์ฃผ์—ˆ๋‹ค.

๊ฒŒ์ž„์„ ์‹œ์ž‘ํ• ์ง€ ๋ง์ง€ ์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ

์ด์ œ๋Š” ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ํ†ต๊ณผํ•˜๊ฒ ์ง€? ํ•˜๋ฉด์„œ ์‹ฑ๊ธ€๋ฒ™๊ธ€ํ•˜๊ฒŒ ๋Œ๋ ธ์ง€๋งŒ ์‹คํŒจํ–ˆ๋‹ค. ์ด๋ฒˆ์—” "1๋ณผ 1์ŠคํŠธ๋ผ์ดํฌ"๋ผ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ, System.out.println์„ ๋ชจ๋“  ๋ณ€์ˆ˜๋งˆ๋‹ค ๋„ฃ์œผ๋ฉด์„œ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ , ์›์ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๋‹ค์Œ์€ ์ปดํ“จํ„ฐ๊ฐ€ ์ƒ์„ฑํ•œ ๋žœ๋ค ์ˆซ์ž๋ฅผ ๋ฐ›๋Š” List<Integer>ํƒ€์ž…์ด๋‹ค.

๋žœ๋ค ์ปดํ“จํ„ฐ ์ˆซ์ž๋ฅผ ๋ฐ›๋Š” List

 

createRandomComputerNumber ๋ฉ”์„œ๋“œ๋Š” ์ˆซ์ž 1๊ฐœ์”ฉ ๋งŒ๋“ค์–ด์„œ List์— ๋„ฃ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— List๋Š” [1, 3, 4]์™€ ๊ฐ™์ด ์ˆซ์ž๊ฐ€ ํ•œ ๊ฐœ์”ฉ ๋“ค์–ด๊ฐ€ ์žˆ์„๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜, ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ List ์—์„œ ๊ฐ’์„ ๊บผ๋‚ผ ๋•Œ, ๋ฐ”๋ณด๊ฐ™์ด get(0)ํ•˜๋ฉด 134๊ฐ€ ํ•œ ๊บผ๋ฒˆ์— ๋‚˜์˜ฌ ์ƒ๊ฐ์„ ํ–ˆ๋˜ ๊ฒƒ์ด์—ˆ๋‹ค..

๋ฐ”๋ณด๊ฐ™๋˜ ์ˆœ๊ฐ„

๊ทธ๋ž˜์„œ, ๋กœ์ง์„ 1,3,4๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”๊ฟ”์ฃผ์—ˆ๊ณ , ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ปดํ“จํ„ฐ ๋žœ๋ค ์ˆซ์ž๋ฅผ ๋งŒ๋“œ๋Š” ๋กœ์ง ์ž์ฒด๊ฐ€ ํ‹€๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ• ์ง€ ๋ง์ง€ ์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์‹คํŒจํ–ˆ์„ ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋‹ค์‹œ ๋Œ๋ ค๋ณด์•˜๋‹ค.

 

์˜ค๋ฅ˜๊ฐ€ ๋ฐ”๋€ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์›๋ž˜๋Š” ์˜ค๋ฅ˜๋ฉ”์‹œ์ง€์˜ ๋งจ ์œ—์ค„์ด user์˜ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ• ์ง€ ๋ง์ง€ ๋ฉ”์„œ๋“œ์˜€์Œ

๊ทธ๋ ‡๋‹ค. [๊ฒŒ์ž„์„ ์‹œ์ž‘ํ• ์ง€ ๋ง์ง€] ๋ฉ”์„œ๋“œ๋Š” ์ž˜ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด์—ˆ๊ณ , ์›์ธ์€ [1,3,4] ์ค‘ ํ•˜๋‚˜์˜ ์ˆซ์ž๋งŒ ๊บผ๋‚ด์„œ ๋ฌธ์ œ์˜€๋˜ ๊ฒƒ์ด์—ˆ๋‹ค๐Ÿ˜‚

 

๊ทธ๋Ÿฌ๋‚˜, ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ List ์—์„œ ์ž˜๋ชป๋œ ๊ฐ’์„ ๊บผ๋ƒˆ๋Š”๋ฐ List์™€๋Š” ์ƒ๊ด€์—†๋Š” [๊ฒŒ์ž„์„ ์‹œ์ž‘ํ• ์ง€ ๋ง์ง€]์˜ ๋ฉ”์„œ๋“œ์—์„œ ์™œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋Š”์ง€ ํ™•์ธ์„ ๋ชปํ–ˆ๋‹ค.๐Ÿ˜ฅ

์ฝ”๋“œ๋ฅผ ๋ณต๊ธฐํ•ด์„œ ์ „์˜ ์ฝ”๋“œ๋กœ ๋Œ์•„๊ฐ€๋ด๋„ ์ฒ˜์Œ์— ๋งŒ๋‚œ ์˜ค๋ฅ˜๋ฅผ ๋‹ค์‹œ ๋งˆ์ฃผํ•  ์ˆœ ์—†์—ˆ๋‹ค..

๊ถ๊ธˆ์ฆ์ด ๋‚จ์€์ฑ„๋กœ ์ด๋ ‡๊ฒŒ 1์ฃผ์ฐจ๊ฐ€ ๋งˆ๋ฌด๋ฆฌ๋˜์–ด ์•„์‰ฝ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ฐฐ์›€์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์„ํ…๋ฐ!

์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚˜๋ฉด ๋‹นํ™ฉํ•˜์ง€ ๋ง๊ณ  ๋ฐฐ์šธ ๊ฒƒ์ด ์ƒ๊ฒผ๋‹ค๊ณ  ๊ธฐ๋ปํ•ด๋ณด์ž!

โœ… ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ํ•„์š”์„ฑ

์–ด๋Š ๋กœ์ง์—์„œ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธด์ง€๋Š” ๋ชฐ๋ž๊ธฐ์— ๋ชจ๋“  ๋ณ€์ˆ˜์˜ ๊ฐ’์„ print๋ฌธ์œผ๋กœ ์ถœ๋ ฅํ•˜๋ฉฐ ๋””๋ฒ„๊น…ํ•ด์„œ ์›์ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ด ๊ณผ์ •์ด ๋„ˆ๋ฌด ๊ท€์ฐฎ์•˜๋‹ค. print๋ฌธ ์ž‘์„ฑํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Œ๋ฆฌ๊ณ  ์ž…๋ ฅ๊ฐ’ ๋„ฃ๊ณ ํ•˜๋Š” ๊ณผ์ •์ด ๋ฐ˜๋ณต์˜ ๋ฐ˜๋ณต์„ ๊ฑฐ๋“ญํ–ˆ๋‹ค.

์ด๋กœ ์ธํ•ด ์–ผํ• ์•Œ๊ณ ๋งŒ ์žˆ๋˜ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” TDD๊ฐ€ ์ƒ๊ฐ๋‚ฌ๋‹ค.

๋งŒ์•ฝ, ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค๋ฉด ์–ด๋Š ๋กœ์ง์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋Š”์ง€ ๋ฐ”๋กœ ์•Œ์•˜์„ํ…๋ฐ ๋ง์ด๋‹ค.

 

์•ž์œผ๋กœ ์žˆ์„ ํ”„๋ฆฌ์ฝ”์Šค 2์ฃผ์ฐจ ์ธ๊ฐ€ 3์ฃผ์ฐจ์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋„ ๊ฐ™์ด ๋งŒ๋“ค๋ผ๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์™œ ์žˆ๋Š”์ง€ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜ ๋งŒ๋“ค ๋•Œ ๋งˆ๋‹ค ๊ธฐ๋Šฅ์ด ์˜ˆ์ƒํ•œ๋Œ€๋กœ ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ์ง€!

โœ… Javadoc๋ฌธ์„œ๋Š” ์œ„๋กœ ์ฝ๊ธฐ

๋งˆ์ง€๋ง‰์œผ๋กœ, ๋‚ด๊ฐ€ ์ฐฉ๊ฐํ–ˆ์—ˆ๋˜ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์งš๊ณ  ๋„˜์–ด๊ฐ€์ž.

@SuppressWarning์˜ unchecked๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ํ•ด๋‹น ๋ถ€๋ถ„์„ ๊ฒฝ๊ณ ํ•˜์ง€ ๋ง๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋งž๋‹ค. ์ฆ‰, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์™€ ์ƒ๊ด€์ด ์—†์—ˆ๋‹ค.

๋‚ด๊ฐ€ ์˜คํ•ดํ•œ ๋นจ๊ฐ„ ์ค„์€ thenReturn์ด ์•„๋‹Œ ๋ฐ‘์— ์žˆ๋Š” thenThrow์— ๋Œ€ํ•œ ์„ค๋ช…์ด์—ˆ๋‹ค!

๋ฉ”์„œ๋“œ์˜ ์„ค๋ช…์„ ์•„๋ž˜๋กœ ์ฝ๋Š” ๊ฒƒ์œผ๋กœ ์ฐฉ๊ฐํ–ˆ์„ ๋•Œ

์ฆ‰, JavaDoc์˜ ์„ค๋ช…์€ ๋ณด๊ณ ์‹ถ์€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์œ„์— ์„ค๋ช… ๋˜์–ด ์žˆ๋Š” ๊ฒƒ๋„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , thenReturn๋ฉ”์„œ๋“œ๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ์—†์Œ์„ ํ™•์ธํ–ˆ๋‹ค!!๐Ÿ˜Š 

thenReturn ๋ฉ”์„œ๋“œ์˜ ์ฃผ์„๋ž€์€ ์œ„์— ์žˆ์—ˆ๋‹ค!

๐Ÿ˜Š ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„ ๋ฆฌํŒฉํ† ๋ง

๋‚˜๋Š” ์ง€๊ธˆ๊ป ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋“ค๋งŒ ํ’€๋ฉด์„œ ํ•œ ํด๋ž˜์Šค์—์„œ๋งŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์™”๋‹ค. ์ตœ๊ทผ์— ํ•™์Šตํ•œ '๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด'๋ฅผ ์ฝ๊ณ , ์ฒ˜์Œ์œผ๋กœ ์ฝ”๋“œ์— ์ ์šฉํ•œ ๊ฒƒ์ด ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์ด๋‹ค. ๋‹คํ–‰ํžˆ dfs์™€ ์™„ํƒ๋ฌธ์ œ๋ฅผ ํ’€๋ฉฐ ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ต์ˆ™ํ–ˆ๊ธฐ์— ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ๋Š” ์–ด๋ ต์ง€ ์•Š์•˜๋‹ค.

โœ… ์ˆซ์ž๋ฅผ ์ƒ์ˆ˜ํ™” ํ•˜๊ธฐ

์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ 1์„ ์ž…๋ ฅํ•˜๋ฉด ์žฌ์‹œ์ž‘, 2๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ข…๋ฃŒ๋ฅผ ํ•˜๋„๋ก ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ๋‹ค.

๊ตฌํ˜„์„ ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์— 1๊ณผ 2๊ฐ€ ์ค‘๋ณต๋œ ๊ฒƒ์ด ์‹ ๊ฒฝ์“ฐ์˜€๊ณ , 1๊ณผ 2๊ฐ€ 100๊ณผ 1000์œผ๋กœ ๋ณ€๊ฒฝ์ด ๋˜๋”๋ผ๋„ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ, 1๊ณผ 2๋ฅผ ์ƒ์ˆ˜ํ™” ํ•˜์˜€๋‹ค.

 

์ƒ์ˆ˜๋ž€ ๋ณ€ํ•˜์ง€ ์•Š๊ณ  ๊ณ ์ •๋œ ๊ฐ’์„ ๋‹ด๋Š” ๋ณ€์ˆ˜์ด๋‹ค.

์ƒ์ˆ˜ํ™” ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด static ๊ณผ final์„ ๋ถ™์ด๊ณ , ๊ฐ’(1๊ณผ 2)์— ์ด๋ฆ„์„ ๋ถ™์—ฌ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 * final : ํ•œ ๋ฒˆ ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€ํ•ด์„œ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.

1๊ณผ 2์— ์ด๋ฆ„์„ ๋ถ™์—ฌ ์ƒ์ˆ˜ํ™” ์‹œ์ผœ์ฃผ๊ธฐ

โœ… public static ๊ณผ private static ์˜ ์ˆœ์„œ

์ƒ์ˆ˜ํ™”๋ฅผ ํ•˜๋‹ค๋ณด๋‹ˆ ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด public์ธ ์ƒ์ˆ˜์™€ private์ธ ์ƒ์ˆ˜๊ฐ€ ๊ฐ™์ด ์žˆ์—ˆ๋‹ค.

public static๊ณผ private static

์ด๋“ค ๊ฐ„์˜ ์ˆœ์„œ๋„ ์ƒ๊ด€ ์—†๋Š”์ง€ ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ณด์•˜๊ณ , ํ‘œ์ค€ ์ž๋ฐ” ์ปจ๋ฒค์…˜์—์„œ ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜, ํ”„๋ฆฌ์ฝ”์Šค์˜ ์š”๊ตฌ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋Š” ๊ตฌ๊ธ€ ์ž๋ฐ” ์ปจ๋ฒค์…˜์„ ์ง€ํ‚ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ, ๊ณต๋ถ€ํ–ˆ๋˜ ์ž๋ฐ” ์ฝ”๋“œ ์ปจ๋ฒค์…˜์˜ 3.4.2 ํด๋ž˜์Šค ๋‚ด์šฉ ์ˆœ์„œ๋ฅผ ๋‹ค์‹œ ์ฝ์–ด๋ณด์•˜๋‹ค.

3.4.2 ๋‚ด์šฉ์—๋Š” ํด๋ž˜์Šค ๋‚ด๋ถ€ ์ˆœ์„œ๋Š” ์ƒ๊ด€ ์—†์ง€๋งŒ ๋‹จ์ง€ "์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„์˜ ์ˆœ์„œ๋ฅผ ์ง€์ผœ์•ผ ํ•œ๋‹ค"๋ผ๊ณ  ๋ช…์‹œ ํ–ˆ๋‹ค. ์ฆ‰, ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ดํ•ดํ–ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ, ๋‚˜๋Š” ์ฝ”๋“œ ์ปจ๋ฒค์…˜์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ํ•œ ๋ฒˆ ๋” ์ƒ๊ฐํ•ด์„œ ํด๋ž˜์Šค ๋‚ด๋ถ€ ์ˆœ์„œ๋ฅผ ํ‘œ์ค€ ์ž๋ฐ” ์ปจ๋ฒค์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ˆœ์„œ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ์•„๋‹ˆ๋ผ ์ปจ๋ฒค์…˜์„ ํ•˜๋Š” ์˜๋ฏธ๋„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ๋ผ ์ƒ๊ฐํ–ˆ๋‹ค.

 

ํ‘œ์ค€ ์ž๋ฐ” ์ปจ๋ฒค์…˜์˜ ํด๋ž˜์Šค ๋‚ด๋ถ€ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๊ณ , ์ด๋ ‡๊ฒŒ ์ง€ํ‚ค๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค.

1. public static ์ƒ์ˆ˜

2. private static ๋ณ€์ˆ˜

3. private instance ๋ณ€์ˆ˜

4. public method → private method(์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” public ํ•จ์ˆ˜ ์งํ›„)

โœ… ๊ฐ์ฒด์— static ๋ฉ”์„œ๋“œ๋Š” ๋งŽ๊ณ , ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋Š” ์—†๋‹ค?

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์„ฑ๊ณตํ•˜๋Š” ๋‚ด ์ฝ”๋“œ์˜ ๊ฐ์ฒด์—๋Š” ๋ฉค๋ฒ„๋ณ€์ˆ˜(์ƒํƒœ)๊ฐ€ ์—†์–ด์„œ static ๋ฉ”์„œ๋“œ๊ฐ€ ๋งŽ์•˜๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, Computer ๊ฐ์ฒด๊ฐ€ ๋žœ๋ค ์ˆซ์ž๋ฅผ ๋งŒ๋“œ๋Š” ๋ฉ”์„œ๋“œ (createRandomComputerNumber) ์ด๋‹ค.

์ด ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“  ์ด์œ ๋Š” Game ๊ฐ์ฒด๊ฐ€ Computer ๊ฐ์ฒด์—๊ฒŒ "๋žœ๋ค์ˆซ์ž๋ฅผ ๋งŒ๋“ค์–ด์ค˜"๋ผ๊ณ  ์ฑ…์ž„ ๋ถ€์—ฌ๋ฅผ ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, static ๋ฉ”์„œ๋“œ๋กœ ์ •์˜ํ•˜๋‹ˆ User ๊ฐ์ฒด๋„ Computer ๊ฐ์ฒด์—๊ฒŒ "๋žœ๋ค์ˆซ์ž๋ฅผ ๋งŒ๋“ค์–ด์ค˜"๋ผ๊ณ  ์ฑ…์ž„ ๋ถ€์—ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

์ด๋Š” ๋‚ด ์„ค๊ณ„์˜ ์˜๋„์™€๋Š” ๋งž์ง€ ์•Š์•˜๊ณ , ๋ˆ„๊ตฐ๊ฐ€ ๋‚ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ • ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋‚˜์˜ ์„ค๊ณ„์˜๋„๋ฅผ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๋ผ ํŒ๋‹จํ–ˆ๋‹ค.

 

์•„๋ž˜ ์‚ฌ์ง„์€ ๋ฉ”์„œ๋“œ๋ฅผ static์œผ๋กœ ์ •์˜ํ–ˆ์„ ๋•Œ์˜ ์ฝ”๋“œ์ด๋‹ค. ์ฝ”๋“œ ์ „๋ฌธ์€ ํด๋ฆญ

public class Computer {
    ...
    // ๋ฉค๋ฒ„๋ณ€์ˆ˜๋Œ€์‹  ์ง€์—ญ๋ณ€์ˆ˜๋กœ List์„ ๋งŒ๋“  ๋ชจ์Šต
    public static List<Integer> createRandomComputerNumber() {
        List<Integer> computerNumber = new ArrayList<>(); 
    }
}
public class User {
    ...
    // ๋ฉค๋ฒ„๋ณ€์ˆ˜๋Œ€์‹  ์ง€์—ญ๋ณ€์ˆ˜๋กœ List์„ ๋งŒ๋“  ๋ชจ์Šต
    public static List<Integer> createUserNumber() {
        List<Integer> userNumber = new ArrayList<>();   
    }
}

๊ทธ๋ž˜์„œ, ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜๋ฉด์„œ '๋ฌด์—‡์„ ๊ฑด๋“œ๋ ค์•ผ static ๋ฉ”์„œ๋“œ๋ฅผ ์ค„์ด๊ณ , ๊ฐ์ฒด๋งˆ๋‹ค ๋ฉค๋ฒ„๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ?'๋ฅผ ๊ณ ๋ฏผํ–ˆ๊ณ ,  "๋ฌด์—‡๋ถ€ํ„ฐ ์ˆ˜์ •ํ•ด์•ผ ํ• ์ง€? ์ด๋ ‡๊ฒŒ ๋œ ๊ทผ๋ณธ์ ์ธ ์›์ธ์€ ๋ฌด์—‡์ธ์ง€?"์— ๋Œ€ํ•œ ๋‹ต์„ ์ฐพ๊ณ ์ž ํ•˜์˜€๋‹ค.

์ฒซ ๋ฒˆ์งธ๋กœ ํ•œ ์‹œ๋„๋Š” ๊ตฌ๊ธ€๋ง์„ ํ•˜๊ณ , ์ž๋ฐ”์˜ ์ •์„์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ๋…ธํŠธ์— ์ •๋ฆฌํ–ˆ๋˜ static ๋ถ€๋ถ„์„ ๋‹ค์‹œ ์ฝ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋‚ด๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์ •๋ณด๋งŒ์„ ๋‹ค์‹œ ์Šต๋“ํ•  ๋ฟ์ด์—ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ๋Š” ๋””์Šค์ฝ”๋“œ์— ์˜ฌ๋ผ์˜จ ๊ธ€๋“ค์„ ๋‹ค ์ฝ์–ด๋ณด์•˜๋‹ค. ์ด ๊ณผ์ •์—์„œ ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์•Œ๊ฒŒ๋˜์–ด List๋ฅผ Wrapping ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฑด์ค„ ์•Œ๊ณ  ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ๊ณ„์† ์ฝ๊ณ  ์ดํ•ดํ–ˆ์ง€๋งŒ ๋‚ด ์ƒํ™ฉ๊ณผ๋Š” ๋งž์ง€ ์•Š์•˜๋‹ค. 

์„ธ ๋ฒˆ์งธ๋Š” ํ•™๊ต ๋„์„œ๊ด€์—์„œ 'ํด๋ฆฐ ์ฝ”๋“œ'์™€ '์ข‹์€ ์ฝ”๋“œ, ๋‚˜์œ ์ฝ”๋“œ'์˜ ๋ชฉ์ฐจ๋ฅผ ๋ณด๋ฉฐ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ ๊ฐ™์€ ๋ชฉ์ฐจ๋“ค์„ ์ถ”๋ ค๋‚ด ๋‚ด์šฉ์„ ์ฝ์–ด๋ณด์•˜์ง€๋งŒ, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ์—๋Š” ๋„์›€์ด ๋˜์ง€ ์•Š์•˜๋‹ค.

๋„ค ๋ฒˆ์งธ๋กœ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฒœ์ฒœํžˆ ๋‹ค์‹œ ์ฝ๊ณ  ์„ค๊ณ„๋ฅผ ๋‹ค์‹œ ์งœ๋ณด์•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋˜‘๊ฐ™์€ ์„ค๊ณ„๋ฅผ ํ•  ๋ฟ ์„ค๊ณ„๊ฐ€ ๋‚˜์•„์ง€์ง„ ์•Š์•˜๋‹ค. ์„ค๊ณ„๋ฅผ ์ž˜ํ•˜๋Š” ๋ฒ•๋„ ๊ตฌ๊ธ€๋ง์— ์ฐพ๊ธฐ๋„ ํ•˜๊ณ , ๊ฐ์‚ฌ์˜ค์˜ ์š”์•ฝ๋ณธ์„ ์ฝ์œผ๋ฉฐ ์„ค๊ณ„๋„ ๋”ฐ๋ผ ํ•ด๋ณด์•˜์ง€๋งŒ ๋‚˜์•„์ง€์ง€ ์•Š์•˜๋‹ค.

๋‹ค์„ฏ ๋ฒˆ์งธ๋กœ SOLID 5์›์น™์„ ์„ค๋ช…ํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฝ๊ณ , ์ธํ”„๋Ÿฐ ๊ฐ•์˜๋„ ๋ณด์•˜์ง€๋งŒ ๊ทผ๋ณธ์ ์ธ ์›์ธ์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๋‹ค.

์—ฌ์„ฏ ๋ฒˆ์งธ๋กœ ๊ฐ์ฒด์ง€ํ–ฅ์„ ์ž˜ ์ดํ•ดํ•œ๊ฒŒ ์•„๋‹Œ๊ฐ€ ์‹ถ์–ด '๊ฐ์‚ฌ์˜ค' 2ํšŒ๋… ํ–ˆ์„ ๋•Œ์˜ ์“ด ๊ธ€์„ ๋‹ค์‹œ ์ฝ์–ด๋ณด์•˜๊ณ , ๋“œ๋””์–ด ํ•ด๊ฒฐ์˜ ์‹ค๋งˆ๋ฆฌ๋ฅผ ์ฐพ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๋‚˜๋Š” ๋ฉค๋ฒ„๋ณ€์ˆ˜๋กœ int๋‚˜ Stringํ˜• ๊ฐ™์€ ์›์‹œํƒ€์ž…์„ ์ƒํƒœ๋กœ ๊ฐ–๋Š” ๊ฐ์ฒด๋Š” ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ, ์ˆซ์ž์•ผ๊ตฌ์˜ Computer, User ๊ฐ™์€ ๊ฐ์ฒด์™€ ๊ฐ์‚ฌ์˜ค ์š”์•ฝ๋ณธ์— ์žˆ๋Š” Coffee, Barista ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ์ƒํƒœ๋กœ ๊ฐ–๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

์ด ์ƒํƒœ๋กœ ์ˆซ์ž์•ผ๊ตฌ๊ฒŒ์ž„์„ ๊ตฌํ˜„ํ•˜๋‹ค ๋ณด๋‹ˆ ๊ฐ์ฒด๋Š” ์ƒํƒœ(๋ฉค๋ฒ„๋ณ€์ˆ˜)๋ฅผ ๊ฐ€์ง€์ง€ ๋ชปํ–ˆ๊ณ  ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•„์š”ํ•œ ๋ณ€์ˆ˜๋“ค์€ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ๋˜๊ณ , ๋ฉ”์„œ๋“œ๋“ค์ด static ์ด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค. ๋ถ„๋ช…ํžˆ '๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด'๋ฅผ 2ํšŒ๋… ํ•  ๋•Œ๋Š”, ๊ฐ์ฒด์ง€ํ–ฅ์„ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋ง‰์ƒ ์ดํ•ดํ•œ ๊ฒƒ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ์— ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ค์› ๋˜ ๊ฒƒ์ด์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ์ผ๊ณฑ ๋ฒˆ์งธ๋กœ ๊ฐ์ฒด์ง€ํ–ฅ์„ ์„ค๋ช…ํ•˜๋ฉด์„œ ์ฝ”๋“œ๊ฐ€ ๊ฐ™์ด ์žˆ๋Š” '์˜ค๋ธŒ์ ํŠธ'๋ฅผ ์ฝ์—ˆ๋‹ค.

์˜ค๋ธŒ์ ํŠธ์˜ ์ž…์žฅ ํ‹ฐ์ผ“๊ณผ ์˜ํ™” ์ƒ์˜ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๊ฐ์ฒด์ง€ํ–ฅ์„ ์ƒ๊ฐํ•˜๋ฉฐ ๋”ฐ๋ผ ์น˜๋‹ˆ ์–ด๋ ค์›Œ์„œ ๋ฉˆ์ถ”๊ณ , ์ƒ๊ฐํ•˜๊ณ ์˜ ๋ฐ˜๋ณต์ด์—ˆ๋‹ค. ์ถ”๊ฐ€๋กœ ๋ฉ”์‹œ์ง€ ํŒŒํŠธ๋ฅผ ์ž˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‚ด๊ฐ€ ์“ด ๊ฐ์‚ฌ์˜ค ๋ฆฌ๋ทฐ ๊ธ€์—์„œ๋„ ๋ฉ”์‹œ์ง€์— ๊ด€ํ•œ ์„ค๋ช…์€ ์—†๋Š” ๊ฒƒ์ด์—ˆ๋‹ค!!(์ด์ œ๋Š” ์ถ”๊ฐ€ํ–ˆ๋‹ค!)

๋ฉ”์‹œ์ง€๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋‹ˆ ๊ฐ์ฒด๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์—†์—ˆ๊ณ , ์ด๋Š” ์˜์กด ๊ด€๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ• ์ง€์— ๋Œ€ํ•œ ๊ถ๊ธˆ์ฆ์œผ๋กœ ์ด์–ด์กŒ๋‹ค. ์ด ๊ถ๊ธˆ์ฆ์„ ๊ฐ–๊ณ  ์ฑ…์„ ์ฝ์–ด ๋‚˜๊ฐ”๊ณ , p.85์—์„œ ๋“œ๋””์–ด ๋‚ด๊ฐ€ ํ•™์Šตํ•œ ๋ชจ๋“  ๊ฒƒ๋“ค์ด ์‹ค๋กœ ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค.

 

p.85 - ํ˜‘๋ ฅ ๊ด€๊ณ„ ์†์—์„œ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ๋ฌด์—‡์„ ์ œ๊ณตํ•ด์•ผ ํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ๋ฌด์—‡์„ ์–ป์–ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๊ณ ๋ฏผํ•ด์•ผ๋งŒ ํ›Œ๋ฅญํ•œ ์ฑ…์ž„์„ ์ˆ˜ํ™•ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‚˜๋Š” ๊ฐ์ฒด์—๊ฒŒ ๋ฌด์—‡์„ ์ œ๊ณตํ•ด์•ผ ํ• ์ง€๋งŒ์„ ๊ณ ๋ฏผํ•ด์™”๊ธฐ ๋•Œ๋ฌธ์— ํ›Œ๋ฅญํ•œ ์„ค๊ณ„๋ฅผ ํ•˜์ง€ ๋ชปํ–ˆ๊ณ , ํ›Œ๋ฅญํ•œ ์ฑ…์ž„์„ ์ˆ˜ํ™•ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

ํ›Œ๋ฅญํ•œ ์ฑ…์ž„์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐ์ฒด๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๊ณ , ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๊ณง๋ฐ”๋กœ ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์˜ ์„ค๊ณ„๋ฅผ ๋‹ค์‹œ ํ•˜์˜€๊ณ , ์ด์ „ ์„ค๊ณ„์™€๋Š” ํ™•์—ฐํžˆ ์ฐจ์ด๊ฐ€ ๋‚ฌ๋‹ค!!

์•„๋ž˜์˜ ํ‘œ๋Š” ๋‹ฌ๋ผ์ง„ ์„ค๊ณ„์ด๋‹ค. 

์ด์ „ ์„ค๊ณ„ ๋ฐ”๋€ ์„ค๊ณ„
๋žœ๋ค ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•˜๋ผ → Computer
์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ผ → User
์ˆซ์ž๋ฅผ ๋น„๊ตํ•˜๋ผ → Game
๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋ผ → Game
App → ๊ฒŒ์ž„์„ ์‹คํ–‰ํ•˜๋ผ → BaseballGame
BaseballGame → ๋žœ๋ค ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•˜๋ผ → Computer
BaseballGame → ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ผ → User
BaseballGame → ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋ผ → Result
User → ์ˆซ์ž๋ฅผ ๊ฒ€์ฆํ•˜๋ผ → Validator

๋ฐ”๋€ ์„ค๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฌธ์ œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์ž ์ฑ…์—์„œ๋งŒ ๋ด์˜ค๋˜ ์ƒํƒœ์™€ ํ–‰๋™์ด ์žˆ๋Š” ์˜ˆ์ œ ์ฝ”๋“œ๋“ค์ฒ˜๋Ÿผ ๋‚ด ์ฝ”๋“œ๊ฐ€ ์™„์„ฑ๋˜์–ด๊ฐ”๋‹ค!

์ด ๋•Œ์˜ ์งœ๋ฆฟํ•จ๊ณผ ๋ฟŒ๋“ฏํ•จ, ๊นจ๋‹ฌ์•˜์„ ๋•Œ์˜ ์†Œ๋ฆ„๊ณผ ์ฆ๊ฑฐ์›€์ด ๋„ˆ๋ฌด ์ข‹๋‹ค. ๋๋๋‚ด ํ•ด๊ฒฐํ–ˆ์„ ๋•Œ ์˜ค๋Š” ์ด ๊ฐ์ •๋“ค์ด ์ตœ๊ณ ๋‹ค๐Ÿ˜

 

ํ•˜์ง€๋งŒ, ์ œ์ผ ์ค‘์š”ํ•œ ๊ฒ€์ฆ์„ ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. ๋‚ด๊ฐ€ ์ž˜ํ•œ๊ฑด์ง€, ์ข‹์€ ๊นจ๋‹ฌ์Œ์„ ์–ป์€๊ฑด์ง€๋ฅผ ํ™•์‹คํ•˜๊ฒŒ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์€ ์•„์‰ฝ๋‹ค.

๋‚จ์€ 3์ฃผ ๋™์•ˆ ๊พธ์ค€ํžˆ ๊ณ ๋ฏผํ•ด๋ด์•ผ์ง€!

 

*๋ฐ”๋€ ์ฝ”๋“œ์˜ ์ „๋ฌธ

๐Ÿ˜1์ฃผ์ฐจ๋ฅผ ๋งˆ์น˜๋ฉฐ

๊ตฌํ˜„ํ•  ๋•Œ์˜ ์ž๋ฐ”๋…์˜ ๋ฌธ์„œ์˜ ์ผ๋ถ€๋ถ„๋งŒ ์ฝ๊ณ  ํŒ๋‹จํ•œ ์ ๊ณผ '๊ฐ์‚ฌ์˜ค'์˜ ๋ฉ”์‹œ์ง€ ํŒŒํŠธ๋ฅผ ํ™•์‹คํžˆ ์ดํ•ดํ•˜์ง€ ์•Š์€ ์ ์œผ๋กœ ๋ฏธ๋ฃจ์–ด ๋ณผ ๋•Œ, ๋‚˜๋Š” ์„ฑ๊ธ‰ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

 

์„ฑ๊ธ‰ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ๋ณด์™„ํ• ์ง€๋ฅผ ๊ณ ๋ฏผํ–ˆ๊ณ  ๊ฒฐ๋ก ์„ ๋‚ด๋ ธ๋‹ค.

1. ๊ธ€์„ ์ฒœ์ฒœํžˆ ์ฝ๊ณ , ๋Œ€์ถฉ ์ฝ์ง€ ์•Š๊ธฐ!

2. ์ดํ•ดํ•œ ๊ฒƒ์—์„œ ๋๋‚˜์ง€ ์•Š๊ณ  ์–ด๋–ค ๊ฒƒ์— ๋จผ์ € ์ ์šฉํ•ด๋ณด๊ธฐ!

์ด 2๊ฐ€์ง€๋ฅผ ์ด์šฉํ•ด ๋ณด์™„ํ•ด์•ผ๊ฒ ๋‹ค.

 

๋ฌด์—‡๋ณด๋‹ค ์ดํ•ดํ•œ ๊ฒƒ์—์„œ ๋๋‚˜์ง€ ์•Š๊ณ  ์ ์šฉ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ์„ฑ์žฅ์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ์„ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ์ ์šฉํ•  ๋•Œ๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค.

๋ฌด์–ธ๊ฐ€๋ฅผ ํ•™์Šตํ•˜๋ฉด ๊ผญ ์ ์šฉ์„ ํ•ด๋ณด๊ฒ ๋‹ค๋Š” ๋งˆ์Œ์œผ๋กœ ์•ž์œผ๋กœ ํ•™์Šตํ•œ ๊ฒƒ๋“ค์„ ๊ผญ ์ฝ”๋“œ์— ์ ์šฉํ•ด์„œ ์ง€์†์ ์œผ๋กœ ์„ฑ์žฅํ•˜์ž! 

 

๊ทธ๋ฆฌ๊ณ , ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, "์™œ?"๋ฅผ ํ•ญ์ƒ ์ƒ๊ฐํ•ด์•ผ ๊ฒ ๋‹ค.

์™œ static ๋ฉ”์„œ๋“œ๋กœ ์„ ์–ธํ•˜๋ ค๋Š”์ง€ ๊ณ ๋ฏผ์„ ํ–ˆ๋‹ค๋ฉด ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•œ ํ›„๊ฐ€ ์•„๋‹ˆ๋ผ ํ•™์Šต ๋„์ค‘์— ์›์ธ์„ ์ฐพ์•˜์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ์ด ๋“ ๋‹ค.

๊ทธ ๋™์•ˆ, ๊ฐ„๋‹จํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋“ค์„ ํ’€๋ฉด์„œ ๋Š๋ผ์ง€ ๋ชปํ–ˆ์ง€๋งŒ ์ด ๊ฒฝํ—˜์„ ํ†ตํ•ด Java์–ธ์–ด์˜ ์‚ฌ์†Œํ•œ ํ‚ค์›Œ๋“œ๋“ค์ด ์ฝ”๋“œ์— ํฐ ๋ณ€ํ™”๋ฅผ ๋งŒ๋“ค์–ด ๋ƒ„์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์™œ static์œผ๋กœ ์„ ์–ธํ•˜๋ ค๊ณ ? , ์™œ ์ƒ์ˆ˜๋กœ ์„ ์–ธํ•˜๋ ค๊ณ ?, ์™œ List ๋กœ ์„ ์–ธํ•˜๋ ค๊ณ ? ๋“ฑ๋“ฑ ๋‚ด ์ฝ”๋“œ ํ•œ์ค„ ํ•œ์ค„์— ๋‚˜์˜ ์ƒ๊ฐ์„ ๋‹ด์•„ ๊ณ ๋ฏผ์„ ๋‹ด์•„ ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ์œ„์— ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ•˜๊ฒ ๊ตฌ๋‚˜๋ฅผ ๋ผˆ์ €๋ฆฌ๊ฒŒ ๋Š๊ผˆ๋‹ค.

 

์•ž์œผ๋กœ ์žˆ์„ ํ”„๋ฆฌ์ฝ”์Šค์— ๋‹ค์–‘ํ•˜๊ณ  ์‹ฌ๋„ ์žˆ๋Š” ๊ณต๋ถ€๋ฅผ ํ•ด์„œ ๋‚ด ์ฝ”๋“œ์— ํ™œ์šฉ์‹œํ‚ค๊ธฐ ๋ณด๋‹ค๋Š” ์ฝ”๋“œ ํ•œ ์ค„ ํ•œ ์ค„ ์ž‘์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์ƒ๊ฐ๊ณผ ๊ณ ๋ฏผ์„ ํ•˜๊ณ , ์ด ๊ณผ์ •์—์„œ ์ƒ๊ธฐ๋Š” ๊ถ๊ธˆํ•œ ๊ฒƒ๋“ค์„ ํ•™์Šตํ•ด ๋‚˜๊ฐ€์•ผ ๊ฒ ๋‹ค.