0. ์Šคํ„ฐ๋”” ์ง„ํ–‰

ํŒ€์›๋“ค๊ณผ ์ผ์ฃผ์ผ์— 1~2๋ฒˆ ์ •๋„ ๋…ผ์˜ํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ๊ณผ ์ƒ๊ฐ์„ ์ •๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.

์Šคํ„ฐ๋””๋Š” 1์‹œ๊ฐ„์„ ๋„˜๊ธฐ์ง€ ์•Š์œผ๋ ค๊ณ  ํ•˜์˜€์œผ๋ฉฐ ๊ฐ์ž ์ค€๋น„ํ•œ ๋‚ด์šฉ๋“ค์„ ๊ฐ€์ง€๊ณ  ์–˜๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜์˜€๋‹ค.

1. ์ผ„ํŠธ๋ฐฑ ๊ตฌํ˜„ ํŒจํ„ด์„ ์ฝ๊ธฐ ์ „์—

๊ทธ๋™์•ˆ ์ฝ”๋”ฉ์„ ํ•˜๋ฉด์„œ ์ถ”ํ›„ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ™” ๋น„์šฉ์„ ๊ณ ๋ คํ•˜๋ฉด์„œ ์ง  ์ ์ด ํฌ๊ฒŒ ์—†์—ˆ๋‹ค.

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

 

๊ทธ๋Ÿผ์—๋„ ํ‰์†Œ์— ์ž๋ฐ”๋‚˜ ๊ฐ์ฒด ์ง€ํ–ฅ์— ๋Œ€ํ•œ ์ง€์‹์„ ์ค‘์š”์‹œ ํ–ˆ์„๋ฟ ์ฝ”๋”ฉ์„ ํ•˜๋‹ค๊ฐ€ ํ•„์š”ํ•œ ํŒจํ„ด์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•ด๋ณด๊ฑฐ๋‚˜ ๋”ฐ๋กœ ์ฐพ์•„์„œ ๊ณต๋ถ€ํ•  ์ƒ๊ฐ์€ ์—†์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

 

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

์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํ•œ ๋””์ž์ธ ํŒจํ„ด ์ฑ…์ธ์ค„ ์•Œ์•˜์ง€๋งŒ ์ฑ…์˜ ๋ชฉ์ฐจ๋ฅผ ๋ณด๊ณ  ์ฝ”๋“œ์— ์—ฌ๋Ÿฌ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•˜์—ฌ์„œ ์ด ์ฑ…์œผ๋กœ ์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

2. ์ฝ๊ณ ๋‚˜์„œ ๋Š๋‚€ ์ 

์ฑ…์˜ ๋„์ž…๋ถ€๋ถ€ํ„ฐ "๋ณธ๋Šฅ์— ์˜ํ•œ ์ฝ”๋”ฉ์„ ์ง€์–‘ํ•˜๋ผ" ๋ผ๊ณ  ๋‚˜์™€์žˆ๋‹ค. 

์ด ๊ตฌ๋ฌธ์—์„œ ์ด ์ฑ…์ด ๋งํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ”๋ฅผ ์•Œ ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ ์ „๋ฐ˜์ ์œผ๋กœ ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์„ ์ค„์—ฌ์ฃผ๋Š” ์ชฝ์œผ๋กœ ํŒจํ„ด๋“ค์„ ์•Œ๋ ค์ฃผ๊ณ  ์žˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด์„œ ํด๋ž˜์Šค์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.

ํด๋ž˜์Šค์˜ ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ๋Š” ํ•จ๊ผ ์‚ฌ์šฉ๋˜๋ฉฐ ๋กœ์ง์€ ๋ฐ์ดํ„ฐ์— ๋น„ํ•ด ๋ณ€ํ™”์œจ์ด ๋‚ฎ๋‹ค. ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๋Š” 
๊ด€๋ จ ๋กœ์ง์— ์˜ํ•ด ๋ณ€ํ™”ํ•˜๋ฉฐ, ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”์œจ์€ ๋น„์Šทํ•˜๋‹ค.

 

ํ‰์†Œ ํด๋ž˜์Šค์˜ ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊นŠ์ด ๊ณ ๋ฏผํ•ด๋ณธ์ ์ด ์—†๋˜ ๋‚˜๋Š” ์ด๋Ÿฐ ๊ธ€๋“ค์„ ๋ณด๊ณ  ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ ์ฝ”๋”ฉ์„ ํ• ๋•Œ๋„ ํŒจํ„ด๋“ค์„ ์ƒ๊ฐํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์งค ์ˆ˜ ์žˆ์—ˆ๋‹ค.

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

 

์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํžˆ ๊ธฐ์ˆ ์ ์ธ ๊ด€์ ์ด ์•„๋‹Œ "์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜"์ด๋ผ๊ณ  ํ‘œํ˜„์„ ํ•œ ์ ๋„ ๋งค์šฐ ์ธ์ƒ๊นŠ์—ˆ๋‹ค. ์ข‹์€ ์ฝ”๋“œ๋Š” ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ์ž˜ ๋˜๊ณ  ์ด๋Š” ๊ณง ์œ ์ง€ ๋ณด์ˆ˜ ๋น„์šฉ์„ ์ค„์—ฌ์ค€๋‹ค๋Š” ๋ง์ด ๋‚˜์—๊ฒŒ ์ž˜ ์™€๋‹ฟ์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

 

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

 

์ฑ…์—์„œ ๋งํ•ด์ฃผ๋Š” ์ข‹์€ ํŒจํ„ด๋“ค์ด ๋งŽ๊ธฐ์—, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ ํŒจํ„ด ์ฑ…์„ ์ฝ์œผ๋ฉด์„œ ํ•˜๋‚˜์”ฉ ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ•ด๋‘๋ฉด์„œ ์ฝ์œผ๋ ค๊ณ  ํ•˜์˜€๋‹ค.

 

3. ๊ฐœ์ธ์ ์œผ๋กœ ์•„์‰ฌ์› ๋˜ ์ 

์ฑ…์˜ ๋‚ด์šฉ์€ ์ „๋ฐ˜์ ์œผ๋กœ ์ข‹์•˜์ง€๋งŒ ์•„๋ฌด๋ž˜๋„ ์˜›๋‚  ์ฑ…์ด๋‹ค๋ณด๋‹ˆ๊นŒ,๊ธฐ์ˆ ์ด๋‚˜ ์ž๋ฐ” ์ฝ”๋“œ ๊ฐ™์€ ๋ถ€๋ถ„์—์„œ ๋ ˆ๊ฑฐ์‹œํ•˜๋‹ค๋Š” ๋Š๋‚Œ์„ ์ง€์šธ ์ˆ˜๋Š” ์—†์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‹ค๋ฅด๊ฒŒ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์˜›๋‚  ๊ฐœ๋ฐœ์ž๋“ค์ด ํ–ˆ๋˜ ๊ณ ๋ฏผ๋“ค๊ณผ ๊ทธ๋กœ ์ธํ•œ ๋ฐœ์ „ ๋ฐฉํ–ฅ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋˜ ์‹œ๊ฐ„์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋˜ ๋‹ค๋ฅธ ์•„์‰ฌ์šด ์ ์€ ๋ฒˆ์—ญ์ฒด๊ฐ€ ์‚ด์ง ์–ด์ƒ‰ํ•œ ๋ถ€๋ถ„์ด ์žˆ์–ด์„œ ์ดํ•ด์— ๋ฐฉํ•ด๊ฐ€ ์กฐ๊ธˆ ๋˜์—ˆ๋‹ค.

