Skip to content

Latest commit

ย 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 
ย 
ย 

README.md

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

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ํ•ต์‹ฌ์€ ์ ์ ˆํ•œ ํ˜‘๋ ฅ์„ ์‹๋ณ„ํ•˜๊ณ  ํ˜‘๋ ฅ์— ํ•„์š”ํ•œ ์—ญํ• ์„ ์ •์˜ํ•œ ํ›„์— ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ ˆํ•œ ์ฑ…์ž„์„ ํ• ๋‹น ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๊ด€์ ์—์„œ ํ•ต์‹ฌ์€ ์—ญํ• (role), ์ฑ…์ž„(responsibility), ํ˜‘๋ ฅ(collaboration) ์ด๋‹ค.

๊ตฌํ˜„์„ ๋จผ์ € ์ƒ๊ฐํ•˜์ง€ ๋ง๊ณ , ์—ญํ• ๊ณผ ์ฑ…์ž„๊ณผ ํ˜‘๋ ฅ์— ๋Œ€ํ•ด ๋จผ์ € ์ƒ๊ฐํ•˜์ž. ๊ทธ ํ›„ ํ•„์š”ํ•œ ๊ฒƒ์€ ์ƒ์†๊ณผ ๋‹คํ˜•์„ฑ์„ ์ด์šฉํ•˜๋Š” ์ผ์ด๋‹ค.

ํ˜‘๋ ฅ

๊ฐ์ฒด๋“ค์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ƒํ˜ธ์ž‘์šฉ์„ ํ˜‘๋ ฅ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ฑ…์ž„

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

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

ํ•˜๋Š” ๊ฒƒ

  • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋“ฑ์ด ์Šค์Šค๋กœ ํ•˜๋Š” ๊ฒƒ
  • ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ํ–‰๋™์„ ์‹œ์ž‘์‹œํ‚ค๋Š” ๊ฒƒ
  • ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ํ™œ๋™์„ ์ œ์–ดํ•˜๊ณ  ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ

์•„๋Š” ๊ฒƒ

  • ์‚ฌ์ ์ธ ์ •๋ณด์— ๊ด€ํ•ด ์•„๋Š” ๊ฒƒ
  • ๊ด€๋ จ๋œ ๊ฐ์ฒด์— ๊ด€ํ•ด ์•„๋Š” ๊ฒƒ
  • ์ž์‹ ์ด ์œ ๋„ํ•˜๊ฑฐ๋‚˜ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์— ๊ด€ํ•ด ์•„๋Š” ๊ฒƒ

๋˜ํ•œ ์„ค๊ณ„๋ฅผ ํ•  ๋•Œ "์ด ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋Š”๊ฐ€?"๋ผ๋Š” ์งˆ๋ฌธ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘๊ฐœ์˜ ๊ฐœ๋ณ„์ ์œผ๋กœ ์งˆ๋ฌธ์œผ๋กœ ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

  • ์ด ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋Š”๊ฐ€?
  • ์ด ๊ฐ์ฒด๊ฐ€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์˜คํผ๋ ˆ์ด์…˜์€ ๋ฌด์—‡์ธ๊ฐ€?

์—ญํ• 

์ฑ…์ž„๋“ค์ด ๋ชจ์—ฌ ๊ฐ์ฒด๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ์„ ๊ตฌ์„ฑํ•œ๋‹ค.

