Skip to content

object_oriented_facts_and_mis

KyusungDev edited this page Jun 1, 2017 · 3 revisions

๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด

๊ฐ์ฒด์ง€ํ–ฅ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

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

๊ฐ์ฒด

๊ฐ์ฒด๋ž€ ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ๋˜๋Š” ์‚ฌ๋ฌผ์ด๋‹ค. ๊ฐ์ฒด๋Š” ์ž๋™์ฐจ์ฒ˜๋Ÿผ ๋งŒ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์ฒด์ ์ธ ์‚ฌ๋ฌผ์ผ ์ˆ˜๋„ ์žˆ๊ณ , ์‹œ๊ฐ„์ฒ˜๋Ÿผ ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ฐ์ฒด๋Š” ๊ตฌ๋ณ„ ๊ฐ€๋Šฅํ•œ ์‹๋ณ„์ž, ํŠน์ง•์ ์ธ ํ–‰๋™, ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ์•ˆ์—์„œ ๊ฐ์ฒด๋Š” ์ €์žฅ๋œ ์ƒํƒœ์™€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋œ๋‹ค.

์ƒํƒœ

์ƒํƒœ๋Š” ํŠน์ • ์‹œ์ ์— ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ฐ์ฒด์˜ ๊ตฌ์กฐ์  ํŠน์ง•์„ ํ‘œํ˜„ํ•œ๋‹ค. ๊ฐ์ฒด์˜ ์ƒํƒœ๋Š” ๊ฐ์ฒด์— ์กด์žฌํ•˜๋Š” ์ •์ ์ธ ํ”„๋กœํผํ‹ฐ์™€ ๋™์ ์ธ ํ”„๋กœํผํ‹ฐ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋Š” ๋‹จ์ˆœํ•œ ๊ฐ’๊ณผ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋งํฌ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ–‰๋™

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

์‹๋ณ„์ž

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

ํ•จ๊ป˜ ๋ชจ์šฐ๊ธฐ

์ฝ”๋“œ์™€ ๋ชจ๋ธ์„ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€์‹œํ‚ค๋Š” ๊ฒƒ์€ ์ฝ”๋“œ์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ๋ชจ๋ธ์„ ์ ์ ˆํ•˜๊ฒŒ ํ•œ๋‹ค.
์—๋ฆญ ์—๋ฐ˜์Šค(Eric Evans)

๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ๊ฐ€ [UML Distilled 2ํŒ]์—์„œ ์„ค๋ช…ํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์•ˆ์— ์กด์žฌํ•˜๋Š” ์„ธ๊ฐ€์ง€ ๊ด€์ 

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

  • ๋ช…์„ธ ๊ด€์ (Specification Perspective)
    ๋ช…์„ธ ๊ด€์ ์— ์ด๋ฅด๋ฉด ์‚ฌ์šฉ์ž์˜ ์˜์—ญ์ธ ๋„๋ฉ”์ธ์„ ๋ฒ—์–ด๋‚˜ ๊ฐœ๋ฐœ์ž์˜ ์˜์—ญ์ธ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์ดˆ์ ์ด ์˜ฎ๊ฒจ์ง„๋‹ค. ๋ช…์„ธ ๊ด€์ ์€ ๋„๋ฉ”์ธ์˜ ๊ฐœ๋…์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ์•ˆ์— ์‚ด์•„ ์ˆจ์‰ฌ๋Š” ๊ฐ์ฒด๋“ค์˜ ์ฑ…์ž„์— ์ดˆ์ ์„ ๋งž์ถ”๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ๊ฐ์ฒด์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ”๋ผ๋ณด๊ฒŒ ๋œ๋‹ค. ๋ช…์„ธ ๊ด€์ ์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๊ฐ์ฒด๊ฐ€ ํ˜‘๋ฒฝ์„ ์œ„ํ•ด '๋ฌด์—‡'์„ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€์— ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋Š” ๋‚ณ๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์›์น™์ด๋ผ๋Š” ์ ์„ ๊ธฐ์–ตํ•˜๋ผ. ์•ˆํƒ€๊น๊ฒŒ๋„ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ํด๋ž˜์Šค ์•ˆ์œผ๋กœ ์„ž์–ด ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์„ค๊ณ„์ž๋“ค์ด ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€๋ฅผ ์žŠ์–ด๋ฒ„๋ฆฌ๊ณค ํ•œ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ๋ถ„์•ผ์˜ ์˜ค๋ž˜๋œ ๊ฒฉ์–ธ์ธ "๊ตฌํ˜„์ด ์•„๋‹ˆ๋ผ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋ผ[GOF 1994]"๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์€ ๋ช…์„ธ ๊ด€์ ๊ณผ ๊ตฌํ˜„ ๊ด€์ ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์—์„œ ๋ถ€ํ„ฐ ์‹œ์ž‘๋œ๋‹ค.

  • ๊ตฌํ˜„ ๊ด€์ (Implementation Perspective)
    ๊ตฌํ˜„ ๊ด€์ ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์ธ ์šฐ๋ฆฌ์—๊ฒŒ ๊ฐ€์žฅ ์ต์ˆ™ํ•œ ๊ด€์ ์œผ๋กœ, ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ์™€ ์—ฐ๊ด€๋ผ ์žˆ๋‹ค. ๊ตฌํ˜„ ๊ด€์ ์˜ ์ดˆ์ ์€ ๊ฐ์ฒด๋“ค์ด ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๊ฐ์ฒด์˜ ์ฑ…์ž„์„ '์–ด๋–ป๊ฒŒ' ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ธ๊ฐ€์— ์ดˆ์ ์„ ๋งž์ถ”๋ฉฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ํด๋ž˜์Šค์— ์ถ”๊ฐ€ํ•œ๋‹ค.

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