์ด ๋ถ€๋ถ„๋“ค์€ ์Šคํ„ฐ๋”” ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ ๋ฌธ๋งฅ์„ ์œ ์ถ”ํ•ด๊ฐ€๋ฉด์„œ ์˜๋ฏธ๋ฅผ ์•Œ์•„๋งž์ถ”๋Š” ์žฌ๋ฏธ๊ฐ€ ์žˆ์—ˆ๋‹ค.

4. ๋งˆ๋ฌด๋ฆฌ ํšŒ๊ณ 

๋น„๋ก ํด๋ก  ์ฝ”๋”ฉ ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„์ด๋ž‘ ๊ฒน์ณ์„œ ๊ฐ์ฒด ์ง€ํ–ฅ ์Šคํ„ฐ๋””๋ณด๋‹ค๋Š” ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜์ง€ ๋ชปํ•˜์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ํ˜ผ์ž๊ฐ€ ์•„๋‹Œ ํŒ€์›๋“ค๊ณผ ๋งค์ฃผ ์ •ํ•ด์ง„ ์‹œ๊ฐ„์— ์˜๊ฒฌ์„ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๋„ ์ฑ…์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์‹œ๊ฐ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

 

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

๋ถ€๋‹ด์—†์ด ์ฝ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์ฑ…์—์„œ๋Š” ํŒจํ„ด์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์†Œ๊ฐœํ•œ๋‹ค.

ํŒจํ„ด์€ ์ง€๊ธˆ ๋‹น์žฅ ๋ฌด์—‡์„ ํ•ด์•ผํ• ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๊ณ , ๊ฐ€์น˜๋Š” ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋™๊ธฐ๋ฅผ ์•Œ๋ ค์ฃผ๋ฉฐ, ์›์น™์€ ๋™๊ธฐ๋ฅผ ํ–‰๋™์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟ€์ง€๋ฅผ ์•Œ๋ ค์ค€๋‹ค.

 

์ด์ฒ˜๋Ÿผ ํŒจํ„ด๋“ค์„ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์— ๋Œ€์ž…ํ•ด๋ณด๋ฉด ์ถฉ๋ถ„ํžˆ ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์ข‹๊ณ  ์ดํ•ดํ•˜๊ธฐ ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

์ปฌ๋ ‰์…˜

์ปฌ๋ ‰์…˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐ์ฒด์˜ ๋ฌถ์Œ์— ๋Œ€ํ•ด ์ œ๊ฐ๊ฐ ๋‹ค๋ฅธ ์˜๋ฏธ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

์ฃผ๋กœ ์„ฑ๋Šฅ์— ๊ด€๋ จ๋œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์˜๋„๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

 

์ปฌ๋ ‰์…˜์ด ํ‘œํ˜„ํ•˜๋Š” 3๊ฐ€์ง€ ๊ฐœ๋…

1. ํฌ๊ธฐ

- ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ์ƒ์„ฑ ์‹œ ๊ณ ์ •๋˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ์ปฌ๋ ‰์…˜์€ ์ค‘๊ฐ„์— ํฌ๊ธฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. ์›์†Œ ๊ฐ„ ์ˆœ์„œ

- ์›์†Œ์˜ ์ˆœ์„œ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ˆœ์„œ๋ฅผ ๋ณด์ „ํ•˜๋Š” ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

 

3. ๋…์ž์„ฑ

- ์ผ๋ถ€ ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ ์–ด๋–ค ์›์†Œ๊ฐ€ ์ปฌ๋ ‰์…˜์— ์†ํ•ด์žˆ๋Š” ์ง€ ํ˜น์€ ๋ช‡๋ฒˆ ๋‚˜ํƒ€๋‚ฌ๋Š”์ง€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

 

์ธํ„ฐํŽ˜์ด์Šค

๋ฐฐ์—ด

๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

์œ ์—ฐ์„ฑ ๋ฌธ์ œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.

 

Iterable

์›์†Œ๋ฅผ ์ฃผ๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋ง‰์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์›์†Œ๊ฐ€ ์ง€์›Œ์งˆ ์œ„ํ—˜์ด ์žˆ๋‹ค.

 

Collection

Iterable์„ ์ƒ์†ํ•˜๋ฉฐ ์—ฌ๋Ÿฌ ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ์ง€์›ํ•œ๋‹ค.

 

*์„ ์–ธ์„ ์ผ๋ฐ˜์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋‚จ๊ฒจ๋‘๋ฉด ๊ตฌํ˜„ ํด๋ž˜์Šค๋ฅผ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

 

List

Collection์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์„œ ์›์†Œ ๊ฐ„์— ์ •ํ•ด์ง„ ์ˆœ์„œ๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค.

์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์–ด๋–ค ์›์†Œ๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Set

์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

SertedSet

์ˆœ์„œ๋Š” ์œ ์ง€๋˜์ง€๋งŒ ์ค‘๋ณต ์›์†Œ๊ฐ€ ์—†๋Š” ์ปฌ๋ ‰์…˜์ด๋‹ค.

๋ฉ”์‹œ์ง€

๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์œผ๋ฉด, ๋ฐœ์‹ ์ž์˜ ์ƒํƒœ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์ง€๋งŒ ์ˆ˜์‹ ์ž์˜ ์ƒํƒœ๋Š” ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.

๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์‹œ์ €๋Š” ๋‹น์žฅ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์„ธ๋ถ€ ๊ตฌํ˜„์ด ์กด์žฌํ•œ๋‹ค ๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๋‚ดํฌํ•  ์ˆ˜ ์žˆ๋‹ค. (์บก์Šํ™”)

 

function() {
	input();
    process();
    output();
}

 

์„ ํƒ ๋ฉ”์‹œ์ง€

์„ ํƒ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช…์‹œ์  ์กฐ๊ฑด๋ฌธ์˜ ์‚ฌ์šฉ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ณผ๋„ํ•œ ์„ ํƒ๋ฉ”์‹œ์ง€์˜ ์‚ฌ์šฉ์€ ๊ฐ€๋…์„ฑ์„ ์ €ํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

public void display(Subject subject, Brush brush) {
	brush.display(subject);
}

 

๋”๋ธ” ๋””์ŠคํŒจ์น˜

2๊ฐœ์˜ ์„ ํƒ ๋ฉ”์‹œ์ง€๋ฅผ ์ง๋ ฌ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

https://www.youtube.com/watch?v=s-tXAHub6vg&loop=0 

 

๋ถ„๋ฆฌ ๋ฉ”์‹œ์ง€

์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๋ณต์žกํ•œ ์•Œ๊ณ ์ฆ˜์„ ๋‹จ๊ณ„๋ณ„๋กœ ๋ชจ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

๋˜๋Œ๋ฆผ ๋ฉ”์‹œ์ง€

๋„์šฐ๋ฏธ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”์†Œ๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

void process() {
	helper.process(this);
}

void compute() {
	input();
    process(helper);
    output();
}

 

์ดˆ์ฒญ ๋ฉ”์‹œ์ง€

๋กœ์ง์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ตฌํ˜„๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋กœ ์„ ์–ธํ•ด์„œ ์ถ”์ƒ ๋ฉ”์‹œ์ง€์ž„์„ ๋ถ„๋ช…ํžˆํ•˜๋ผ

 