๊ฐ์ฒด๋Š” ํ˜‘๋ ฅ์ด๋ผ๋Š” ์ฃผ์–ด์ง„ ๋ฌธ๋งฅ ์•ˆ์—์„œ ํŠน์ •ํ•œ ๋ชฉ์ ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค. ๊ฐ์ฒด์˜ ๋ชฉ์ ์€ ํ˜‘๋ ฅ ์•ˆ์—์„œ ๊ฐ์ฒด๊ฐ€ ๋งก๊ฒŒ ๋˜๋Š” ์ฑ…์ž„์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ‘œ์‹œ๋œ๋‹ค. ์ด์ฒ˜๋Ÿผ ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค ํŠน์ •ํ•œ ํ˜‘๋ ฅ ์•ˆ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฑ…์ž„์˜ ์ง‘ํ•ฉ์„ ์—ญํ• ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์‹ค์ œ๋กœ ํ˜‘๋ ฅ์„ ๋ชจ๋ธ๋งํ•  ๋•Œ๋Š” ํŠน์ •ํ•œ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ์—ญํ• ์—๊ฒŒ ์ฑ…์ž„์„ ํ• ๋‹นํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.

์—ญํ• ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์€ ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ. ์ฑ…์˜ ์˜ˆ์ œ๋กœ ๋“ค์ž๋ฉด DiscountPolicy๊ฐ€ ์—ญํ• ์„ ๋งก๊ณ , NoneDiscountPolicy๊ฐ€ ์—ญํ• ์„ ๊ตฌํ˜„ํ–ˆ์Œ.

๊ฐ์ฒด์— ๊ด€ํ•ด ์ƒ๊ฐํ•  ๋•Œ "์ด ๊ฐ์ฒด๊ฐ€ ๋ฌด์Šจ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?" ๋ผ๊ณ  ์ž๋ฌธํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋œ๋‹ค.

์‘์ง‘๋„ ๊ณ„์‚ฐ

์ข‹์€ ์„ค๊ณ„๋ฅผ ๊ฐ–๊ธฐ ์œ„ํ•ด ๋†’์€ ์‘์ง‘๋„์™€ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ๊ฐ€์ง„ ์„ค๊ณ„๋ฅผ ์ถ”๊ตฌํ•ด์•ผํ•œ๋‹ค.

ํ•˜๋‚˜์˜ ๋ณ€๊ฒฝ์„ ์ˆ˜์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“ˆ ์ „์ฒด๊ฐ€ ํ•จ๊ป˜ ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด ์‘์ง‘๋„๊ฐ€ ๋†’์€ ๊ฒƒ์ด๊ณ  ๋ชจ๋“ˆ์˜ ์ผ๋ถ€๋งŒ ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด ๋‚ฎ์€ ๊ฒƒ์ด๋‹ค.


์บก์Аํ™”

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

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

์ •๋ฆฌํ•˜๋ฉด ์บก์Аํ™”๋ž€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๋ถ€๋ถ„์„ ๊ฐ์ฒด ๋‚ด๋ถ€๋กœ ์ˆจ๊ธฐ๋Š” ์ถ”์ƒํ™” ๊ธฐ๋ฒ•์ด๋‹ค. ๊ฐ์ฒด ๋‚ด๋ถ€์— ๋ฌด์—‡์„ ์บก์Аํ™”ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ์–ด๋–ค ๊ฒƒ์ด๋ผ๋„ ์บก์Аํ™”ํ•ด์•ผ ํ•œ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ํ•ต์‹ฌ์ด๋‹ค.

์œ ์—ฐํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•ด์„œ๋Š” ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ์˜์กด์„ฑ๊ณผ ์‹คํ–‰ ์‹œ๊ฐ„ ์˜์กด์„ฑ์ด ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์˜ ์„ค๊ณ„๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋„ˆ๋ฌด ์ด๋ฅธ ์‹œ๊ธฐ์— ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์บก์Аํ™”์— ์‹คํŒจํ•˜๊ฒŒ ๋œ๋‹ค.

CREATOR ํŒจํ„ด