ํด๋ž˜์Šค๋Š” ์„ธ ๊ฐ€์ง€ ๊ด€์ ์„ ๋ชจ๋‘ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ๋…, ์ธํ„ฐํŽ˜์ด์Šค, ๊ตฌํ˜„์„ ํ•จ๊ป˜ ๋“œ๋Ÿฌ๋‚ด์•ผ ํ•œ๋‹ค. ๋™์‹œ์— ์ฝ”๋“œ ์•ˆ์—์„œ ์„ธ ๊ฐ€์ง€ ๊ด€์ ์„ ์‰ฝ๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊น”๋”ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

์ปคํ”ผ ์ „๋ฌธ์  ๋„๋ฉ”์ธ

๊ฐ์ฒด์ง€ํ–ฅ ๊ด€์ ์—์„œ ์ปคํ”ผ ์ „๋ฌธ์ ์ด๋ผ๋Š” ๋„๋ฉ”์ธ์€ ์†๋‹˜ ๊ฐ์ฒด, ๋ฉ”๋‰ด ํ•ญ๋ชฉ ๊ฐ์ฒด, ๋ฉ”๋‰ดํŒ ๊ฐ์ฒด, ๋ฐ”๋ฆฌ์Šคํƒ€ ๊ฐ์ฒด, ์ปคํ”ผ ๊ฐ์ฒด๋กœ ๊ตฌ์„ฑ๋œ ์ž‘์€ ์„ธ์ƒ์ด๋‹ค.

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

์†๋‹˜ ๊ฐ์ฒด๋Š” '์†๋‹˜ ํƒ€์ž…'์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ”๋ฆฌ์Šคํƒ€ ๊ฐ์ฒด๋Š” '๋ฐ”๋ฆฌ์Šคํƒ€ ํƒ€์ž…'์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์•„๋ฉ”๋ฆฌ์นด๋…ธ ์ปคํ”ผ, ์—์Šคํ”„๋ ˆ์Šค ์ปคํ”ผ, ์นดํ‘ธ์น˜๋…ธ ์ปคํ”ผ, ์นด๋ผ๋ฉœ ๋งˆํ‚ค์•„๋˜๋Š” ๋ชจ๋‘ '์ปคํ”ผ ํƒ€์ž…'์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”๋‰ดํŒ ๊ฐ์ฒด๋Š” '๋ฉ”๋‰ดํŒ' ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋‹ค. ๋ฉ”๋‰ดํŒ ๊ฐ์ฒด๋Š” ์•„๋ฉ”๋ฆฌ์นด๋…ธ, ์—์Šคํ”„๋ ˆ์†Œ, ์นด๋ผ๋ฉœ ๋งˆํ‚ค์•„๋˜, ์นดํ‘ธ์น˜๋…ธ๋ผ๋Š” ๋„ค ๊ฐœ์˜ ๋ฉ”๋‰ด ํ•ญ๋ชฉ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. ๋„ค ๊ฐœ์˜ ๋ฉ”๋‰ด ํ•ญ๋ชฉ ๊ฐ์ฒด ์—ญ์‹œ ๋ชจ๋‘ ๋™์ผํ•œ '๋ฉ”๋‰ด ํ•ญ๋ชฉ ํƒ€์ž…'์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋ชจ๋ธ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

์ปคํ”ผ ์ „๋ฌธ์ ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฒ”์ฃผ๋กœ์„œ ์†๋‹˜ ํƒ€์ž…, ๋ฉ”๋‰ดํŒ ํƒ€์ž…, ๋ฉ”๋‰ด ํ•ญ๋ชฉ ํƒ€์ž…, ๋ฐ”๋ฆฌ์Šคํƒ€ ํƒ€์ž…, ์ปคํ”ผ ํƒ€์ž…์ด ๊ฐ–์ถฐ์กŒ๋‹ค. ์ด์ œ ํƒ€์ž… ๊ฐ„์˜ ์–ด๋–ค ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

ํ•˜๋‚˜์˜ ๋ฉ”๋‰ดํŒ ๊ฐ์ฒด๋Š” ๋‹ค์ˆ˜์˜ ๋ฉ”๋‰ด ํ•ญ๋ชฉ ๊ฐ์ฒด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๋ฉ”๋‰ดํŒ ํƒ€์ž…์—์„œ ๋ฉ”๋‰ด ํ•ญ๋ชฉ ํƒ€์ž… ์ชฝ์œผ๋กœ ํ–ฅํ•˜๋Š” ์„ ์— ๊ทธ๋ ค์ง„ ์†์ด ์ฐฌ ๋งˆ๋ฆ„๋ชจ๋Š” ํฌํ•จ ๊ด€๊ณ„ ๋˜๋Š” ํ•ฉ์„ฑ(composition) ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์ด ๋ฉ”๋‰ดํŒ์— ํฌํ•จ๋˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ํ‘œํ˜„ํ•œ๋‹ค. ๋ฉ”๋‰ด ํ•ญ๋ชฉ ์ขŒ์ธก ์•„๋ž˜์˜ 4๋ผ๋Š” ์ˆซ์ž๋Š” ๋ฉ”๋‰ดํŒ์— ํฌํ•จ๋˜๋Š” ๋ฉ”๋‰ด ํ•ญ๋ชฉ์ด 4๊ฐœ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์†๋‹˜ ํƒ€์ž…์€ ๋ฉ”๋‰ดํŒ ํƒ€์ž…์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ์›ํ•˜๋Š” ์ปคํ”ผ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”๋‰ดํŒ ํƒ€์ž…์€ ์†๋‹˜์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ด ๊ด€๊ณ„๋Š” ํ•ฉ์„ฑ ๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํƒ€์ž…๋“ค ์‚ฌ์ด์˜ ๋‹จ์ˆœํ•œ ์„ ์œผ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค. ์ด ์ฒ˜๋Ÿผ ํ•œ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํฌํ•จํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์„œ๋กœ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•  ๊ฒฝ์šฐ ์ด๋ฅผ ์—ฐ๊ด€(association) ๊ด€๊ณ„๋ผ๊ณ  ํ•œ๋‹ค.

