Introduce

๊ฐ์ฒด์ง€ํ–ฅ์˜ ๋ชฉํ‘œ๋Š” ์‹ค์„ธ๊ณ„๋ฅผ ๋ชจ๋ฐฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ์„ธ๊ณ„๋ฅผ ์ฐฝ์กฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • ์‹ค์„ธ๊ณ„์˜ ์€์œ ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ํ•™์Šต ๋„๊ตฌ

  • ์‹ค์ œ ์„ค๊ณ„์—์„œ๋Š” ํ˜„์‹ค์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ผ๋„ ์†Œํ”„ํŠธ์›จ์–ด ์„ธ๊ณ„์—์„œ๋Š” ์ƒ๋ช…๊ณผ ์ง€๋Šฅ์„ ๊ฐ€์ง„ ์กด์žฌ๋กœ ์˜์ธํ™”

๊ฐ์ฒด์ง€ํ–ฅ์˜ ๋ณธ์งˆ

๊ฐ์ฒด์ง€ํ–ฅ์€ ์‹œ์Šคํ…œ์„ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์ž์œจ์ ์ธ ๊ฐ์ฒด๋“ค์˜ ๊ณต๋™์ฒด๋กœ ๋ฐ”๋ผ๋ณด๊ณ , ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด ์‹œ์Šคํ…œ์„ ๋ถ„ํ• ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค.

  • ์ž์œจ์ ์ธ ๊ฐ์ฒด

    • ์ƒํƒœ์™€ ํ–‰์œ„๋ฅผ ํ•จ๊ป˜ ์ง€๋‹ˆ๋ฉฐ ์Šค์Šค๋กœ ์ž๊ธฐ ์ž์‹ ์„ ์ฑ…์ž„์ง€๋Š” ๊ฐ์ฒด

    • ์™ธ๋ถ€์˜ ๊ฐ„์„ญ ์—†์ด ์ž์‹ ์˜ ์ƒํƒœ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๊ณ  ๊ฒฐ์ •

  • ํ˜‘๋ ฅ

    • ๊ฐ์ฒด๋Š” ์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ํ˜‘๋ ฅ

    • ๊ฐ ๊ฐ์ฒด๋Š” ํ˜‘๋ ฅ ๋‚ด์—์„œ ์ •ํ•ด์ง„ ์—ญํ• ๊ณผ ์ฑ…์ž„์„ ์ˆ˜ํ–‰

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

    • ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ํ˜‘๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†ก

    • ์ˆ˜์‹ ํ•œ ๊ฐ์ฒด๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ ํ•ฉํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์Šค์Šค๋กœ ์„ ํƒํ•˜์—ฌ ์‹คํ–‰

ํด๋ž˜์Šค์ง€ํ–ฅ X / ๊ฐ์ฒด์ง€ํ–ฅ O

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

  • ํด๋ž˜์Šค ์ค‘์‹ฌ ์‚ฌ๊ณ ์˜ ๋ฌธ์ œ์ 

    • ์„ค๊ณ„๋ฅผ ํ•  ๋•Œ ๋ฐ์ดํ„ฐ(๋ฉค๋ฒ„ ๋ณ€์ˆ˜)๋ฅผ ๋จผ์ € ๊ณ ๋ฏผํ•˜๊ฒŒ ๋˜์–ด ์บก์Аํ™” ์œ„๋ฐ˜ ๊ฐ€๋Šฅ

    • ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ์— ์˜์กดํ•˜๊ฒŒ ๋˜์–ด ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง

  • ๊ฐ์ฒด ์ค‘์‹ฌ ์‚ฌ๊ณ ์˜ ์ „ํ™˜

    • ์ฝ”๋“œ๋ฅผ ๋‹ด๋Š” ํด๋ž˜์Šค ๊ด€์ ์ด ์•„๋‹ˆ๋ผ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฐ์ฒด ๊ด€์ ์œผ๋กœ ์ ‘๊ทผ ํ•„์š”

    • ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•œ์ง€๊ฐ€ ์•„๋‹ˆ๋ผ, ์–ด๋–ค ๋ฉ”์‹œ์ง€(์ฑ…์ž„)๊ฐ€ ํ•„์š”ํ•œ์ง€๋ฅผ ๋จผ์ € ๊ฒฐ์ •

    • ํด๋ž˜์Šค๋Š” ํ˜‘๋ ฅ ๊ด€๊ณ„๋ฅผ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๋Š” ๋„๊ตฌ

๊ตฌ๋ถ„
์˜คํ•ด
์ง„์‹ค

๊ด€์ 

ํด๋ž˜์Šค์™€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ค‘์‹ฌ

์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ ์ค‘์‹ฌ

์ˆœ์„œ

ํด๋ž˜์Šค ์ •์˜ -> ๊ฐ์ฒด ์ƒ์„ฑ

๋ฉ”์‹œ์ง€ ์ •์˜ -> ๊ฐ์ฒด ๋ฐœ๊ฒฌ -> ํด๋ž˜์Šค ๊ตฌํ˜„

ํ•ต์‹ฌ

์ƒ์†์„ ํ†ตํ•œ ์žฌ์‚ฌ์šฉ

๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•œ ๋А์Šจํ•œ ๊ฒฐํ•ฉ

๊ฐ์ฒด

๊ฐ์ฒด๋Š” ๊ตฌ์ฒด์ ์ธ ์‚ฌ๋ฌผ์ผ ์ˆ˜๋„ ์žˆ๊ณ  ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์ผ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ(State), ํŠน์ง•์ ์ธ ํ–‰๋™(Behavior), ๊ตฌ๋ณ„ ๊ฐ€๋Šฅํ•œ ์‹๋ณ„์ž(Identity)๋ฅผ ๊ฐ€์ง„๋‹ค.