๊ฐ์ฒด A๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•  ๋•Œ ์–ด๋–ค ๊ฐ์ฒด์—๊ฒŒ ๊ฐ์ฒด ์ƒ์„ฑ ์ฑ…์ž„์„ ํ• ๋‹นํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ์•„๋ž˜ ์กฐ๊ฑด์„ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋งŒ์กฑํ•˜๋Š” B์—๊ฒŒ ๊ฐ์ฒด ์ƒ์„ฑ ์ฑ…์ž„์„ ํ• ๋‹นํ•˜๋ผ.

  • B๊ฐ€ A ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์ฐธ์กฐํ•œ๋‹ค.
  • B๊ฐ€ A ๊ฐ์ฒด๋ฅผ ๊ธฐ๋กํ•œ๋‹ค.
  • B๊ฐ€ A ๊ฐ์ฒด๋ฅผ ๊ธด๋ฐ€ํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค.
  • B๊ฐ€ A ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.( ์ด ๊ฒฝ์šฐ B๋Š” A์— ๋Œ€ํ•œ ์ •๋ณด ์ „๋ฌธ๊ฐ€๋‹ค)

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

์ด๋ฏธ ๊ฒฐํ•ฉ๋ผ ์žˆ๋Š” ๊ฐ์ฒด์—๊ฒŒ ์ƒ์„ฑ ์ฑ…์ž„์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ์„ค๊ณ„์˜ ์ „์ฒด์ ์ธ ๊ฒฐํ•ฉ๋„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ CREATOR ํŒจํ„ด์€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ค๊ณ„๊ฐ€ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

๊ธฐ์กด์— ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ๋ฆฌํŒฉํ† ๋ง ํ•ด์„œ ๋‹ค๋“ฌ์–ด๋ณด๋Š” ๋ฐฉ๋ฒ•

๊ธฐ์กด์˜ ์„ค๊ณ„๊ฐ€ ์ด์ƒ ์—†๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€, ๋ณ€๊ฒฝ์˜ ์ด์œ ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์ธ ํด๋ž˜์Šค๋ฅผ ์ฐพ๋Š” ๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋˜๋Š” ์‹œ์ ์„ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด๋‹ค. ์‘์ง‘๋„๊ฐ€ ๋†’์€ ํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ชจ๋“  ์†์„ฑ์„ ํ•จ๊ป˜ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ๋ฐ˜๋ฉด ์‘์ง‘๋„๊ฐ€ ๋‚ฎ์€ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ ์ค‘ ์ผ๋ถ€๋งŒ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์ผ๋ถ€๋Š” ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๋Š” ์ƒํƒœ๋กœ ๋‚จ๊ฒจ์ง„๋‹ค.

๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๋ฉ”์„œ๋“œ๋“ค์ด ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด๋‹ค. ๋ชจ๋“  ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ์ฒด์˜ ๋ชจ๋“  ์†์„ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํด๋ž˜์Šค์˜ ์‘์ง‘๋„๋Š” ๋†’๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋ฉด ๋ฉ”์„œ๋“œ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ์— ๋”ฐ๋ผ ๊ทธ๋ฃน์ด ๋‚˜๋‰œ๋‹ค๋ฉด ํด๋ž˜์Šค์˜ ์‘์ง‘๋„๊ฐ€ ๋‚ฎ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํด๋ž˜์Šค ์‘์ง‘๋„ ํŒ๋‹จํ•˜๊ธฐ

ํด๋ž˜์Šค๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ง•ํ›„๋กœ ๋ชธ์‚ด์„ ์•“๊ณ  ์žˆ๋‹ค๋ฉด ํด๋ž˜์Šค์˜ ์‘์ง‘๋„๊ฐ€ ๋‚ฎ์€ ๊ฒƒ์ด๋‹ค.

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

์ธํ„ฐํŽ˜์ด์Šค์™€ ์„ค๊ณ„ ํ’ˆ์งˆ

์ข‹์€ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ตœ์†Œํ•œ์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ถ”์ƒ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ผ๋Š” ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค. ์ตœ์†Œํ•œ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ผญ ํ•„์š”ํ•œ ์˜คํผ๋ ˆ์ด์…˜๋งŒ์„ ์ธํ„ฐํŽ˜์ด์Šค์— ํฌํ•จํ•œ๋‹ค. ์ถ”์ƒ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์•„๋‹ˆ๋ผ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ํ‘œํ˜„ํ•œ๋‹ค.