๋ฐ”๋ฆฌ์Šคํƒ€ ํƒ€์ž…์€ ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ปคํ”ผ ํƒ€์ž…์„ ์•Œ๊ณ  ์žˆ์–ด์•ผํ•œ๋‹ค. ๋ฉ”๋‰ดํŒ ํƒ€์ž…๊ณผ ์ปคํ”ผ ํƒ€์ž… ์ค‘ ์–ด๋–ค ๊ฒƒ๋„ ๋ฐ”๋ฆฌ์Šคํƒ€์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ด ๊ด€๊ณ„ ์—ญ์‹œ ํฌํ•จ๊ด€๊ณ„๋Š” ์•„๋‹ˆ๋‹ค.

์ด ๊ทธ๋ฆผ์€ ์ปคํ”ผ ์ œ์กฐ์™€ ๊ด€๋ จ๋œ ๊ฐ์ฒด๋“ค์„ ํƒ€์ž…๊ณผ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•ด ์ถ”์ƒํ™”ํ•œ ์ผ์ข…์˜ ๋ชจ๋ธ์ด๋‹ค. ์ด์ฒ˜๋Ÿผ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์˜์—ญ์ธ ๋„๋ฉ”์ธ์„ ๋‹จ์ˆœํ™”ํ•ด์„œ ํ‘œํ˜„ํ•œ ๋ชจ๋ธ์„ ๋„๋ฉ”์ธ ๋ชจ๋ธ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ

์ปคํ”ผ ์ฃผ๋ฌธ์„ ์œ„ํ•œ ํ˜‘๋ ฅ ์ฐพ๊ธฐ

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ผ์˜ ์ฒซ ๋ฒˆ์จฐ ๋ชฉํ‘œ๋Š” ํ›Œ๋ฅญํ•œ ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ›Œ๋ฅญํ•œ ํ˜‘๋ ฅ์„ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋Š” ์ ์„ ์žŠ์ง€ ๋ง์ž. ํ›Œ๋ฅญํ•œ ๊ฐ์ฒด๋Š” ํ›Œ๋ฅญํ•œ ํ˜‘๋ ฅ์„ ์„ค๊ณ„ํ•  ๋–„๋งŒ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
ํ˜‘๋ ฅ์„ ์„ค๊ณ„ํ•  ๋•Œ๋Š” ๊ฐ์ฒด๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฐ์ฒด๋ฅผ ์„ ํƒํ•˜๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค. ์ด ๋ง์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋จผ์ € ์„ ํƒํ•˜๊ณ  ๊ทธ ํ›„์— ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๊ธฐ์— ์ ์ ˆํ•œ ๊ฐ์ฒด๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด์ œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•  ๊ฐ์ฒด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ฑ…์ž„์„ ๋งก๊ฒŒ ๋˜๊ณ  ๊ฐ์ฒด๊ฐ€ ์ˆ˜์‹ ํ•˜๋Š” ๋ฉ”์‹œ์ง€๋Š” ๊ฐ์ฒด๊ฐ€ ์™ธ๋ถ€์— ์ œ๊ณตํ•˜๋Š” ๊ณต์šฉ ์ธํ„ฐํŽ˜์ด์Šค์— ํฌํ•จ๋œ๋‹ค.

์ฒซ๋ฒˆ์งธ ๋ฉ”์‹œ์ง€๋Š” '์ปคํ”ผ๋ฅผ ์ฃผ๋ฌธํ•˜๋ผ'์ผ ๊ฒƒ์ด๋‹ค.

๋ฉ”์‹œ์ง€ ์œ„์— ๋ถ™์€ ํ™”์‚ดํ‘œ๋Š” ๋ฉ”์‹œ์ง€์— ๋‹ด์•„ ์ „๋‹ฌ๋  ๋ถ€๊ฐ€์ ์ธ ์ •๋ณด์ธ ์ธ์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

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

'์ปคํ”ผ๋ฅผ ์ฃผ๋ฌธํ•˜๋ผ'๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•  ๊ฐ์ฒด๋Š” ๋ฌด์—‡์ธ๊ฐ€? ๋‹ค๋ฅธ ๋ง๋กœ ํ‘œํ˜„ํ•ด ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์ปคํ”ผ๋ฅผ ์ฃผ๋ฌธํ•  ์ฑ…์ž„์„ ์ ธ์•ผ ํ•˜๋Š”๊ฐ€? ๋‹น์—ฐํžˆ ์†๋‹˜์ผ ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ๊ฐ์ฒด๋Š” ์†๋‹˜ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋‹ค. ์ด์ œ ์†๋‹˜ ๊ฐ์ฒด๋Š” ์ปคํ”ผ๋ฅผ ์ฃผ๋ฌธํ•  ์ฑ…์ž„์„ ํ• ๋‹น ๋ฐ›์•˜๋‹ค.

