Introduce
๊ฐ์ฒด์งํฅ์ ๋ชฉํ๋ ์ค์ธ๊ณ๋ฅผ ๋ชจ๋ฐฉํ๋ ๊ฒ์ด ์๋๋ผ ์๋ก์ด ์ธ๊ณ๋ฅผ ์ฐฝ์กฐํ๋ ๊ฒ์ด๋ค.
์ค์ธ๊ณ์ ์์ ๋ ๊ฐ์ฒด์งํฅ์ ์ดํดํ๊ธฐ ์ํ ํ์ต ๋๊ตฌ
์ค์ ์ค๊ณ์์๋ ํ์ค์ ์กด์ฌํ์ง ์๋ ๊ฐ์ฒด๋ผ๋ ์ํํธ์จ์ด ์ธ๊ณ์์๋ ์๋ช ๊ณผ ์ง๋ฅ์ ๊ฐ์ง ์กด์ฌ๋ก ์์ธํ
๊ฐ์ฒด์งํฅ์ ๋ณธ์ง
๊ฐ์ฒด์งํฅ์ ์์คํ ์ ์ํธ์์ฉํ๋ ์์จ์ ์ธ ๊ฐ์ฒด๋ค์ ๊ณต๋์ฒด๋ก ๋ฐ๋ผ๋ณด๊ณ , ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ์์คํ ์ ๋ถํ ํ๋ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
์์จ์ ์ธ ๊ฐ์ฒด
์ํ์ ํ์๋ฅผ ํจ๊ป ์ง๋๋ฉฐ ์ค์ค๋ก ์๊ธฐ ์์ ์ ์ฑ ์์ง๋ ๊ฐ์ฒด
์ธ๋ถ์ ๊ฐ์ญ ์์ด ์์ ์ ์ํ๋ฅผ ์ง์ ๊ด๋ฆฌํ๊ณ ๊ฒฐ์
ํ๋ ฅ
๊ฐ์ฒด๋ ์์คํ ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅ
๊ฐ ๊ฐ์ฒด๋ ํ๋ ฅ ๋ด์์ ์ ํด์ง ์ญํ ๊ณผ ์ฑ ์์ ์ํ
๋ฉ์์ง์ ๋ฉ์๋ ๋ถ๋ฆฌ
๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅํ๊ธฐ ์ํด ๋ฉ์์ง๋ฅผ ์ ์ก
์์ ํ ๊ฐ์ฒด๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ ํฉํ ๋ฉ์๋๋ฅผ ์ค์ค๋ก ์ ํํ์ฌ ์คํ
ํด๋์ค์งํฅ X / ๊ฐ์ฒด์งํฅ O
ํด๋์ค๋ ๊ฐ์ฒด์งํฅ ์ธ์ด์์ ์ค์ํ ๊ตฌํ ๋ฉ์ปค๋์ฆ์ด์ง๋ง, ํด๋์ค ๊ตฌ์กฐ๋ณด๋ค ๊ฐ์ฒด ๊ฐ์ ํ๋ ฅ๊ณผ ๋ฉ์์ง ํ๋ฆ์ด ์ฐ์ ๋์ด์ผ ํ๋ค.
ํด๋์ค ์ค์ฌ ์ฌ๊ณ ์ ๋ฌธ์ ์
์ค๊ณ๋ฅผ ํ ๋ ๋ฐ์ดํฐ(๋ฉค๋ฒ ๋ณ์)๋ฅผ ๋จผ์ ๊ณ ๋ฏผํ๊ฒ ๋์ด ์บก์ํ ์๋ฐ ๊ฐ๋ฅ
๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌ์กฐ์ ์์กดํ๊ฒ ๋์ด ๊ฒฐํฉ๋๊ฐ ๋์์ง
๊ฐ์ฒด ์ค์ฌ ์ฌ๊ณ ์ ์ ํ
์ฝ๋๋ฅผ ๋ด๋ ํด๋์ค ๊ด์ ์ด ์๋๋ผ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฐ์ฒด ๊ด์ ์ผ๋ก ์ ๊ทผ ํ์
์ด๋ค ๊ฐ์ฒด๊ฐ ํ์ํ์ง๊ฐ ์๋๋ผ, ์ด๋ค ๋ฉ์์ง(์ฑ ์)๊ฐ ํ์ํ์ง๋ฅผ ๋จผ์ ๊ฒฐ์
ํด๋์ค๋ ํ๋ ฅ ๊ด๊ณ๋ฅผ ์ฝ๋๋ก ์ฎ๊ธฐ๋ ๋๊ตฌ
๊ด์
ํด๋์ค์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค์ฌ
์ญํ , ์ฑ ์, ํ๋ ฅ ์ค์ฌ
์์
ํด๋์ค ์ ์ -> ๊ฐ์ฒด ์์ฑ
๋ฉ์์ง ์ ์ -> ๊ฐ์ฒด ๋ฐ๊ฒฌ -> ํด๋์ค ๊ตฌํ
ํต์ฌ
์์์ ํตํ ์ฌ์ฌ์ฉ
๋ฉ์์ง๋ฅผ ํตํ ๋์จํ ๊ฒฐํฉ
๊ฐ์ฒด
๊ฐ์ฒด๋ ๊ตฌ์ฒด์ ์ธ ์ฌ๋ฌผ์ผ ์๋ ์๊ณ ์ถ์์ ์ธ ๊ฐ๋ ์ผ ์๋ ์์ผ๋ฉฐ, ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ํ(State), ํน์ง์ ์ธ ํ๋(Behavior), ๊ตฌ๋ณ ๊ฐ๋ฅํ ์๋ณ์(Identity)๋ฅผ ๊ฐ์ง๋ค.
์ํ
์ํ๋ ํน์ ์์ ์ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ ๋ณด์ ์งํฉ์ผ๋ก, ํ์ฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฒด์ ํ๋ ๋ฐฉ์์ ์ดํดํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ฒ ์์ธกํ ์ ์๊ฒ ๋๋ค.
ํ๋กํผํฐ(Property)
๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ์ ์ ์ธ ํน์ง
๋งํฌ(Link): ๊ฐ์ฒด์ ๊ฐ์ฒด ์ฌ์ด์ ์ฐ๊ฒฐ
์์ฑ(Attribute): ๊ฐ์ฒด๊ฐ ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ง๋ ๋จ์ํ ๊ฐ
ํ๋กํผํฐ ๊ฐ(Property Value)
์๊ฐ์ด ํ๋ฆ์ ๋ฐ๋ผ ๋ณํ๋ ๋์ ์ธ ๊ฐ
ํ๋
ํ๋์ ์ธ๋ถ์ ์์ฒญ(๋ฉ์์ง) ๋๋ ๋ด๋ถ์ ์ด๋ฒคํธ์ ๋ฐ์ํ์ฌ ์คํ๋๋ ํ๋์ผ๋ก, ๊ทธ ๊ฒฐ๊ณผ๋ก ๊ฐ์ฒด๋ ์์ ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ค.
ํ๋์ ํน์ง
์ํ ๋ณ๊ฒฝ(Side Effect): ๊ฐ์ฒด ์์ ์ ์ํ๋ฅผ ๋ณ๊ฒฝ
๋ฉ์์ง ์ ์ก: ํ๋ ฅ์ ์ํด ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์์ฒญ ์ ์ก
์บก์ํ์ ์์จ์ฑ
๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ์ํ๋ฅผ ์ง์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
์ค์ง ๋ฉ์์ง๋ฅผ ํตํด์๋ง ์์ฒญํ๋ฉฐ, ์์ฒญ์ ์์ ํ ๊ฐ์ฒด๊ฐ ์ค์ค๋ก ์ํ ๋ณ๊ฒฝ ์ฌ๋ถ๋ฅผ ๊ฒฐ์
์๋ณ์
๋ชจ๋ ๊ฐ์ฒด๋ ์๋ก ๊ตฌ๋ณํ ์ ์๋ ์๋ณ์๋ฅผ ๊ฐ์ง๋๋ฐ, ๊ฐ(Value)๊ณผ ๊ฐ์ฒด(Entity)๋ฅผ ๊ตฌ๋ถํ๋ ์ค์ํ ๊ธฐ์ค์ด ๋๋ค.
๋๋ฑ์ฑ(Equality)
๊ฐ(Value Object) ๋น๊ต ๊ธฐ์ค
์ํ(ํ๋กํผํฐ ๊ฐ)๊ฐ ๊ฐ๋ค๋ฉด ๋ ์ธ์คํด์ค๋ ๊ฐ์ ๊ฒ์ผ๋ก ํ๋จ
๋์ผ์ฑ(Identity)
๊ฐ์ฒด(Entity) ๋น๊ต ๊ธฐ์ค
์ํ๊ฐ ์์ ํ ๊ฐ๋๋ผ๋ ์๋ณ์๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ๊ฐ์ฒด๋ก ์ธ์
ํ๋์ ์ํ ๊ฒฐ์ (์ฑ
์ ์ฃผ๋ ์ค๊ณ)
๊ฐ์ฒด์งํฅ ์ค๊ณ์ ํต์ฌ์ ์ํ(๋ฐ์ดํฐ)๊ฐ ์๋ ํ๋(์ฑ ์)์ ๋จผ์ ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค.
์ํ๋ฅผ ์ค์ฌ์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ฐ๋ผ๋ณด๊ฒ ๋๋ฉด, ํ์ํ ์ํ๋ฅผ ๋จผ์ ์ค๊ณํ๊ณ ๊ทธ ํ ํ๋์ ๊ณ ๋ คํ๋ค๋ฉด ์ค๊ณ์ ๋์ ์ํฅ์ ๋ผ์น๋ค.
์บก์ํ ์ ํด: ์ํ์ ์ด์ ์ ๋ง์ถ ๊ฒฝ์ฐ ์ํ๊ฐ ๊ฐ์ฒด ๋ด๋ถ๋ก ๊น๋ํ๊ฒ ์บก์ํ๋์ง ๋ชปํ๊ณ ๊ณต์ฉ ์ธํฐํ์ด์ค์ ๋ ธ์ถ
๊ฐ์ฒด์ ๊ณ ๋ฆฝํ: ํ๋ ฅ์ด๋ผ๋ ๋ฌธ๋งฅ์ ๊ณ ๋ คํ์ง ์๊ณ ๊ฐ์ฒด ํ๋ก ์กด์ฌํ๊ฒ ๋์ด, ์ ํ๋ฆฌ์ผ์ด์ ๋ฌธ๋งฅ์ ๋ถ์ ํฉํ ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง
๊ฐ์ฒด ์ฌ์ฌ์ฉ์ฑ ์ ํ: ํน์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๊ฐํ๊ฒ ๊ฒฐํฉ๋ ๊ฐ์ฒด๋ ๋ค๋ฅธ ๋ฌธ๋งฅ์์ ์ฌ์ฌ์ฉํ๊ธฐ ์ด๋ ค์์ง
๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅํ๊ธฐ ์ํด ์กด์ฌํ๋ฉฐ, ํ๋์ ํ๋ ฅํค ์ฐธ์ฌํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด๋ฏ๋ก ์ ์ ํ๊ฒ ์ค๊ณํ๊ธฐ ์ํด์ ์ํ๋ณด๋จ ํ๋์ ๋จผ์ ๊ณ ๋ คํด์ผํ ํ ์ํ๋ฅผ ์ค๊ณํด์ผํ๋ค.
์ฐธ๊ณ ์๋ฃ
Last updated