๋‹ค์Œ์€ ํผ๋ธ”๋ฆญ ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ’ˆ์งˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์›์น™๊ณผ ๊ธฐ๋ฒ•์ด๋‹ค.

  • ๋””๋ฏธํ„ฐ ๋ฒ•์น™
  • ๋ฌป์ง€ ๋ง๊ณ  ์‹œ์ผœ๋ผ
  • ์˜๋„๋ฅผ ๋“œ๋Ÿฌ๋‚ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค
  • ๋ช…๋ น-์ฟผ๋ฆฌ ๋ถ„๋ฆฌ

1. ๋””๋ฏธํ„ฐ ๋ฒ•์น™

๋””๋ฏธํ„ฐ ๋ฒ•์น™์€ ์ž˜ ์•Œ๋ ค์ง„ ๋ฐœ๊ฒฌ๋ฒ•์œผ๋กœ ๋ชจ๋“ˆ์€ ์ž์‹ ์ด ์กฐ์ž‘ํ•˜๋Š” ๊ฐ์ฒด์˜ ์†์‚ฌ์ •์„ ๋ชฐ๋ผ์•ผ ํ•œ๋‹ค๋Š” ๋ฒ•์น™์ด๋‹ค. ๊ฐ์ฒด๋Š” ์ž๋ฃŒ๋ฅผ ์ˆจ๊ธฐ๊ณ  ํ•จ์ˆ˜๋ฅผ ๊ณต๊ฐœํ•œ๋‹ค. ์ฆ‰ ๊ฐ์ฒด๋Š” ์กฐํšŒ ํ•จ์ˆ˜๋กœ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๊ณต๊ฐœํ•˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋…ธ์ถœํ•˜๋Š” ์…ˆ์ด๋‹ˆ๊นŒ, ์ •ํ™•ํžˆ ํ‘œํ˜„ํ•˜์ž๋ฉด, ๋””๋ฏธํ„ฐ ๋ฒ•์น™์€ "ํด๋ž˜์Šค C์˜ ๋ฉ”์†Œ๋“œ f๋Š” ๋‹ค์Œ ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ๋งŒ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค"๊ณ  ์ฃผ์žฅํ•œ๋‹ค

  • ํด๋ž˜์Šค C
  • f๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์ฒด
  • f ์ธ์ˆ˜๋กœ ๋„˜์–ด์˜จ ๊ฐ์ฒด
  • C ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ์ฒด

๊ทธ๋ฆฌ๊ณ  ์˜ค์ง ํ•˜๋‚˜์˜ ๋„ํŠธ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๋‹ค์Œ์€ ๋””๋ฏธํ„ฐ์˜ ๋ฒ•์น™์„ ์œ„๋ฐ˜ํ•˜๋Š” ์ „ํ˜•์ ์ธ ์ฝ”๋“œ์ด๋‹ค.

screening.getMovie().getDiscountConditions();

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

for(Movie each :  movies) {
	total += each.getFee(); 
}

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

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

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

2. ๋ฌป์ง€ ๋ง๊ณ  ์‹œ์ผœ๋ผ

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

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

public boolean getAdmin(); // ์ด๊ฒƒ ๋ณด๋‹จ

public boolean isAdmin(); // ์ด๋ ‡๊ฒŒ..

ํ•˜์ง€๋งŒ ๋‹จ์ˆœํ•˜๊ฒŒ ๊ฐ์ฒด์—๊ฒŒ ๋ฌป์ง€ ์•Š๊ณ  ์‹œํ‚จ๋‹ค๊ณ  ํ•ด์„œ ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ํ›Œ๋ฅญํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ˆ˜ํ™•ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€๋ฅผ ๋…ธ์ถœํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€๋ฅผ ์„œ์ˆ ํ•ด์•ผ ํ•œ๋‹ค.