์†๋‹˜์ด ์ปคํ”ผ๋ฅผ ์ฃผ๋ฌธํ•˜๋Š” ๋„์ค‘์— ์Šค์Šค๋กœ ํ•  ์ˆ˜ ์—†๋Š” ์ผ์ด ๋ฌด์—‡์ธ์ง€ ์ƒ๊ฐํ•ด๋ณด๋‹ค. ์†๋‹˜์ด ํ• ๋‹น๋œ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘์— ์Šค์Šค๋กœ ํ•  ์ˆ˜ ์—†๋Š” ์ผ์ด ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์ด๋ฅผ ์š”์ฒญํ•ด์•ผ ํ•œ๋‹ค. ์ด ์š”์ฒญ์ด ๋ฐ”๋กœ ์†๋‹˜ ๊ฐ์ฒด์—์„œ ์™ธ๋ถ€๋กœ ์ „์†ก๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ •์˜ํ•œ๋‹ค.

์†๋‹˜์€ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์— ๋Œ€ํ•ด์„œ๋Š” ์•Œ์ง€ ๋ชปํ•œ๋‹ค. ๋ฉ”๋‰ด ํ•ญ๋ชฉ์€ ๊ณ ๊ฐ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฉ”๋‰ดํŒ์˜ ์ผ๋ถ€๋ผ๋Š” ์‚ฌ์‹ค์„ ๊ธฐ์–ตํ•˜๋ผ. ๋”ฐ๋ผ์„œ ๊ณ ๊ฐ์€ ์ž์‹ ์ด ์„ ํƒํ•œ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ œ๊ณตํ•ด ์ค„ ๊ฒƒ์„ ์š”์ฒญํ•œ๋‹ค. '๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ์ฐพ์•„๋ผ'๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€์˜ ๋“ฑ์žฅ์ด๋‹ค.

์ด ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€๋Š” '๋ฉ”๋‰ด ์ด๋ฆ„'์ด๋ผ๋Š” ์ธ์ž๋ฅผ ํฌํ•จํ•ด ํ•จ๊ป˜ ์ „์†กํ•œ๋‹ค. ํ™”์‚ดํ‘œ ์•„๋ž˜์— ๋ถ™์€ ์†๋‹˜์œผ๋กœ ํ–ฅํ•˜๋Š” ์ž‘์€ ํ™”์‚ดํ‘œ๋Š” ์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•œ ๊ฐ์ฒด๊ฐ€ ์†๋‹˜์—๊ฒŒ ๋ฌด์—‡์„ ์‘๋‹ตํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด ๊ฒฝ์šฐ '๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ์ฐพ์•„๋ผ' ๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•œ ๊ฐ์ฒด๋Š” '๋ฉ”๋‰ด ์ด๋ฆ„'์— ๋Œ€์‘๋˜๋Š” '๋ฉ”๋‰ด ํ•ญ๋ชฉ'์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ์ฐพ์„ ์ฑ…์ž„์„ ๋ˆ„๊ตฌ์—๊ฒŒ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ? ๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ๊ฐ€์žฅ ์ž˜ ์•Œ๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์—๊ฒŒ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•  ๊ฒƒ์ด๋‹ค. ๋ฉ”๋‰ดํŒ ๊ฐ์ฒด๋Š” ๋ฉ”๋‰ด ํ•ญ๋ชฉ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜๊ธฐ ๋–„๋ฌธ์— ์ด ์ฑ…์ž„์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ ์ ˆํ•œ ํ›„๋ณด๋‹ค.

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

์†๋‹˜์€ ์ž์‹ ์ด ์ฃผ๋ฌธํ•œ ์ปคํ”ผ์— ๋Œ€ํ•œ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ์–ป์—ˆ์œผ๋‹ˆ ์ด์ œ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์— ๋งž๋Š” ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ๋กœ์šด ์š”์ฒญ์€ ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ํ–‰๋ณตํ•œ ์‹ ํ˜ธ๋‹ค. ์†๋‹˜์€ ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•˜๋Š” ๋ฉ”์‹œ์ง€์˜ ์ธ์ž๋กœ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ์ „๋‹ฌํ•˜๊ณ  ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์ œ์กฐ๋œ ์ปคํ”ผ๋ฅผ ๋ฐ›์•„์•ผ ํ•œ๋‹ค.

๋ˆ„๊ฐ€ ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ๋‹น์—ฐํžˆ ๋ฐ”๋ฆฌ์Šคํƒ€๋‹ค.

'์ปคํ”ผ๋ฅผ ์ œ์กฐํ•˜๋ผ'๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐ”๋ฆฌ์Šคํƒ€ ๊ฐ์ฒด๋ฅผ ์„ ํƒํ–ˆ๋‹ค. ๋ฐ”๋ฆฌ์Šคํƒ€๋Š” ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค. ์•„๋ฉ”๋ฆฌ์นด๋…ธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ง€์‹์€ ๋ฐ”๋ฆฌ์Šคํƒ€์˜ ์ƒํƒœ๋กœ, ๊ธฐ์ˆ ์€ ๋ฐ”๋ฆฌ์Šคํƒ€์˜ ํ–‰๋™์œผ๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ด€์ ์—์„œ ๋ฐ”๋ฆฌ์Šคํƒ€๋Š” ์Šค์Šค๋กœ์˜ ํŒ๋‹จ๊ณผ ์ง€์‹์— ๋”ฐ๋ผ ํ–‰๋™ํ•˜๋Š” ์ž์œจ์ ์ธ ์กด์žฌ๋‹ค.

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

์ธํ„ฐํŽ˜์ด์Šค ์ •๋ฆฌํ•˜๊ธฐ

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