์„ค๋ช… ๋ฉ”์‹œ์ง€

 

highlight ๋ฉ”์†Œ๋“œ์™€ ๊ฐ™์ด ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์˜๋„๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

highlight() {
	reverse();
}

 

๋˜ ์ฃผ์„์„ ๋ถ™์ด๊ณ  ์‹ถ์€ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค,.

flags |= LOADED_BIT; // ๋กœ๋“œ ๋น„ํŠธ๋ฅผ ์„ค์ •

setLoadedFlag() {
	flags |= LOADED_BIT;
};

์ด๋Ÿฌํ•œ ํ•œ์ค„์งœ๋ฆฌ ๋ฉ”์†Œ๋“œ๋Š” ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ๋•๋Š”๋‹ค.

 

์˜ˆ์™ธ ํ๋ฆ„

์˜ˆ์™ธ ํ๋ฆ„์€ ์ˆ˜ํ–‰ ๋นˆ๋„๊ฐ€ ๋‚ฎ๊ณ  ์ˆ˜์ • ๋นˆ๋„๊ฐ€ ๋‚ฎ์œผ๋ฉฐ, ์ฃผ์š” ํ๋ฆ„์— ๋น„ํ•ด ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ์ค‘์š”์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

์ฃผ๋ฃŒ ํ๋ฆ„์€ ๋ช…๋ฃŒํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๊ณ  ์˜ˆ์™ธ ํ๋ฆ„์€ ์ฃผ์š” ํ๋ฆ„์˜ ๋ช…๋ฃŒ์„ฑ์„ ํ›ผ์†ํ•˜์ง€ ์•Š๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ๋ช…๋ฃŒํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๋ผ !

 

๋ณดํ˜ธ์ ˆ

๋ณดํ˜ธ์ ˆ์„ ์‚ฌ์šฉํ•ด์„œ ๋ณต์žกํ•œ ์ œ์–ด ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

void conpute() {
	Server server = getServer();
    if (server != null) {
    	Client client = server.getClient();
        if(client != null) {
        	....
        }
    }
}

 

void conpute() {
	Server server = getServer();
    if (server != null)
    	return;
    Client client = server.getClient();
    if(client != null)
    	return;
    ...
}

 

์˜ˆ์™ธ

๋ฉ”์†Œ๋“œ๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋ฉด ๋ฉ”์†Œ๋“œ์˜ ์„ค๊ณ„์™€ ๊ตฌํ˜„์˜ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ€๋Šฅํ•˜๋ฉด ์ˆœ์ฐจ์  ๊ตฌ๋ฌธ , ๋ฉ”์‹œ์ง€ , ๋ฃจํ”„ ์ œ์–ด๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์ œ์–ด ํ๋ฆ„์ด ์•ˆ๋  ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค

 

์˜ˆ์™ธ ์ „๋‹ฌ

ํ•˜์œ„ ์ˆ˜์ค€์˜ ์˜ˆ์™ธ๋Š” ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

ํ•˜์œ„ ์ˆ˜์ค€์˜ ์˜ˆ์™ธ๋ฅผ ์ƒ์œ„ ์ˆ˜์ค€ ์˜ˆ์™ธ๋กœ ํฌ์žฅํ•˜๋ผ 

 

 

๊ฐ์ฒด๋Š” ์™ธ๋ถ€์— ๋“œ๋Ÿฌ๋‚˜๋Š” ํ–‰์œ„์™€ ํ–‰์œ„๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ์ƒํƒœ๋ฅผ ๋ฌถ์–ด์ฃผ๋Š” ํŽธ๋ฆฌํ•œ ๋‹จ์œ„๋‹ค.

์ƒํƒœ

-  ์ƒํƒœ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์œ ์‚ฌํ•œ ์ƒํƒœ๋ฅผ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•˜๊ณ  ๊ฐ ์ƒํƒœ๋Š” ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•ด์•ผํ•œ๋‹ค.

 

๋‘ ๊ฐœ์˜ ์ƒํƒœ๊ฐ€ ์œ ์‚ฌํ•œ ์ง€ ์•Œ๋ ค๋ฉด

1. ๋‘ ๊ฐœ์˜ ์ƒํƒœ๊ฐ€ ๋™์ผํ•œ ์—ฐ์‚ฐ ์•ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š”๊ฐ€?

2. ๋™์ผํ•œ ์‹œ์ ์— ์ƒ์„ฑ๋˜๊ณ  ์†Œ๋ฉธ๋˜๋Š”๊ฐ€?

๋ฅผ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

 

์ง์ ‘ ์ ‘๊ทผ

- ์ง์ ‘ ์ ‘๊ทผ์˜ ์žฅ์ ์€ ๋ช…ํ™•์„ฑ์ด๋‹ค.

x=10 // ๋งค์šฐ๋งค์šฐ ๋ช…ํ™•ํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์•Œ๋ ค์ฃผ๊ธฐ๋Š” ์–ด๋ ต๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด

doorRegister = 1; // ์ง๊ด€์ ์ด์ง€ ์•Š์Œ
door.open(); // ๋งค์šฐ ์ง๊ด€์ ์ž„

๋”ฐ๋ผ์„œ ์ง์ ‘ ์ ‘๊ทผ์ด ๋งŽ๋‹ค๋ฉด ์›ํ™œํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฐ„์ ‘ ์ ‘๊ทผ

- ๋ช…ํ™•์„ฑ๊ณผ ์ง์ ‘์„ฑ์„ ํฌ์ƒํ•ด์„œ ์œ ์—ฐ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

- 2๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค.

void setValue(int number){
	this.number = number;
    value = width * number;
}

 

๊ณต์šฉ ์ƒํƒœ

- ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์š”์†Œ๋Š” ํด๋ž˜์Šค์— ํ•„๋“œ๋ฅผ ์„ ์–ธํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.

- ๊ฐ ๊ฐ์ฒด์˜ ๊ณต์šฉ ์ƒํƒœ๋Š” ๋ชจ๋‘ ๋ฒ”์œ„์™€ ์ƒ๋ช… ๊ธฐ๊ฐ„์ด ๊ฐ™์•„์•ผํ•œ๋‹ค.

class Point {
	int x;
    int y;
}

๊ฐ€๋ณ€ ์ƒํƒœ

- ๋ฐ์ดํ„ฐ ์š”์†Œ์˜ ์ด๋ฆ„์„ ํ‚ค๋กœํ•˜๊ณ  ๊ฐ’์„ ๋ฐ์ดํ„ฐ๋กœ ํ•˜๋Š” ๋งต์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

- ์œ ์—ฐํ•˜๊ธด ํ•˜์ง€๋งŒ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ์–ด๋ ต๋‹ค.

- ๊ฐ ํ•„๋“œ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ•„๋“œ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ ์œ ์šฉํ•˜๋‹ค.

 

์™ธ์žฌ ์ƒํƒœ

์–ด๋–ค ๊ฐ์ฒด์™€ ๊ด€๋ จ๋œ ํŠน์ˆ˜ ๋ชฉ์  ์ •๋ณด๋Š” ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ํ•„์š”๋กœ ํ•˜๋Š” ๋ถ€๋ถ„์— ๋‘๋Š” ๊ฒŒ ๋‚ซ๋‹ค.

๋‹ค๋งŒ ์™ธ์žฌ ์ƒํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด์˜ ๋ณต์‚ฌ๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค.

 