๋ฉ”์‹œ์ง€๋ฅผ ๋จผ์ € ์„ ํƒํ•˜๋ฉด ๋ฌป์ง€ ๋ง๊ณ  ์‹œ์ผœ๋ผ ์Šคํƒ€์ผ์— ๋”ฐ๋ผ ํ˜‘๋ ฅ์„ ๊ตฌ์กฐํ™”ํ•˜๊ฒŒ ๋œ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ ๊ด€์ ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์„ ํƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ์ •๋ณด๋ฅผ ๋ฌผ์„ ํ•„์š” ์—†์ด ์›ํ•˜๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋ฉด ๋œ๋‹ค.

3. ์˜๋„๋ฅผ ๋“œ๋Ÿฌ๋‚ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค

์ผ„ํŠธ ๋ฒก์ด ๋ฉ”์„œ๋“œ๋ฅผ ๋ช…๋ช…ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ–ˆ๋‹ค. ์ฒซ๋ฒˆ ์งธ ๋ฐฉ๋ฒ•์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์ž‘์—…์„ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋„๋ก ์ด๋ฆ„ ์ง“๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์€ ๋‚ด๋ถ€์˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ๋“œ๋Ÿฌ๋‚ธ๋‹ค. ๋‹ค์Œ์€ ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ PeriodCondition๊ณผ SequenceCondition์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋ช…๋ช…ํ•œ ๊ฒƒ์ด๋‹ค.

public class PeriodCondition {
	public boolean isSatisfiedByPeriod(Screening screening) {...}
}

public class SequenceCondition {
	public boolean isSatisfiedBySequence(Screening screening) {...}
}

์ด๋Ÿฐ ์Šคํƒ€์ผ์€ ์ข‹์ง€ ์•Š๋Š”๋ฐ ๊ทธ ์ด์œ ๋ฅผ ๋‘ ๊ฐ€์ง€๋กœ ์š”์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์ œ๋Œ€๋กœ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ ๊ด€์ ์—์„œ isSatisfiedByPeriod์™€ isSatisfiedBySequence ๋ชจ๋‘ ํ• ์ธ ์กฐ๊ฑด์„ ํŒ๋‹จํ•˜๋Š” ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋ฉ”์„œ๋“œ์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„์„ ์ •ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด ๋‘ ๋ฉ”์„œ๋“œ๊ฐ€ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ์•„์ฑ„๊ธฐ ์–ด๋ ต๋‹ค.
  • ๋” ํฐ ๋ฌธ์ œ๋Š” ๋ฉ”์„œ๋“œ ์ˆ˜์ค€์—์„œ ์บก์Аํ™”๋ฅผ ์œ„๋ฐ˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋“ค์€ ํด๋ผ์ด์–ธํŠธ๋กœ ํ•˜์—ฌ๊ธˆ ํ˜‘๋ ฅํ•˜๋Š” ๊ฐ์ฒด์˜ ์ข…๋ฅ˜๋ฅผ ์•Œ๋„๋ก ๊ฐ•์š”ํ•œ๋‹ค. PeriodCondition์„ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ SequenceCondition์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋‹จ์ˆœํžˆ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ํ• ์ธ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„ ์—ญ์‹œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ฝ”๋“œ๋„ ํ•จ๊ป˜ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋“œ๋Ÿฌ๋‚ด๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ์„ค๊ณ„๋Š” ๋ณ€๊ฒฝ์— ์ทจ์•ฝํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

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

4. ๋ช…๋ น-์ฟผ๋ฆฌ ๋ถ„๋ฆฌ ์›์น™

๋ช…๋ น-์ฟผ๋ฆฌ ๋ถ„๋ฆฌ ์›์น™์€ ํผ๋ธ”๋ฆญ ์ธํ„ฐํŽ˜์ด์Šค์— ์˜คํผ๋ ˆ์ด์…˜์„ ์ •์˜ํ•  ๋•Œ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์นจ์„ ์ œ๊ณตํ•œ๋‹ค.