๊ฐ ๊ฐ์ฒด๋ฅผ ํ˜‘๋ ฅ์ด๋ผ๋Š” ๋ฌธ๋งฅ์—์„œ ๋–ผ์–ด๋‚ด์–ด ์ˆ˜์‹  ๊ฐ€๋Šฅํ•œ ๋ฉ”์‹œ์ง€๋งŒ ์ถ”๋ ค๋‚ด๋ฉด ๊ฐ์ฒด์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋œ๋‹ค. ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ทธ ๊ฐ์ฒด์˜ ์ธํ„ฐํŽ˜์ด์Šค ์•ˆ์— ๋ฉ”์‹œ์ง€์— ํ•ด๋‹นํ•˜๋Š” ์˜คํผ๋ ˆ์ด์…˜์ด ์กด์žฌํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์†๋‹˜ ๊ฐ์ฒด์˜ ์ธํ„ฐํŽ˜์ด์Šค ์•ˆ์—๋Š” '์ œํ’ˆ์„ ์ฃผ๋ฌธํ•˜๋ผ'๋ผ๋Š” ์˜คํผ๋ ˆ์ด์…˜์ด ํฌํ•จ๋ผ์•ผ ํ•œ๋‹ค. ๋ฉ”๋‰ดํŒ ๊ฐ์ฒด์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” '๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ์ฐพ์•„๋ผ'๋ผ๋Š” ์˜คํผ๋ ˆ์ด์…˜์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ฐ”๋ฆฌ์Šคํƒ€ ๊ฐ์ฒด์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” '์ปคํ”ผ๋ฅผ ์ œ์กฐํ•˜๋ผ'๋ผ๋Š” ์˜คํผ๋ ˆ์ด์…˜์„, ์ปคํ”ผ ๊ฐ์ฒด๋Š” '์ƒ์„ฑํ•˜๋ผ'๋ผ๋Š” ์˜คํผ๋ ˆ์ด์…˜์„ ์ œ๊ณตํ•œ๋‹ค.

๊ฐ์ฒด์˜ ํƒ€์ž…์„ ๊ตฌํ˜„ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์€ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ˜‘๋ ฅ์„ ํ†ตํ•ด ์‹๋ณ„๋œ ํƒ€์ž…์˜ ์˜คํผ๋ ˆ์ด์…˜์€ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ณต์šฉ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ผ๋ถ€๋ผ๋Š” ์‚ฌ์‹ค์„ ๊ธฐ์–ตํ•˜๋ผ. ๋”ฐ๋ผ์„œ ์ธํ„ฐํŽ˜์ด์Šค์— ํฌํ•จ๋œ ์˜คํผ๋ ˆ์ด์…˜ ์—ญ์‹œ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ณต์šฉ์œผ๋กœ ์„ ์–ธ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ž๋ฐ”์˜ ๋ฌธ๋ฒ•์„ ์ด์šฉํ•ด ํ‘œ๊ธฐํ–ˆ๋‹ค.

class Customer {
    public void order(String menuName) {}
}

class MenuIem {

}

class Menu {
    public MenuItem choose(String name) {}
}

class Barista {
    public Coffee makeCoffee(MenuItem menuItem) {}
}

class Coffee {
    public Coffee(MenuItem menuItem) {}
}

๊ตฌํ˜„ํ•˜๊ธฐ

ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‹๋ณ„ํ–ˆ์œผ๋ฏ€๋กœ ์ด์ œ ์˜คํผ๋ ˆ์ด์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฉ”์„œ๋“œ๋กœ ๊ตฌํ˜„ํ•˜์ž. ๋จผ์ € Customer์˜ ํ˜‘๋ ฅ์„ ์‚ดํŽด๋ณด์ž. Customer๋Š” Menu์—๊ฒŒ menuName์— ํ•ด๋‹นํ•˜๋Š” MenuItem์„ ์ฐพ์•„๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  MenuItem์„ ๋ฐ›์•„ ์ด๋ฅผ Barista์—๊ฒŒ ์ „๋‹ฌํ•ด์„œ ์›ํ•˜๋Š” ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•˜๋„๋ก ์š”์ฒญํ•ด์•ผ ํ•œ๋‹ค.

๋ฌธ์ œ๋Š” Customer๊ฐ€ ์–ด๋–ป๊ฒŒ Menu๊ฐ์ฒด์™€ Barista ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ๊ฒƒ์ด๋ƒ๋‹ค. ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์–ป์–ด์•ผ ํ•œ๋‹ค.

๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ์–ป๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” Customer์˜ order() ๋ฉ”์„œ๋“œ์˜ ์ธ์ž๋กœ Menu์™€ Customer ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ฐธ์กฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ๋กœ ํ•œ๋‹ค. ์ด ๊ฒฐ์ •์€ ๊ฒฐ๊ณผ์ ์œผ๋กœ Customer์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

class Customer {
    public void order(String menuName, Menu menu, Barista barista) {
        MenuItem menuItem = menu.choose(menuName);
        Coffee coffee = barista.makeCoffee(menuItem);
        ...
    }
}

๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ  ๋จธ๋ฆฌ์†์œผ๋กœ๋งŒ ๊ตฌ์ƒํ•œ ์„ค๊ณ„๋Š” ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„์—์„œ ๋Œ€๋ถ€๋ถ„ ๋ณ€๊ฒฝ๋œ๋‹ค. ์„ค๊ณ„ ์ž‘์—…์€ ๊ตฌํ˜„์„ ์œ„ํ•œ ์Šค์ผ€์น˜๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋‹จ๊ณ„์ง€ ๊ตฌํ˜„ ๊ทธ ์ž์ฒด์ผ ์ˆ˜๋Š” ์—†๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ์„ค๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ ์ฝ”๋“œ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜‘๋ ฅ์„ ๊ตฌ์ƒํ•˜๋Š” ๋‹จ๊ณ„์— ๋„ˆ๋ฌด ์˜ค๋ž˜ ์‹œ๊ฐ„์„ ์Ÿ์ง€ ๋ง๊ณ  ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์„œ ์„ค๊ณ„์— ์ด์ƒ์ด ์—†๋Š”์ง€, ์„ค๊ณ„๊ฐ€ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•œ์ง€๋ฅผ ํŒ๋‹จํ•ด์•ผ ํ•œ๋‹ค. ์ฝ”๋“œ๋ฅผ ํ†ตํ•œ ํ”ผ๋“œ๋ฐฑ ์—†์ด๋Š” ๊น”๋”ํ•œ ์„ค๊ณ„๋ฅผ ์–ป์„ ์ˆ˜ ์—†๋‹ค.