๋ณ€์ˆ˜

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์—๋Š” ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์‹œ์šฉํ•˜๊ณ  ๊ฐ„๊ฐ„ํžˆ ์ •์  ๋ณ€์ˆ˜์™€ ์ „์šฉ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด์„ฑ์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜๋ฅผ ์ค„์ด๋ฉด ๋ฌธ๋งฅ๋งŒ์œผ๋กœ๋„ ์‰ฝ๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ณ€์ˆ˜์˜ ์ƒ๋ช… ์‹œ๊ฐ„์€ ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„์— ๊ฐ€๊นŒ์šด๊ฒŒ ์ข‹๋‹ค.

๊ฐ™์€ ๋ฒ”์œ„์—์„œ ์ •์˜๋˜๋Š” ๋ณ€์ˆ˜๋“ค์€ ๋ชจ๋‘ ๊ฐ™์€ ์ƒ๋ช… ๊ธฐ๊ฐ„์„ ๊ฐ€์ ธ์•ผํ•œ๋‹ค.

 

์ง€์—ญ๋ณ€์ˆ˜ 

์ง€์—ญ ๋ณ€์ˆ˜๋Š” ๊ฐ€๊ธ‰์  ์ตœ์†Œ ๋ฒ”์œ„ ๋‚ด์—์„œ ์„ ์–ธํ•˜๋ผ

 

์ง€์—ญ ๋ณ€์ˆ˜๋Š” ๋„์šฐ๋ฏธ ๋ฉ”์†Œ๋“œ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ ์—ฐ์‚ฐ์— ํ•„์š”ํ•œ ํ‘œํ˜„์€ ๋ฉ”์†Œ๋“œ ๋‚ด์šฉ์ด ๋˜๊ณ , ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์ด ๋œ๋‹ค.

 

ํ•„๋“œ

ํ•„๋“œ์˜ ๋ฒ”์œ„์™€ ์ƒ๋ช…๊ธฐ๊ฐ„์€ ํ•„๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์™€ ๊ฐ™๋‹ค.

 

๋งŒ์•ฝ ํ•„๋“œ๋ฅผ ๊ฐ€์žฅ ์•ž์— ์„ ์–ธํ•˜๋ฉด , ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋ ์ง€์— ๋Œ€ํ•œ ๋ฌธ๋งฅ์„ ์ œ๊ณตํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

๋’ค์— ์„ ์–ธํ•œ๋‹ค๋ฉด ์ค‘์š”์„ฑ์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋–จ์–ด์ง„๋‹ค๋Š” ๊ฒƒ์„ ์•”์‹œํ•œ๋‹ค.

 

๋ถˆ๋ฆฐ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด "๊ฐ์ฒด๊ฐ€ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค" ๋Š” ๊ฒƒ์„ ๋‚ดํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํŒŒ๋ผ๋ฏธํ„ฐ

ํ•˜๋‚˜์˜ ๊ฐ์ฒด์—์„œ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฐ™์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค๋ฉด , ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ˜ธ์ถœ๋˜๋Š” ๊ฐ์ฒด์— ํฌํ•จํ•˜๋ผ

 

Server s = new Server();
s.a(this);
s.b(this);
s.c(this);

์ด ์ฝ”๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

Server s = new Server(this);
s.a();
s.b();
s.c();

 

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์˜์กด์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ต์…˜ ํŒŒ๋ผ๋ฏธํ„ฐ

๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์•ž์—์„œ ์ „๋‹ฌํ•˜๊ณ  , ์˜ต์…˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋’ค์— ์ „๋‹ฌํ•œ๋‹ค.

 

public Server();
public Server(int port);
public Server(int port, int log)

์ด๋ฅผ ๋ง์›๊ฒฝ์‹ ํŒŒ๋ผ๋ฏธํ„ฐ ํŒจํ„ด์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

 

๊ฐ€๋ณ€ ์ธ์ž

์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž„์˜์˜ ์ˆ˜์˜ ์ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

method(Class... classes)

 

ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ์ฒด

์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•จ๊ป˜ ์—ฌ๋Ÿฌ ๋ฉ”์†Œ๋“œ๋กœ ์ „๋‹ฌ๋œ๋‹ค๋ฉด, ์ด๋“ค์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด x,y,heigh,width ๋ฅผ ๋ฌถ์–ด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

setOuterBounds(x, y, width, height)

setOuterBounds(bounds)

ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ์งง์•„์ง€๊ณ  ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์ด ๋ฐ€์ ‘ํ•œ ์—ฐ๊ด€์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ๊ฐ์ฒด์˜ ์ƒ์„ฑ์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์ผ์–ด๋‚œ๋‹ค๋ฉด ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ์ฒด๋ฅผ ์—†์• ๋Š” ์ชฝ์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค.

 

์ƒ์ˆ˜

 

๋ณ€ํ™”ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ static final์„ ํ†ตํ•ด ์„ ์–ธํ•˜๊ณ  ๊ทธ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ๋” ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

์ดˆ๊ธฐํ™”

์ดˆ๊ธฐํ™”๋Š” ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— ์•Œ๊ณ  ์žˆ๋Š” ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ์ž‘์—…์ด๋‹ค.

 

์ดˆ๊ธฐํ™”๋Š” ๊ฐ€๊ธ‰์  ์„ ์–ธ๊ณผ ํ•จ๊ป˜ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๋งŒ์•ฝ ์ดˆ๊ธฐํ™”์— ๋“œ๋Š” ๋น„์šฉ์ด ๋น„์‹ธ๋‹ค๋ฉด ์ƒ์„ฑ๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค..

 

์—ด์„ฑ์  ์ดˆ๊ธฐํ™”(eager)

 

๋ชจ๋“  ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™” ์ดํ›„์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜๊ฑฐ๋‚˜ ์ƒ์„ฑ๋˜์ž๋งˆ์ž ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

 

์„ ์–ธ๋ฌธ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด ์„ ์–ธ ํƒ€์ž…๊ณผ ์‹ค์ œ ํƒ€์ž…์„ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

List<Integer> number = new ArrayList<>();

 

์„ ์–ธ๋ฌธ์—์„œ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ƒ์„ฑ์ž์—์„œ ์ดˆ๊ธฐํ™”ํ•˜๋ผ

 

class Point {
	int x,y;
    Point(int x,int y){
    	this.x = x;
        this.y = y;
    }
}

 

๊ฒŒ์œผ๋ฅธ ์ดˆ๊ธฐํ™”(lazy)

 

์ดˆ๊ธฐํ™” ๋น„์šฉ์ด ํฌ๊ฑฐ๋‚˜ ๋น„์šฉ ๋ถ€๋‹ด์„ ๋Šฆ์ถ”๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด ๋œ๋‹ค.

ํด๋ž˜์Šค

 

๋‚ด๋ถ€ ํด๋ž˜์Šค

 

์ž‘์€ ์ „์šฉ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ž˜์Šค ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜์ง€ ์•Š๊ณ  ํด๋ž˜์Šค์˜ ์žฅ์ ์„ ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‚ด๋ถ€ ํด๋ž˜์Šค๋Š” ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ฅผ ๊ฐ์‹ผ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•”๋ฌต์ ์œผ๋กœ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค.

๋ช…์‹œ์ ์œผ๋กœ ํด๋ž˜์Šค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •ํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๊ฐ์‹ผ ํด๋ž˜์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