๋ช…๋ น-์ฟผ๋ฆฌ ๋ถ„๋ฆฌ ์›์น™์˜ ์š”์ง€๋Š” ์˜คํผ๋ ˆ์ด์…˜์€ ๋ถ€์ˆ˜ํšจ๊ณผ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ช…๋ น์ด๊ฑฐ๋‚˜ ๋ถ€์ˆ˜ํšจ๊ณผ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๋Š” ์ฟผ๋ฆฌ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์–ด๋–ค ์˜คํผ๋ ˆ์ด์…˜๋„ ๋ช…๋ น์ธ ๋™์‹œ์— ์ฟผ๋ฆฌ์—ฌ์„œ๋Š” ์•ˆ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ช…๋ น๊ณผ ์ฟผ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ์˜ ๋‘ ๊ฐ€์ง€ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค.

  • ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์€ ๋ฐ˜ํ™˜๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.
  • ๊ฐ์ฒด์˜ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฟผ๋ฆฌ๋Š” ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.

๋ช…๋ น-์ฟผ๋ฆฌ ๋ถ„๋ฆฌ ์›์น™์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด "์งˆ๋ฌธ์ด ๋‹ต๋ณ€์„ ์ˆ˜์ •ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค"๋Š” ๊ฒƒ์ด๋‹ค.๋ช…๋ น์€ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. ์ฟผ๋ฆฌ๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.

๋ถ€์ˆ˜ํšจ๊ณผ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ๋งŒ์„ ํ•จ์ˆ˜๋กœ ์ œํ•œํ•จ์œผ๋กœ์จ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋งํ•˜๋Š” 'ํ•จ์ˆ˜'์˜ ๊ฐœ๋…์ด ์ผ๋ฐ˜ ์ˆ˜ํ•™์—์„œ์˜ ๊ฐœ๋…๊ณผ ์ƒ์ถฉ๋˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค. ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€๋งŒ ์ง์ ‘์ ์œผ๋กœ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ๋ช…๋ น(Command)๊ณผ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์ฟผ๋ฆฌ(Query)๊ฐ„์˜ ๋ช…ํ™•ํ•œ ๊ตฌ๋ถ„์„ ์œ ์ง€ํ•  ๊ฒƒ์ด๋‹ค.

๋ช…๋ น-์ฟผ๋ฆฌ ๋ถ„๋ฆฌ ์›์น™์„ ์ž˜ ์ง€ํ‚ค๋ฉด ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉฐ ๋””๋ฒ„๊น…์ด ์šฉ์ดํ•œ ๋™์‹œ์— ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์ˆ˜์›”ํ•ด์งˆ ๊ฒƒ์ด๋‹ค.

๋ฉ”์‹œ์ง€๋ฅผ ๋จผ์ € ์„ ํƒํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํ˜‘๋ ฅ์ด๋ผ๋Š” ๋ฌธ๋งฅ ์•ˆ์—์„œ ๊ฐ์ฒด์˜ ์ธํ„ฐํŽ˜์ด์Šค์— ๊ด€ํ•ด ๊ณ ๋ฏผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ฐ์ฒด๊ฐ€ ๋‹จ์ˆœํžˆ ์–ด๋–ค ์ผ์„ ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ˜‘๋ ฅ ์†์—์„œ ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์˜ˆ์ธกํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์— ๊ด€ํ•ด ๊ณ ๋ฏผํ•˜๊ฒŒ ๋œ๋‹ค.๋”ฐ๋ผ์„œ ์˜ˆ์ธก๊ฐ€๋Šฅํ•œ ํ˜‘๋ ฅ์„๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋ช…๋ น๊ณผ์ฟผ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ฒŒ ๋ ๊ฒƒ์ด๋‹ค.

์˜์กด์„ฑ ์—ญ์ „ ์›์น™๊ณผ ํŒจํ‚ค์ง€