Menu๋Š” menuName์— ํ•ด๋‹นํ•˜๋Š” MenuItem์„ ์ฐพ์•„์•ผ ํ•˜๋Š” ์ฑ…์ž„์ด ์žˆ๋‹ค. ์ด ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Menu๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ MenuItem์„ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ Menu๊ฐ€ MenuItem์˜ ๋ชฉ๋ก์„ ํฌํ•จํ•˜๊ฒŒ ํ•˜์ž. Menu์˜ choose() ๋ฉ”์„œ๋“œ๋Š” MenuItem์˜ ๋ชฉ๋ก์„ ํ•˜๋‚˜์”ฉ ๊ฒ€์‚ฌํ•ด ๊ฐ€๋ฉด์„œ ์ด๋ฆ„์ด ๋™์ผํ•œ MenuItem์„ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

class Menu {
    private List<MenuItem> items;

    public Menu(List<MenuItem> items) {
        this.items = items;
    }

    public MenuItem choose(String name) {
        for(MenuItem each : items) {
            if (each.getName().equals(name)) {
                return each;
            }
        }
        return null;
    }
}

MenuItem์˜ ๋ชฉ๋ก์„ Menu์˜ ์†์„ฑ์œผ๋กœ ํฌํ•จ์‹œํ‚จ ๊ฒฐ์ • ์—ญ์‹œ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋„์ค‘์— ๋‚ด๋ ค์กŒ๋‹ค๋Š” ์‚ฌ์‹ค์— ์ฃผ๋ชฉํ•˜๋ผ. ๊ฐ์ฒด์˜ ์†์„ฑ์€ ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์— ์†ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์บก์Аํ™”๋ผ์•ผ ํ•œ๋‹ค. ๊ฐ์ฒด์˜ ์†์„ฑ์ด ์บก์Аํ™”๋œ๋‹ค๋Š” ์ด์•ผ๊ธฐ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ์†์„ฑ์— ๋Œ€ํ•œ ์–ด๋–ค ํžŒํŠธ๋„ ์ œ๊ณต๋ผ์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ๊ฐ€์žฅ ํ›Œ๋ฅญํ•œ ๋ฐฉ๋ฒ•์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •ํ•˜๋Š” ๋‹จ๊ณ„์—์„œ๋Š” ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ์†์„ฑ์„ ๊ฐ€์ง€๋Š”์ง€, ๋˜ ๊ทธ ์†์„ฑ์ด ์–ด๋–ค ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ ๊ตฌํ˜„๋๋Š”์ง€๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.
๊ฐ์ฒด์—๊ฒŒ ์ฑ…์ž„์„ ํ• ๋‹นํ•˜๊ณ  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฒฐ์ •ํ•  ๋•Œ๋Š” ๊ฐ€๊ธ‰์  ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์–ด๋–ค ๊ฐ€์ •๋„ ํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค. ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•œ ํ›„์— ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๊ฒฐ์ •ํ•˜๋ผ. ์ด๊ฒƒ์ด ๊ฐ์ฒด์˜ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๊ฐ์ฒด์˜ ๊ณต์šฉ ์ธํ„ฐํŽ˜์ด์Šค์— ๋…ธ์ถœ์‹œํ‚ค์ง€ ์•Š๊ณ  ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ๊น”๋”ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.

Barista๋Š” MenuItem์„ ์ด์šฉํ•ด์„œ ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•œ๋‹ค.

class Barista {
    public Coffee makeCoffee(MenuItem menuItem) {
        Coffee coffee = new Coffee(menuItem);
        return coffee;
    }
}

Coffee๋Š” ์ž๊ธฐ ์ž์‹ ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ƒ์„ฑ์ž๋ฅผ ์ œ๊ณตํ•œ๋‹ค. Coffee๋Š” ์ปคํ”ผ ์ด๋ฆ„๊ณผ ๊ฐ€๊ฒฉ์„ ์†์„ฑ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์ƒ์„ฑ์ž ์•ˆ์—์„œ MenuItem์— ์š”์ฒญ์„ ๋ณด๋‚ด ์ปคํ”ผ ์ด๋ฆ„๊ณผ ๊ฐ€๊ฒฉ์„ ์–ป์€ ํ›„ Coffee์˜ ์†์„ฑ์— ์ €์žฅํ•œ๋‹ค.

class Coffee {
    private String name;
    private int price;

    public Coffee(MenuItem menuItem) {
        this.name = menuItem.getName();
        this.price = menuItem.cost();
    }
}

MenuItem์€ getName()๊ณผ cost() ๋ฉ”์‹œ์ง€์— ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

public class MenuItem {
    public MenuItem(String name, int price) {
        this.name = name;
        this.price = price;
    }

    public int cost() {
        return price;
    }

    public String getName() {
        return this.name;
    }
}