public class Enclose {
	private String field;
    
    public class Inner {
    	public String example() {
        	return field;
        }
     }

}

๋งŒ์•ฝ ์™ธ๋ถ€ ํด๋ž˜์Šค์™€ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋œ ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ฅผ ์ •์ ์œผ๋กœ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค.

 

์ธ์Šคํ„ด์Šค๋ณ„ ํ–‰์œ„

 

๊ฐ์ฒด์˜ ๋กœ์ง์ด ํด๋ž˜์Šค์— ์˜ํ•ด ์™„์ „ํžˆ ์ •์˜๋  ๋•Œ, ์ฝ”๋“œ ๋…์ž๋Š” ์–ด๋–ค ์ผ์ด ๋ฒŒ์–ด์ง€๋Š”์ง€ ์ดํ•ดํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ธ์Šคํ„ด์Šค ๋ณ„๋กœ ๋กœ์ง์ด ๋‹ค๋ฅด๋‹ค๋ฉด ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์—†๋‹ค.

 

ํšจ๊ณผ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•ด ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ํ›„์—๋Š” ์ธ์Šคํ„ด์Šค ๋ณ„ ํ–‰๋™์„ ๋ณ€ํ™”์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

์กฐ๊ฑด๋ฌธ

 

์กฐ๊ฑด๋ฌผ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ธ์Šคํ„ด์Šค ๋ณ„ ํ–‰๋™์„ ์ง€์›ํ•˜๋ฉด์„œ๋„ ๋ชจ๋“  ๋กœ์ง์„ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค ์•ˆ์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

ํžˆ์ž๋ฏผ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ๊ฒฝ๋กœ๊ฐ€ ๋งŽ์œผ๋ฉด ๋งŽ์„ ์ˆ˜๋ก ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธธ ํ™•๋ฅ ์ด ๋†’์•„์ง„๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์€ ์Šค์œ„์น˜ ๋ฌธ์„ ์ƒ๊ฐํ•ด๋ณด์ž

public boolean contains(Point p) {
	switch (getType()) {
    	case A :
        // ...
        case B :
        // ...
    }
}

์—ฌ๊ธฐ์„œ case C ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด , ์Šค์œ„์น˜๋ฌธ์— ์ƒˆ๋กœ์šด ์ ˆ์„ ์‚ฝ์ž…ํ•˜๊ณ  ํด๋ž˜์Šค ๋˜ํ•œ ์ˆ˜์ •ํ•ด์•ผ ํ• ์ˆ˜๋„ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ํ•˜์œ„ ํด๋ž˜์Šค๋‚˜ ์œ„์ž„ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์„œ ์กฐ๊ฑด๋ฌธ์„ ๋ฉ”์„ธ์ง€๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์œ„์ž„

์œ„์ž„์„ ํ†ตํ•ด์„œ ๊ฐ ์ธ์Šคํ„ด์Šค์•ณ์„œ ๋‹ค๋ฅธ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋กœ์ง์€ ์œ„์ž„ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํด๋ž˜์Šค์— ๋“ค์–ด์žˆ์ง€๋งŒ , ๋ณ€ํ˜•์€ ์—ฌ๋Ÿฌ ๊ฐ์ฒด์— ๊ฐ๊ฐ ๊ตฌํ˜„๋œ๋‹ค.

 

public void mouseDown() {
	getTool().mouseDown();
}

 

ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ ํƒ์ž

 

ํ•œ๋‘๊ฐœ์˜ ๋ฉ”์†Œ๋“œ์—์„œ๋งŒ ์ธ์Šคํ„ด์Šค๋ณ„ ํ–‰๋™์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฆฌํ”Œ๋ ‰์…˜์„ ํ†ตํ•ด ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋„ ์ข‹๋‹ค

String name;
public void runTest() throws Exception {
	Class[] noArgument = new class[0];
    Method method = getClass().getMethod(name,noArguments);
    method.invoke(this,new Object[0]);
}

 

์ต๋ช… ๋‚ด๋ถ€ ํด๋ž˜์Šค

 

์ต๋ช… ๋‚ด๋ถ€ ํด๋ž˜์Šค๋Š” ํ•œ๊ณณ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•œ ํ›„์— ์ง€์—ญ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋•Œ ํด๋ž˜์Šค ์ด๋ฆ„์€ ์ง€์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

ํšจ์œจ์ ์ธ ์‚ฌ์šฉ์„ ์œ„ํ•ด API๊ฐ€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฑฐ๋‚˜ ์ƒ์œ„ ํด๋ž˜์Šค๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•ด์„œ ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.

 

์ต๋ช… ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ธ์Šคํ„ด์Šค์—์„œ ์‚ฌ์šฉํ•  ์ฝ”๋“œ๋ฅผ ์•Œ์•„์•ผํ•œ๋‹ค.

๋˜ํ•œ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ค์›Œ์„œ ๋ณต์žกํ•œ ๋กœ์ง์— ์ ์ ˆ์น˜์•Š๋‹ค.

ํด๋ž˜์Šค

ํด๋ž˜์Šค๋Š” ๋น„์Šทํ•œ ์„ฑ์งˆ์„ ๊ฐ€์ง„ ๊ฒƒ์„ ์ด์นญํ•˜๋ฉฐ, ๊ฐ์ฒด๋Š” ํด๋ž˜์Šค๊ฐ€ ๊ตฌ์ฒดํ™”๋œ ๊ฒƒ์ด๋‹ค.

 

ํด๋ž˜์Šค

 

ํด๋ž˜์Šค์˜ ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ๋Š” ํ•จ๊ผ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋กœ์ง์€ ๋ฐ์ดํ„ฐ์— ๋น„ํ•ด ๋ณ€ํ™”์œจ์ด ๋‚ฎ๋‹ค. ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๋Š” 
๊ด€๋ จ ๋กœ์ง์— ์˜ํ•ด ๋ณ€ํ™”ํ•˜๋ฉฐ, ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”์œจ์€ ๋น„์Šทํ•˜๋‹ค.

๋Œ€์ฒด๋กœ ์ด ์„ ์–ธ์„ ๋‚ดํฌํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์ ˆ๋Œ€์ ์ด์ง€๋Š” ์•Š๋‹ค.

 

๋”ฐ๋ผ์„œ ํšจ๊ณผ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•ด์„œ ๋กœ์ง์„ ํด๋ž˜์Šค ๋‹จ์œ„๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋‚œ์ง€, ๋กœ์ง ์‚ฌ์ด์˜ ์ฐจ์ด์ ์„ ์–ด๋–ป๊ฒŒ ํšจ๊ณผ์ ์œผ๋กœ 

ํ‘œํ˜„ํ•ด์•ผํ•˜๋Š”์ง€ ๋ฐฐ์›Œ์•ผ ํ•œ๋‹ค.

 

ํด๋ž˜์Šค ๊ณ„์ธต์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์œ„ ํด๋ž˜์Šค ๋˜ํ•œ ๋ชจ๋‘ ์ดํ•ดํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ฝ๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค.

๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ธฐ ๋ณด๋‹จ ์„ ๋ณ„์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์ž

 

ํด๋ž˜์Šค๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์„ค๊ณ„ ์š”์†Œ ์ค‘ ๊ฐ’์ด ๋น„์‹ผ ํŽธ์ด๋ฏ€๋กœ, ์˜๋ฏธ ์žˆ๋Š” ์ž‘์—…์—๋งŒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ํด๋ž˜์Šค์˜ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ์„ ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋‹จ์ˆœํ•œ ์ƒ์œ„ ํด๋ž˜์Šค ์ด๋ฆ„

 