(๊ทธ๋ฆผ 1) ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์„œ๋ฒ„ ๋ชจ๋“ˆ ์ชฝ์— ์œ„์น˜ํ•˜๋Š” ์ „ํ†ต์ ์ธ ๋ชจ๋“ˆ ๊ตฌ์กฐ

(๊ทธ๋ฆผ 2) ์ธํ„ฐํŽ˜์ด์Šค์˜ ์†Œ์œ ๊ถŒ์„ ์—ญ์ „์‹œํ‚จ ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ๋ชจ๋“ˆ ๊ตฌ์กฐ

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

์ƒ์†์— ๋Œ€ํ•ด์„œ

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

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

์„œ๋ธŒํด๋ž˜์‹ฑ๊ณผ ์„œ๋ธŒํƒ€์ดํ•‘

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

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

์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ๋ชฉ์ ์ด๋ผ๋ฉด ์„œ๋ธŒ ํด๋ž˜์‹ฑ, ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ๋Œ€์‹  ์ž์‹ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋ชฉ์ ์œผ๋กœ ์ƒ์†ํ–ˆ๋‹ค๋ฉด ์„œ๋ธŒ ํƒ€์ดํ•‘

์„œ๋ธŒํด๋ž˜์‹ฑ๊ณผ ์„œ๋ธŒํƒ€์ดํ•‘์„ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€์€ ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์ ์ด๋‹ค.

is-a ๊ด€๊ณ„๋กœ ํ‘œํ˜„๋œ ๋ฌธ์žฅ์„ ๋ณผ ๋•Œ๋งˆ๋‹ค ๋ฌธ์žฅ ์•ž์— "ํด๋ผ์ด์–ธํŠธ ์ž…์žฅ์—์„œ" ๋ผ๋Š” ๋ง์ด ๋น ์ ธ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ผ. (ํด๋ผ์ด์–ธํŠธ ์ž…์žฅ์—์„œ) ์ •์‚ฌ๊ฐํ˜•์€ ์ง์‚ฌ๊ฐํ˜•์ด๋‹ค. (ํด๋ผ์ด์–ธํŠธ ์ž…์žฅ์—์„œ) ํŽญํ€ธ์€ ์ƒˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ฐฐ์ œํ•œ is-a ๊ด€๊ณ„๋Š” ํ˜ผ๋ž€์œผ๋กœ ๋ชฐ์•„๊ฐˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

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

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

๊ฒฐ๋ก ์ ์œผ๋กœ ์ƒ์†์ด ์„œ๋ธŒํƒ€์ดํ•‘์„ ์œ„ํ•ด ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ์—๋งŒ is-a ๊ด€๊ณ„๋‹ค. ์„œ๋ธŒํด๋ž˜์‹ฑ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์†์„ ํ–ˆ๋‹ค๋ฉด is-a ๊ด€๊ณ„๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์—†๋‹ค.

์‚ฌ์ „์กฐ๊ฑด๊ณผ ์‚ฌํ›„์กฐ๊ฑด

(์ถ”ํ›„ ๊ธ€๋กœ ์„ค๋ช…)

์ €์ž์˜ ์˜๋„๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ ํ•œ ๊ฒƒ

์œ„์ž„(delegation)

์ž์‹ ์ด ์ˆ˜์‹ ํ•œ ๋ฉ”์„ธ์ง€๋ฅผ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ๋™์ผํ•˜๊ฒŒ ์ „๋‹ฌํ•ด์„œ ์ฒ˜๋ฆฌ๋ฅผ ์š”์ฒญ ํ•˜๋Š” ๊ฒƒ์„ **์œ„์ž„(delegation)**์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

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

ํฌ์›Œ๋”ฉ๊ณผ ์œ„์ž„

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