์ปคํ”ผ ์ „๋ฌธ์  ์ฝ”๋“œ๋ฅผ ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์‚ฌ์†Œํ•œ ๊ด€๊ณ„๋Š” ์ƒ๋žตํ–ˆ์ง€๋งŒ ์ปคํ”ผ ์ „๋ฌธ์ ์„ ๊ตฌ์„ฑํ•˜๋Š” ์ค‘์š”ํ•œ ์ธก๋ฉด์€ ๋ชจ๋‘ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

MenuItem์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์˜คํผ๋ ˆ์ด์…˜๋“ค์„ MenuItem์„ ๊ตฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„์— ์™€์„œ์•ผ ์‹๋ณ„ํ–ˆ๋‹ค๋Š” ์ ์„ ๋ˆˆ์—ฌ๊ฒจ๋ณด๊ธฐ ๋ฐ”๋ž€๋‹ค. ์ด๊ฒƒ์€ ๋ถ€๋„๋Ÿฌ์›Œํ•ด์•ผ ํ•  ์ผ์ด ์•„๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ์ง์ ‘์ ์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ํ†ต๋กœ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์‹ค์ œ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•ด๋ณด์ง€ ์•Š์€ ์ฑ„ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Šต์„ ์ •ํ™•ํ•˜๊ฒŒ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ์— ๊ฐ€๊น๋‹ค. ์„ค๊ณ„๋ฅผ ๊ฐ„๋‹จํžˆ ๋๋‚ด๊ณ  ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๊ตฌํ˜„์— ๋Œ์ž…ํ•˜๋ผ. ๋จธ๋ฆฟ์†์— ๊ฐ์ฒด์˜ ํ˜‘๋ ฅ ๊ตฌ์กฐ๊ฐ€ ๋ฒˆ๋œฉ์ธ๋‹ค๋ฉด ๊ทธ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋‹ค. ์„ค๊ณ„๊ฐ€ ์ œ๋Œ€๋กœ ๊ทธ๋ ค์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ณ ๋ฏผํ•˜์ง€ ๋ง๊ณ  ์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๊ฐ€๋ฉด์„œ ํ˜‘๋ ฅ์˜ ์ „์ฒด์ ์ธ ๋ฐ‘๊ทธ๋ฆผ์„ ๊ทธ๋ ค๋ณด๋ผ. ํ…Œ์ŠคํŠธ-์ฃผ๋„ ์„ค๊ณ„๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ํ•˜๋Š” ์ž‘์—…์ด ๋ฐ”๋กœ ์ด๊ฒƒ์ด๋‹ค. ๊ทธ๋“ค์€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๊ฐ€๋ฉด์„œ ํ˜‘๋ ฅ์„ ์„ค๊ณ„ํ•œ๋‹ค.

์ฝ”๋“œ์™€ ์„ธ ๊ฐ€์ง€ ๊ด€์ 

์ฝ”๋“œ๋Š” ์„ธ๊ฐ€์ง€ ๊ด€์ ์„ ๋ชจ๋‘ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค

๋จผ์ € ๊ฐœ๋… ๊ด€์ ์—์„œ ์ฝ”๋“œ๋ฅผ ๋ฐ”๋ผ๋ณด๋ฉด Customer, Menu, MenuItem, Barista, Coffeeํด๋ž˜์Šค๊ฐ€ ๋ณด์ธ๋‹ค. ์ด ํด๋ž˜์Šค๋“ค์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ์ปคํ”ผ ์ „๋ฌธ์  ๋„๋ฉ”์ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…๊ณผ ๊ด€๊ณ„๋ฅผ ๋ฐ˜์˜ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ํด๋ž˜์Šค๊ฐ€ ๋„๋ฉ”์ธ ๊ฐœ๋…์˜ ํŠน์„ฑ์„ ์ตœ๋Œ€ํ•œ ์ˆ˜์šฉํ•˜๋ฉด ๋ณ€๊ฒฝ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋ฐ”๋ฆฌ์Šคํƒ€๋‹ค. ๋”ฐ๋ผ์„œ ํ˜„์‹ค ์„ธ๊ณ„์™€ ๋™์ผํ•˜๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด ์•ˆ์—์„œ๋„ Barista๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ ์ปคํ”ผ๋ฅผ ์ œ์กฐํ•  ๊ฒƒ์ด๋ผ๊ณ  ์‰ฝ๊ฒŒ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ํด๋ž˜์Šค์™€ ๋„๋ฉ”์ธ ํด๋ž˜์Šค ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์ด ์ข์œผ๋ฉด ์ข์„์ˆ˜๋ก ๊ธฐ๋Šฅ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ๋’ค์ ๊ฑฐ๋ ค์•ผ ํ•˜๋Š” ์ฝ”๋“œ์˜ ์–‘๋„ ์ ์  ์ค„์–ด๋“ ๋‹ค.

๋ช…์„ธ ๊ด€์ ์€ ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ”๋ผ๋ณธ๋‹ค. ํด๋ž˜์Šค์˜ public ๋ฉ”์„œ๋“œ๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค๊ฐ€ ํ˜‘๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต์šฉ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋“œ๋Ÿฌ๋‚ธ๋‹ค. ๊ณต์šฉ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์™ธ๋ถ€์˜ ๊ฐ์ฒด๊ฐ€ ํ•ด๋‹น ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ถ€๋ถ„์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด์™€ ํ˜‘๋ ค๊ฐ›๋Š” ๋ชจ๋“  ๊ฐ์ฒด์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜๋ฐ–์— ์—†๋‹ค. ๊ฐ์ฒด์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ˆ˜์ •ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ช…์‹ฌํ•˜๋ผ. ์ตœ๋Œ€ํ•œ ๋ณ€ํ™”์— ์•ˆ์ •์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๊ณผ ๊ด€๋ จ๋œ ์„ธ๋ถ€์‚ฌํ•ญ์ด ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค. ๋ณ€ํ™”์— ํƒ„๋ ฅ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์€ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์ž์˜ ์ˆ˜์ค€์„ ๊ฐ€๋Š ํ•˜๋Š” ์ค‘์š”ํ•œ ์ฒ™๋„๋‹ค.

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