์ƒํƒœ

์ƒํƒœ๋Š” ํŠน์ • ์‹œ์ ์— ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด์˜ ์ง‘ํ•ฉ์œผ๋กœ, ํ˜„์žฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ์ฒด์˜ ํ–‰๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์‰ฝ๊ฒŒ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

  • ํ”„๋กœํผํ‹ฐ(Property)

    • ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ •์ ์ธ ํŠน์ง•

    • ๋งํฌ(Link): ๊ฐ์ฒด์™€ ๊ฐ์ฒด ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ

    • ์†์„ฑ(Attribute): ๊ฐ์ฒด๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ€์ง€๋Š” ๋‹จ์ˆœํ•œ ๊ฐ’

  • ํ”„๋กœํผํ‹ฐ ๊ฐ’(Property Value)

    • ์‹œ๊ฐ„์ด ํ๋ฆ„์— ๋”ฐ๋ผ ๋ณ€ํ•˜๋Š” ๋™์ ์ธ ๊ฐ’

ํ–‰๋™

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

  • ํ–‰๋™์˜ ํŠน์ง•

    • ์ƒํƒœ ๋ณ€๊ฒฝ(Side Effect): ๊ฐ์ฒด ์ž์‹ ์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ

    • ๋ฉ”์‹œ์ง€ ์ „์†ก: ํ˜‘๋ ฅ์„ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์š”์ฒญ ์ „์†ก

  • ์บก์Аํ™”์™€ ์ž์œจ์„ฑ

    • ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ

    • ์˜ค์ง ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์š”์ฒญํ•˜๋ฉฐ, ์š”์ฒญ์„ ์ˆ˜์‹ ํ•œ ๊ฐ์ฒด๊ฐ€ ์Šค์Šค๋กœ ์ƒํƒœ ๋ณ€๊ฒฝ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •

์‹๋ณ„์ž

๋ชจ๋“  ๊ฐ์ฒด๋Š” ์„œ๋กœ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง€๋Š”๋ฐ, ๊ฐ’(Value)๊ณผ ๊ฐ์ฒด(Entity)๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์ค‘์š”ํ•œ ๊ธฐ์ค€์ด ๋œ๋‹ค.

  • ๋™๋“ฑ์„ฑ(Equality)

    • ๊ฐ’(Value Object) ๋น„๊ต ๊ธฐ์ค€

    • ์ƒํƒœ(ํ”„๋กœํผํ‹ฐ ๊ฐ’)๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๋‘ ์ธ์Šคํ„ด์Šค๋Š” ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ํŒ๋‹จ

  • ๋™์ผ์„ฑ(Identity)

    • ๊ฐ์ฒด(Entity) ๋น„๊ต ๊ธฐ์ค€

    • ์ƒํƒœ๊ฐ€ ์™„์ „ํžˆ ๊ฐ™๋”๋ผ๋„ ์‹๋ณ„์ž๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ์ธ์‹

ํ–‰๋™์˜ ์ƒํƒœ ๊ฒฐ์ •(์ฑ…์ž„ ์ฃผ๋„ ์„ค๊ณ„)

๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์˜ ํ•ต์‹ฌ์€ ์ƒํƒœ(๋ฐ์ดํ„ฐ)๊ฐ€ ์•„๋‹Œ ํ–‰๋™(์ฑ…์ž„)์„ ๋จผ์ € ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

spinner

์ƒํƒœ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋ฐ”๋ผ๋ณด๊ฒŒ ๋˜๋ฉด, ํ•„์š”ํ•œ ์ƒํƒœ๋ฅผ ๋จผ์ € ์„ค๊ณ„ํ•˜๊ณ  ๊ทธ ํ›„ ํ–‰๋™์„ ๊ณ ๋ คํ•œ๋‹ค๋ฉด ์„ค๊ณ„์— ๋‚˜์œ ์˜ํ–ฅ์„ ๋ผ์นœ๋‹ค.

  1. ์บก์Аํ™” ์ €ํ•ด: ์ƒํƒœ์— ์ดˆ์ ์„ ๋งž์ถœ ๊ฒฝ์šฐ ์ƒํƒœ๊ฐ€ ๊ฐ์ฒด ๋‚ด๋ถ€๋กœ ๊น”๋”ํ•˜๊ฒŒ ์บก์Аํ™”๋˜์ง€ ๋ชปํ•˜๊ณ  ๊ณต์šฉ ์ธํ„ฐํŽ˜์ด์Šค์— ๋…ธ์ถœ

  2. ๊ฐ์ฒด์˜ ๊ณ ๋ฆฝํ™”: ํ˜‘๋ ฅ์ด๋ผ๋Š” ๋ฌธ๋งฅ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๊ฐ์ฒด ํ™€๋กœ ์กด์žฌํ•˜๊ฒŒ ๋˜์–ด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฌธ๋งฅ์— ๋ถ€์ ํ•ฉํ•œ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง

  3. ๊ฐ์ฒด ์žฌ์‚ฌ์šฉ์„ฑ ์ €ํ•˜: ํŠน์ • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๋ฌธ๋งฅ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง

๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ํ˜‘๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋ฉฐ, ํ–‰๋™์€ ํ˜‘๋ ฅํ—ค ์ฐธ์—ฌํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ด๋ฏ€๋กœ ์ ์ ˆํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„  ์ƒํƒœ๋ณด๋‹จ ํ–‰๋™์„ ๋จผ์ € ๊ณ ๋ คํ•ด์•ผํ•œ ํ›„ ์ƒํƒœ๋ฅผ ์„ค๊ณ„ํ•ด์•ผํ•œ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

Last updated