์ ํ•ฉํ•œ ํด๋ž˜์Šค ์ด๋ฆ„์€ ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ํ–ฅ์ƒ ์‹œ์ผœ์ค€๋‹ค.

์ค‘์š”ํ•œ ํด๋ž˜์Šค ์ด๋ฆ„์— ๋Œ€ํ•ด์„œ๋Š” ํ•œ ๋‹จ์–ด๋กœ ๋œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ณ  , ๋ฉ”ํƒ€ํฌ(์€์œ )๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค !

 

ํ•œ์ •์  ํ•˜์œ„ํด๋ž˜์Šค ์ด๋ฆ„

 

ํ•˜์œ„ํด๋ž˜์Šค ์ด๋ฆ„์€ ์ƒ์œ„ ํด๋ž˜์Šค์™€ ๋‹ฌ๋ฆฌ ๊ฐ„๊ฒฐ์„ฑ์€ ํฌ๊ธฐํ•˜๋”๋ผ๋„ ํ‘œํ˜„์„ฑ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ ํ•˜์œ„ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ƒ์œ„ ํด๋ž˜์Šค๋ผ๋ฉด ๋‹ค์‹œ ๋‹จ์ˆœ์„ฑ์„ ์„ ํƒํ•ด์•ผํ•œ๋‹ค.

 

๋‹ค๋ฅธ ๊ฒฝ์šฐ๋Š” ๋‹ค๋‹จ๊ณ„ ํด๋ž˜์Šค ๊ณ„์ธต์ด๋‹ค. 

๊ธฐ๊ณ„์ ์œผ๋กœ ๋ฐ”๋กœ ์œ„์˜ ์ƒ์œ„ ํด๋ž˜์Šค ์ด๋ฆ„์— ์ˆ˜์‹์–ด๋ฅผ ๋ถ™์ด๊ธฐ ๋ณด๋‹จ , ๊ฐ€์žฅ ์œ ์‚ฌํ•œ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ๋ฐ”ํƒ•์œผ๋กœ

์ง“๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

ํšจ๊ณผ์ ์ธ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์œ„ํ•ด ์ข‹์€ ํด๋ž˜์Šค ์ด๋ฆ„์ด ํ•„์š”ํ•˜๋‹ค.

์ด๋ฆ„์— ์—ฐ๊ด€์„ฑ์ด ์—†๋Š” ํด๋ž˜์Šค๋Š” ์ดํ•ดํ•˜๊ธฐ๋„ ๊ธฐ์–ตํ•˜๊ธฐ๋„ ์–ด๋ ต๋‹ค.

ํด๋ž˜์Šค ์ด๋ฆ„์€ ์ฝ”๋“œ์˜ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•ด์•ผํ•œ๋‹ค.

 

์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค

 

์„ค๊ณ„์ƒ์˜ ๊ฒฐ์ •์„ ํ•„์š” ์ด์ƒ์œผ๋กœ ๋…ธ์ถœํ•˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค.

 

์ธํ„ฐํŽ˜์ด์Šค๋ž€ ๊ตฌํ˜„์ด ๋น ์ง„ ์—ฌ๋Ÿฌ ์—ฐ์‚ฐ์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค ์ถ”๊ฐ€์—๋Š” ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์œ ์—ฐ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ถ”๊ฐ€ ์„ค๊ณ„์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ง€๋ถˆํ•ด์•ผํ•œ๋‹ค.

์‹ค์ œ๋กœ ์œ ์—ฐ์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ๋งค์šฐ ๋งŽ๋‹ค.

 

์ €๋ฒˆ ์žฅ์—๋„ ๋งํ–ˆ๋“ฏ์ด ๋ถˆํ™•์‹คํ•œ ๋ฏธ๋ž˜๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ๋ณด๋‹จ ๋‹น์žฅ์˜ ์ด์ต์„ ์ทจํ•˜์ž

์ถ”ํ›„ ํ•„์š”ํ•ด์ง€๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹œ์Šคํ…œ์— ์œ ์—ฐ์„ฑ์„ ๋ถ€์—ฌํ•˜๋Š” ํŽธ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.

 

์ธํ„ฐํŽ˜์ด์Šค

 

์ž๋ฐ” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ "์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด๊ณ  , ์ด์™ธ์˜ ๋‚ด์šฉ์€ ์ƒ๊ด€ํ•˜์ง€ ์•Š๋Š”๋‹ค."

๋ผ๋Š” ๋‚ด์šฉ์„ ๋‚ดํฌํ•œ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ•„๋“œ๋ฅผ ๋ฐฐ์ œํ•˜๊ณ  ์—ฐ์‚ฐ๋งŒ์„ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” ๊ตฌํ˜„์ด ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

๋ฐ˜๋Œ€๋กœ ๊ตฌํ˜„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ์‰ฝ์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š๋‹ค.

๋ณ€๊ฒฝ ์‹œ์— ๋ชจ๋“  ๊ตฌํ˜„ ํด๋ž˜์Šค๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋ฒ„์ „ ์ธํ„ฐํŽ˜์ด์Šค

 

๋งŒ์•ฝ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ์€๋ฐ ์„ค๊ณ„๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ถ€๋‹ด์Šค๋Ÿฌ์šด ๊ฒฝ์šฐ, ๋ฒ„์ „ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธฐ์กด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ—ค์„œ ์ƒˆ๋กœ์šด ์—ฐ์‚ฐ์„ ์ถ”๊ฐ€ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” ๊ธฐ์กด ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์•Œ ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ฒ„์ „ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ทธ๋ฆฌ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋‹ค.

๋ฒ„์ „ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋Š˜์–ด๋‚  ์ˆ˜๋ก ๊ฒฐ๊ตญ ๊ด€๋ฆฌํ•ด์•ผํ•  ๋กœ์ง,ํด๋ž˜์Šค๊ฐ€ ๋งŽ์•„์ง€๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•  ์ผ์ด ๋Š˜์–ด๋‚œ๋‹ค.

์ด๋Š” ์„ค๊ณ„ ์ž์ฒด๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์ถ”์ƒ ํด๋ž˜์Šค

 

์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ธํ„ฐํŽ˜์ด์Šค์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ์žฅ๋‹จ์ ์ด ์žˆ๋‹ค.

 

๋จผ์ € ์ˆ˜์ •์˜ ๊ด€์ ์—์„œ ๋ณด๋ฉด ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์ˆ˜์ •์— ์šฉ์ดํ•˜๋‹ค.

๊ธฐ์กด ์„ค๊ณ„๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์–ผ๋งˆ๋“ ์ง€ ์ƒˆ๋กœ์šด ์—ฐ์‚ฐ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๋‹จ 1๊ฐœ์˜ ์ƒ์œ„ ํด๋ž˜์Šค๋งŒ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋Œ€์กฐ๋œ๋‹ค.

 

์ž๋ฐ” ํด๋ž˜์Šค์—์„œ abstract ํ‚ค์›Œ๋“œ๋ฅผ ์”€์œผ๋กœ์จ, ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”

๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๊ฐ’ ๊ฐ์ฒด

 

ํ•จ์ˆ˜ํ˜•(๊ฐ’) ์Šคํƒ€์ผ ์—ฐ์‚ฐ์€ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค์ง€ ์•Š์œผ๋ฉฐ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ƒ์„ฑํ•œ๋‹ค.