์„ค๊ณ„์— ์ผ๊ด€์„ฑ ๋ถ€์—ฌํ•˜๊ธฐ

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

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

  • ๋ณ€ํ•˜๋Š” ๊ฐœ๋…์„ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐœ๋…์œผ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌํ•˜๋ผ.
  • ๋ณ€ํ•˜๋Š” ๊ฐœ๋…์„ ์บก์Аํ™” ํ•˜๋ผ.

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

๊ณต๋ณ€์„ฑ ๋ฐ˜๊ณต๋ณ€์„ฑ ๋ฌด๊ณต๋ณ€์„ฑ

S extends T ์ผ ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •.

  • ๊ณต๋ณ€์„ฑ(covariance) : S์™€ T ์‚ฌ์ด์˜ ์„œ๋ธŒํƒ€์ž… ๊ด€๊ณ„๊ฐ€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ๋‹ค. ์ด ๊ฒฝ์šฐ ํ•ด๋‹น ์œ„์น˜์—์„œ ์„œ๋ธŒํƒ€์ž…์ธ S๊ฐ€ ์Šˆํผํƒ€์ž…์ธ T ๋Œ€์‹  ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์ด์•ผ๊ธฐํ•˜๋Š” ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™์€ ๊ณต๋ณ€์„ฑ๊ณผ ๊ด€๋ จ๋œ ์›์น™์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

    • ๋ฆฌํ„ด ํƒ€์ž… ๊ณต๋ณ€์„ฑ(return type covariance) : ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•  ๋•Œ ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์„ ์–ธํ•œ ๋ฐ˜ํ™˜ํƒ€์ž…์˜ ์„œ๋ธŒํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ์„ ๋ฆฌํ„ด ํƒ€์ž… ๊ณต๋ณ€์„ฑ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•ด์„œ ๋ฆฌํ„ด ํƒ€์ž… ๊ณต๋ณ€์„ฑ์ด๋ž€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์˜ ํƒ€์ž… ๊ณ„์ธต ๋ฐฉํ–ฅ๊ณผ ๋ฆฌํ„ด ํƒ€์ž…์˜ ํƒ€์ž… ๊ณ„์ธต ๋ฐฉํ–ฅ์ด ๋™์ผํ•œ ๊ฒฝ์šฐ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

  • ๋ฐ˜๊ณต๋ณ€์„ฑ(contravariance) : S์™€ T ์‚ฌ์ด์˜ ์„œ๋ธŒํƒ€์ž… ๊ด€๊ณ„๊ฐ€ ์—ญ์ „๋œ๋‹ค. ์ด ๊ฒฝ์šฐ ํ•ด๋‹น ์œ„์น˜์—์„œ ์Šˆํผํƒ€์ž…์ธ T๊ฐ€ ์„œ๋ธŒํƒ€์ž…์ธ S ๋Œ€์‹  ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

    • ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ๋ฐ˜๊ณต๋ณ€์„ฑ(parameter type contravariance) : ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•  ๋•Œ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์„ ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์Šˆํผํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ์„ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ๋ฐ˜๊ณต๋ณ€์„ฑ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•ด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž… ๋ฐ˜๊ณต๋ณ€์„ฑ์ด๋ž€ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•œ ํด๋ž˜์Šค์˜ ํƒ€์ž… ๊ณ„์ธต๊ณผ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํƒ€์ž… ๊ณ„์ธต์˜ ๋ฐฉํ–ฅ์ด ๋ฐ˜๋Œ€์ธ ๊ฒฝ์šฐ ์„œ๋ธŒํƒ€์ž… ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

  • ๋ฌด๊ณต๋ณ€์„ฑ(invariance) : S์™€ T ์‚ฌ์ด์—๋Š” ์•„๋ฌด๋Ÿฐ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ S๋Œ€์‹  T๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋Œ€์‹  S๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

์„œ๋ธŒํƒ€์ž…์˜ ๋ฉ”์„œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฐ˜๊ณต๋ณ€์„ฑ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

๋ถ€๋ก

CRC ์นด๋“œ