๋„๋ฉ”์ธ ๊ฐœ๋…์„ ์ฐธ์กฐํ•˜๋Š” ์ด์œ 

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

์†Œํ”„ํŠธ์›จ์–ด๋Š” ํ•ญ์ƒ ๋ณ€ํ•œ๋‹ค. ์„ค๊ณ„๋Š” ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ์กด์žฌํ•œ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋ž˜์Šค๋กœ ๊ธฐ๋Šฅ์„ ๋ถ„ํ• ํ•˜๊ณ  ํด๋ž˜์Šค ์•ˆ์—์„œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ๋ถ„๋ฆฌํ•˜๋Š” ์ด์œ ๋Š” ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ์ˆ˜์›”ํ•˜๊ฒŒ ์ˆ˜์ •ํ•˜๊ธธ ๊ฐ„์ ˆํžˆ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ํด๋ž˜์Šค๊ฐ€ ๋„๋ฉ”์ธ ๊ฐœ๋…์„ ๋”ฐ๋ฅด๋ฉด ๋ณ€ํ™”์— ์‰ฝ๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ๋ถ„๋ฆฌํ•˜๋ผ

๋ช…์„ธ ๊ด€์ ๊ณผ ๊ตฌํ˜„ ๊ด€์ ์ด ๋’ค์„ž์—ฌ ์—ฌ๋Ÿฌ๋ถ„์˜ ๋จธ๋ฆฌ์†์„ ํ•จ๋ถ€๋กœ ์–ด์ง€๋Ÿฝํžˆ์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋ผ. ๋ช…์„ธ ๊ด€์ ์€ ํด๋ž˜์Šค์˜ ์•ˆ์ •์ ์ธ ์ธก๋ฉด์„ ๋“œ๋Ÿฌ๋‚ด์•ผ ํ•œ๋‹ค. ๊ตฌํ˜„ ๊ด€์ ์€ ํด๋ž˜์Šค์˜ ๋ถˆ์•ˆ์ •ํ•œ ์ธก๋ฉด์„ ๋“œ๋Ÿฌ๋‚ด์•ผ ํ•œ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ตฌํ˜„ ์„ธ๋ถ€์‚ฌํ•ญ์„ ๋…ธ์ถœํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์•„์ฃผ ์ž‘์€ ๋ณ€๋™์—๋„ ์ „์ฒด ํ˜‘๋ ฅ์ด ์š”๋™์น˜๋Š” ์ทจ์•ฝํ•œ ์„ค๊ณ„๋ฅผ ์–ป์„ ์ˆ˜๋ฐ–์— ์—†๋‹ค.

๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ๋Š” ๊ฐœ๋…์ ์ธ ๊ด€์ ๊ณผ ๋ช…์„ธ ๊ด€์  ์‚ฌ์ด๋Š” ๊ทธ๋ ‡๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€๋งŒ ๋ช…์„ธ ๊ด€์ ๊ณผ ๊ตฌํ˜„ ๊ด€์ ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ฃผ์žฅํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ ์ž…์žฅ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์ ‘ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์€ ์ฝ”๋“œ์ด๋ฏ€๋กœ ๊ตฌํ˜„ ๊ด€์ ์„ ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ฒ ์ง€๋งŒ ์‹ค์ œ๋กœ ํ›Œ๋ฅญํ•œ ์„ค๊ณ„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ธก๋ฉด์€ ๋ช…์„ธ ๊ด€์ ์ธ ๊ฐ์ฒด์˜ ์ธํ„ฐํŽ˜์ด์Šค๋‹ค. ๋ช…์„ธ ๊ด€์ ์ด ์„ค๊ณ„๋ฅผ ์ฃผ๋„ํ•˜๊ฒŒ ๋˜๋ฉด ์„ค๊ณ„์˜ ํ’ˆ์งˆ์ด ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ธฐ์–ตํ•˜๋ผ.

์ค‘์š”ํ•œ ๊ฒƒ์€ ์—ฌ๋Ÿฌ๋ถ„์ด ํด๋ž˜์Šค๋ฅผ ๋ดค์„ ๋•Œ ํด๋ž˜์Šค๋ฅผ ๋ช…์„ธ ๊ด€์ ๊ณผ ๊ตฌํ˜„ ๊ด€์ ์œผ๋กœ ๋‚˜๋ˆ  ๋ณผ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์บก์Аํ™”๋ฅผ ์œ„๋ฐ˜ํ•ด์„œ ๊ตฌํ˜„์„ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ–์œผ๋กœ ๋…ธ์ถœํ•ด์„œ๋„ ์•ˆ ๋˜๊ณ , ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š๊ณ  ํ๋ฆฟํ•˜๊ฒŒ ์„ž์–ด๋†“์•„์„œ๋„ ์•ˆ ๋œ๋‹ค. ๊ฒฐ๊ตญ ์„ธ ๊ฐ€์ง€ ๊ด€์  ๋ชจ๋‘์—์„œ ํด๋ž˜์Šค๋ฅผ ๋ฐ”๋ผ๋ณผ ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ํ›Œ๋ฅญํ•œ ์„ค๊ณ„๊ฐ€ ๋’ท๋ฐ›์นจ๋ผ์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

Clone this wiki locally