๊ณ ์ •์ ์ธ ์ƒํ™ฉ์„ ํ‘œํ˜„ํ•˜๊ณ  ํ•จ์ˆ˜ํ˜• ์Šคํƒ€์ผ์ด ์ ์ ˆํ•˜๊ณ  , ์ƒํ™ฉ์ด ๋ณ€ํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ์ƒํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ๋‚ซ๋‹ค.

 

๊ฐ’ ์Šคํƒ€์ผ ๊ฐ์ฒด์˜ ๋ฌธ์ œ์ ์€ ์„ฑ๋Šฅ์ด๋‹ค.  (ํ•˜์ง€๋งŒ ๋งค์šฐ ๋ฏธ๋น„ํ•˜๋‹ค)

๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ๊ฐ’ ์Šคํƒ€์ผ๊ณผ ์ƒํƒœ๋กœ ๋ถ€๋ถ„์„ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ๋‘ ์Šคํƒ€์ผ์„ ์ ์ ˆํžˆ ์„ž์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

ํŠนํ™”

 

์—ฐ์‚ฐ ๊ฐ„์˜ ์œ ์‚ฌ์ ๊ณผ ์ฐจ์ด์ ์„ ๋ถ€๊ฐ์‹œํ‚ค๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด , ํ”„๋กœ๊ทธ๋žจ์„ ์ฝ๊ณ  ์ˆ˜์ •ํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค.

์ด๋Ÿฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ช…ํ™•ํžˆ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ƒˆ๋กœ์šด ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋ณ€ํ˜•ํ• ์ง€ ์ƒˆ๋กœ ๋งŒ๋“ค์ง€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋‘ ๊ฐ€์ง€์˜ ๊ทน๋‹จ์  ๋ณ€ํ˜• ์‚ฌ์ด์— ์กด์žฌํ•œ๋‹ค.

ํ˜„์‹ค์—์„œ๋Š” ์•ฝ๊ฐ„ ๋ณ€ํ˜•๋œ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ์šฉํ•˜๊ฑฐ๋‚˜ ์•ฝ๊ฐ„ ๋ณ€ํ˜•๋œ ๋กœ์ง์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

 

ํ•˜์œ„ ํด๋ž˜์Šค

 

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

 

ํ•˜์ง€๋งŒ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์‚ฌ์šฉ์€ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค.

1. ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์‚ฌ์šฉ์„ ๋˜๋Œ๋ฆฌ๊ธฐ ์–ด๋ ต๋‹ค.

2. ํ•˜์œ„ํด๋ž˜์Šค๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์œ„ ํด๋ž˜์Šค๊นŒ์ง€ ์ดํ•ดํ•ด์•ผํ•œ๋‹ค. 

3. ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์ˆ˜์ •์ด ์กฐ์‹ฌ์Šค๋Ÿฌ์›Œ์ง„๋‹ค.

 

์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ์ž˜ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋กœ์ง์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฉ”์†Œ๋“œ๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ๋ฉด ๊ฐ ๋ฉ”์†Œ๋“œ๋ฅผ ๋”ฐ๋กœ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ๋™์ ์œผ๋กœ ๋ณ€ํ™”ํ•˜๋Š” ๋กœ์ง์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†๋‹ค.

๋”ฐ๋ผ์„œ ์ด ๊ฒฝ์šฐ๋„ค๋Š” ์กฐ๊ฑด๋ฌธ์ด๋‚˜ ์œ„์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค. 

 

๊ตฌํ˜„์ž

 

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋‹คํ˜•์  ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด ์„ ํƒ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋•๋ถ„์— ์—ฐ์‚ฐ์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์— ๋Œ€ํ•ด์„œ๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

๋‹คํ˜•์  ๋ฉ”์„ธ์ง€๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ณ€๊ฒฝ์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ์ผ๋ จ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒฝ์šฐ, ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜ธ์ถœ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ 

๊ตฌํ˜„์„ ์ž์œ ๋กญ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋Š” ํšจ๊ณผ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์˜๋„์™€ ๊ตฌํ˜„์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์ƒ์ƒํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๋ฏธ๋ž˜์˜ ํ™•์žฅ์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด๋ก 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด๋ก ์€ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

 

์‹ค์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๋™๋ ฅ์ด ์กด์žฌํ•œ๋‹ค.

 

1. ๊ฐ€์น˜

- ๊ฐ€์น˜๋Š” ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ ์šฉ๋œ๋‹ค. 

- ์ปค๋ฎค๋‹ˆํ…Œ์ด์…˜ , ์œ ์—ฐ์„ฑ ๋“ฑ ๋ชจ๋“  ์˜์‚ฌ ๊ฒฐ์ •์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

 

2. ์›์น™

- ์ง์ ‘ ์ ์šฉํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฐ€์น˜์™€ , ์ง€์—ฝ ์ ์ธ ํŒจํ„ด ์‚ฌ์ด์— ๊ฐ€๊ต ์—ญํ• ์„ ํ•œ๋‹ค.

- ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•  ๋•Œ ์›์น™์„ ๋”ฐ๋ฅธ๋‹ค. 

 

ํŒจํ„ด์€ ์ง€๊ธˆ ๋‹น์žฅ ๋ฌด์—‡์„ ํ•ด์•ผํ• ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๊ณ , ๊ฐ€์น˜๋Š” ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋™๊ธฐ๋ฅผ ์•Œ๋ ค์ฃผ๋ฉฐ, ์›์น™์€ ๋™๊ธฐ๋ฅผ ํ–‰๋™์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟ€์ง€๋ฅผ ์•Œ๋ ค์ค€๋‹ค.

 

๊ฐ€์น˜

์„ธ๊ฐ€์ง€ ๊ฐ€์น˜๋Š” ์„œ๋กœ ์ถฉ๋Œํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ ์ƒํ˜ธ ๋ณด์™„์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

 

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ดค์„ ๋•Œ์˜ ๊ด€์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ผ

์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ , ์ˆ˜์ •ํ•˜๊ณ , ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค

์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ์ถ”ํ›„ ์ฝ”๋“œ ์ˆ˜์ • ์‹œ์— ๋‚ด๊ฐ€ ์“ด ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฐœ๋ฐœ ๋น„์šฉ์ด ๊ฐ์†Œํ•œ๋‹ค.

๋˜ํ•œ ํƒ€์ธ์˜ ์‹œ์„ ์—์„œ ์ƒ๊ฐํ•˜๋‹ค๋ณด๋ฉด ๋” ๋งŽ์€ ์ƒ๊ฐ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์˜ ์งˆ์ด ์ข‹์•„์ง„๋‹ค.

 

๋‹จ์ˆœ์„ฑ

๋ถˆํ•„์š”ํ•œ ๋ณต์žก๋„๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ˆ˜์ •์„ ์–ด๋ ต๊ฒŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ€์น˜๊ฐ€ ๋–จ์–ด์ง„๋‹ค.

์ฝ”๋“œ์—์„œ ๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ•˜๋ผ. 

๊ณผ๋„ํ•œ ์š”์†Œ์™€ ์˜๋ฏธ์—†๋Š” ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹จ์ˆœ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜๊ณผ ๋‹จ์ˆœ์„ฑ์€ ํ˜‘์—… ๊ด€๊ณ„์— ์žˆ๋‹ค.

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ์‹ ๊ฒฝ์„ ์“ธ์ˆ˜๋ก ์–ด๋–ค ๋ถ€๋ถ„์ด ๊ณผ๋„ํ•˜๊ฒŒ ๋ณต์žกํ•œ ์ง€ ์•Œ๊ธฐ ์‰ฌ์šฐ๋ฉฐ, ๋‹จ์ˆœํ• ์ˆ˜๋ก ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.

 

์œ ์—ฐ์„ฑ

์œ ์—ฐ์„ฑ์„ ์œ„ํ•ด์„œ ๋ณต์žกํ•œ ์„ค๊ณ„๋ฅผ ์ •๋‹นํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ณต์žก๋„๊ฐ€ ์•„๋ฌด๋Ÿฐ ์ด๋“์„ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋‹จ์ˆœ์„ฑ์„ ์„ ํƒํ•ด์•ผํ•œ๋‹ค.

 

์„ค๊ณ„ ์ดˆ๊ธฐ ์œ ์—ฐ์„ฑ์ด ํ•„์š”ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋„, ์ดํ›„ ํ•„์š”ํ•œ ์ƒํ™ฉ์ด ์˜ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ์„ค๊ณ„ ๋น„์šฉ์„ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ฒƒ๋ณด๋‹ค ๋‹น์žฅ์˜ ์ด๋“์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

์ถ”์ธก์— ์˜๊ฑฐํ•ด ์„ค๊ณ„์— ์œ ์—ฐ์„ฑ์„ ๋ถ€์—ฌํ•˜๊ธฐ ๋ณด๋‹จ ๋‹จ์ˆœ์„ฑ์„ ์œ ์—ฐํ•˜๊ฒŒ ์ ์šฉํ•œํ›„ ํ…Œ์ŠคํŠธ๋ฅผ ์ฒ ์ €ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด๋‹ค.

 

๋‹จ์ˆœ์„ฑ์€ ์œ ์—ฐ์„ฑ์„ ์ด‰์ง„์‹œํ‚จ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์˜ต์…˜์„ ์ œ๊ฑฐํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜์ •์€ ๋”์šฑ ๊ฐ„๋‹จํ•ด์ง„๋‹ค.

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์ค‘์‹œํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์ง€๋ฏ€๋กœ ์ˆ˜์ •์ด ์‰ฌ์›Œ์ง„๋‹ค. ์ด๋กœ์จ ์œ ์—ฐ์„ฑ์ด ์ฆ๋Œ€๋œ๋‹ค.

 

์›์น™ 

๊ฐ ํŒจํ„ด์€ ๊ฐ€์น˜ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ๋‚ดํ‘œํ•˜๊ณ  ์žˆ๋‹ค.

์›์น™์€ ์ผ๋ฐ˜์ ์ธ ์ƒ๊ฐ์„ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ, ํŒจํ„ด์˜ ๊ทผ๊ฐ„์„ ์ด๋ฃฌ๋‹ค.

 

์›์น™์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ํŒจํ„ด๋“ค์„ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ทผ๋ณธ์ ์ธ ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

์ง€์—ญ์  ๋ณ€ํ™”

์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ํ•จ๊ป˜ ๋ฐ”๊ฟ”์•ผํ•˜๋Š” ๋ถ€๋ถ„์„ ์ตœ์†Œํ™”ํ•˜๋ผ

์ง€์—ญ์  ๋ณ€ํ™”๋งŒ์„ ์ผ์œผํ‚ค๋Š” ์ฝ”๋“œ๋Š” ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ์‰ฝ๋‹ค.

 

์ตœ์†Œ ์ค‘๋ณต

์ค‘๋ณต๋œ ์ฝ”๋“œ๊ฐ€ ๋งŽ์„ ์ˆ˜๋ก ์ฝ”๋“œ์˜ ์ˆ˜์ •์ด ์–ด๋ ค์›Œ์ง„๋‹ค.

์–ด๋–ค ๊ฐœ๋…์„ ์ˆ˜์ •ํ–ˆ์„ ๋•Œ ํด๋ž˜์Šค๋ฅผ 2๊ฐœ ์ด์ƒ ์ˆ˜์ •ํ•ด์•ผํ•œ๋‹ค๋ฉด, ์ด๋Š” ์ง€์—ญ์  ๋ณ€ํ™”์˜ ์›์น™์„ ์œ„๋ฐฐํ•œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ฝ”๋“œ์˜ ์ค‘๋ณต์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ถˆ๊ฐ€ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ ˆ๋Œ€์ ์œผ๋กœ ํ”ผํ•˜๊ธฐ ๋ณด๋‹จ ์œ„ํ—˜ ์š”์†Œ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ์˜ ๊ฒฐํ•ฉ

๋ฐ์ดํ„ฐ์™€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์„ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ , ๊ฐ™์€ ๊ฐ์ฒด , ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด์— ๋ฐฐ์น˜ํ•˜๋ผ

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ ๊ทธ ์˜ํ–ฅ์ด ์ผ์ • ์˜์—ญ์— ๋จธ๋ฌผ๊ฒŒ ๋œ๋‹ค.

 

๋Œ€์นญ์„ฑ

๋Œ€์นญ์„ฑ์— ๋”ฐ๋ผ ์•„์ด๋””์–ด๋ฅผ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„ํ•˜์ž

๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜์˜ ๊ตฌํ˜„์œผ๋กœ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

void process() {
	input();
    	tally(); // ์ผ์น˜์‹œํ‚ค๋‹ค
   	output();
}

 

์„ ์–ธ์  ํ‘œํ˜„

์ˆ˜ํ–‰ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๊ตฌ๋ฌธ์ด๋‚˜ ์กฐ๊ฑด๋ถ€ ๊ตฌ๋ฌธ์ด ์—†๋Š” ๊ฒฝ์šฐ, ์„ ์–ธ์  ํ‘œํ˜„์„ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

(์•„๋งˆ ์–ด๋…ธํ…Œ์ด์…˜์ธ ๋“ฏ)

 

@RunWith(Suite.class)
@TestClasses({
	SimpleTest.class,
    ComplicatedTest.class
}
)
class AllTests {
}

์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๋‚ด๋ถ€๋ฅผ ๋ณผ ํ•„์š”์—†์ด ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ณ€ํ™”์œจ

๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณ€ํ™”์œจ์ด ๋‹ค๋ฅธ ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ผ

๋ณ€ํ™”์œจ์€ ์‹œ๊ฐ„์  ๋Œ€์นญ์„ฑ์— ํ•ด๋‹นํ•œ๋‹ค.

 

ํ•˜๋‚˜์˜ ๊ฐ์ฒด์— ์žˆ๋Š” ๋ชจ๋“  ํ•„๋“œ๋Š” ๊ฐ€๊ธ‰์  ํ•จ๊ป˜ ๋ณ€ํ•ด์•ผํ•œ๋‹ค.

ํŠน์ • ๋ฉ”์†Œ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋  ๋•Œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ํ•„๋“œ๋Š” ๊ทธ ๋ฉ”์†Œ๋“œ์˜ ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋˜์–ด์•ผํ•œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ํ•จ๊ป˜ ๋ณ€ํ™”ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ํ•„๋“œ(value, currency)๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๋„์šฐ๋ฏธ ๊ฐ์ฒด(Money)์— ๋„ฃ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

setAmount(Money value) {
	this.money = money;
}

 

 

+ Recent posts