
๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์ ์ง์์ ์ถ์ํํ๊ณ ์ถ์ํํ ์ง์์ ๊ฐ์ฒด ์์ ์บก์ํํจ์ผ๋ก์จ ์ค์ธ๊ณ ๋ฌธ์ ์ ๋ด์ฌ๋ ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๋ ค๊ณ ํ๋ค. ๊ฐ์ฒด๋ฅผ ๋ฐ๊ฒฌํ๊ณ ์ฐฝ์กฐํ๋ ๊ฒ์ ์ง์๊ณผ ํ๋์ ๊ตฌ์กฐํํ๋ ๋ฌธ์ ๋ค.
01 ๊ฐ์ฒด ์งํฅ๊ณผ ์ธ์ง ๋ฅ๋ ฅ
์ธ๊ฐ์ ๋ณธ๋ฅ์ ์ผ๋ก ์ธ์์ ๋ ๋ฆฝ์ ์ด๊ณ ์๋ณ ๊ฐ๋ฅํ ๊ฐ์ฒด์ ์งํฉ์ผ๋ก ๋ฐ๋ผ๋ณธ๋ค.
์ธ์์ ๋ ์์ ๊ฐ์ฒด๋ก ๋ถํดํ๋ ๊ฒ : ๋ณธ์ง์ ์ผ๋ก ์ธ์์ด ํฌํจํ๊ณ ์๋ ๋ณต์ก์ฑ์ ๊ทน๋ณตํ๊ธฐ ์ํ ์ธ๊ฐ์ ์์ ๋ชธ๋ถ๋ฆผ
์ธ๊ฐ์ ์ข ๋ ๋จ์ํ ๊ฐ์ฒด๋ค๋ก ์ฃผ๋ณ์ ๋ถํดํจ์ผ๋ก์จ ์์ ์ด ๋ชธ๋ด๊ณ ์๋ ์ธ์์ ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค.
์ฆ, ๊ฐ์ฒด๋? ์ธ๊ฐ์ด ๋ถ๋ช ํ๊ฒ ์ธ์งํ๊ณ ๊ตฌ๋ณํ ์ ์๋ ๋ฌผ๋ฆฌ์ ์ธ ๋๋ ๊ฐ๋ ์ ์ธ ๊ฒฝ๊ณ๋ฅผ ์ง๋ ์ด๋ค ๊ฒ์ด๋ค.
๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์ ๋ชฉ์ : ํ์ค ์ธ๊ณ๋ฅผ ๋ชจ๋ฐฉํ๋ ๊ฒ์ด ์๋๋ผ ํ์ค ์ธ๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ์ธ๊ณ๋ฅผ ์ฐฝ์กฐํ๋ ๊ฒ์ด๋ค.
02 ๊ฐ์ฒด, ๊ทธ๋ฆฌ๊ณ ์ด์ํ ๋๋ผ
- ์จ๋ฆฌ์ค๋ ์ํ๋ฅผ ๊ฐ์ง๋ฉฐ ์ํ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค.
- ์จ๋ฆฌ์ค์ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํค๋ ๊ฒ์ ์จ๋ฆฌ์ค์ ํ๋์ด๋ค.
- ํ๋์ ๊ฒฐ๊ณผ๋ ์ํ์ ์์กด์ ์ด๋ฉฐ ์ํ๋ฅผ ์ด์ฉํด ์์ ํ ์ ์๋ค.
- ํ๋์ ์์๊ฐ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น๋ค.
- ์จ๋ฆฌ์ค๋ ์ด๋ค ์ํ์ ์๋๋ผ๋ ์ ์ผํ๊ฒ ์๋ณ ๊ฐ๋ฅํ๋ค.
03 ๊ฐ์ฒด, ๊ทธ๋ฆฌ๊ณ ์ํํธ์จ์ด ๋๋ผ
๊ฐ์ฒด์ ๋ค์ํ ํน์ฑ์ ํจ๊ณผ์ ์ผ๋ก ์ค๋ช ํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๋ฅผ ์ํ(state), ํ๋(behavior), ์๋ณ์(identity)๋ฅผ ์ง๋ ์ค์ฒด๋ก ๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ํจ๊ณผ์ ์ด๋ค.
์ํํธ์จ์ด ์์ ์ฐฝ์กฐ๋๋ ๊ฐ์ฒด ์ญ์ ์ํ, ํ๋, ์๋ณ์๋ฅผ ์ง๋๋ค.
๊ฐ์ฒด๋ ์๋ณ ๊ฐ๋ฅํ ๊ฐ์ฒด ๋๋ ์ฌ๋ฌผ์ด๋ค. ๊ฐ์ฒด๋ ์๋์ฐจ์ฒ๋ผ ๋ง์ง ์ ์๋ ๊ตฌ์ฒด์ ์ธ ์ฌ๋ฌผ์ผ ์๋ ์๊ณ , ์๊ฐ์ฒ๋ผ ์ถ์์ ์ธ ๊ฐ๋ ์ผ ์๋ ์๋ค. ๊ฐ์ฒด๋ ๊ตฌ๋ณ ๊ฐ๋ฅํ ์๋ณ์, ํน์ง์ ์ธ ํ๋, ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ํ๋ฅผ ๊ฐ์ง๋ค. ์ํํธ์จ์ด ์์์ ๊ฐ์ฒด๋ ์ ์ฅ๋ ์ํ์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ํตํด ๊ตฌํ๋๋ค.
03 - 1 ์ํ
๋ชจ๋ ๊ฐ์ฒด์ ์ํ๋ ๋จ์ํ ๊ฐ๊ณผ ๊ฐ์ฒด์ ์กฐํฉ์ผ๋ก ํํ ๊ฐ๋ฅํ๋ค.
์ด๋, ๊ฐ์ฒด์ ์ํ๋ฅผ ๊ตฌ์ฑํ๋ ๋ชจ๋ ํน์ง์ ํตํ์ด ๊ฐ์ฒด์ ํ๋กํผํฐ(property)๋ผ๊ณ ํ๋ค. (ex: ์จ๋ฆฌ์ค์ property -> ํค, ์์น, ์๋ฃ)
property๋ ๋ณ๊ฒฝ๋์ง ์๊ณ ๊ณ ์ ๋๊ธฐ ๋๋ฌธ์ '์ ์ '์ด๋ค.
๋ฐ๋ฉด, ํ๋กํผํฐ ๊ฐ(property value)์ ์๊ฐ์ด ํ๋ฆ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์, '๋์ '์ด๋ค.
๊ฐ์ฒด์ ๊ฐ์ฒด ์ฌ์ด์ ์๋ฏธ๋ฅผ ์ฐ๊ฒฐ : ๋งํฌ(link)
-> ๊ฐ์ฒด์ ๊ฐ์ฒด ์ฌ์ด์๋ ๋งํฌ๊ฐ ์กด์ฌํด์ผ๋ง ์์ฒญ์ ๋ณด๋ด๊ณ ๋ฐ์ ์ ์๋ค.
-> ์ฆ, ๊ฐ์ฒด์ ๋งํฌ๋ฅผ ํตํด์๋ง ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
(๊ฐ์ฒด ๊ฐ์ ์ ์ผ๋ก ํํ๋๋ ๋งํฌ์ ๋ฌ๋ฆฌ) ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ๋จ์ํ ๊ฐ : ์์ฑ(attribute)
-> ์จ๋ฆฌ์ค์ ํค์ ์์น๋ ๋จ์ํ ๊ฐ์ผ๋ก ํํ๋๊ธฐ ๋๋ฌธ์ ์์ฑ์ด๋ค.
-> ๊ฐ์ฒด์ property๋ ๋จ์ํ ๊ฐ์ธ ์์ฑ๊ณผ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํค๋ ๋งํฌ๋ผ๋ ๋ ๊ฐ์ง ์ข ๋ฅ์ ์กฐํฉ์ผ๋ก ํํํ ์ ์๋ค.
์ํ๋ ํน์ ์์ ์ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ ๋ณด์ ์งํฉ์ผ๋ก ๊ฐ์ฒด์ ๊ตฌ์กฐ์ ํน์ง์ ํํํ๋ค.
๊ฐ์ฒด์ ์ํ๋ ๊ฐ์ฒด์ ์กด์ฌํ๋ ์ ์ ์ธ ํ๋กํผํฐ์ ๋์ ์ธ ํ๋กํผํฐ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๊ฐ์ฒด์ ํ๋กํผํฐ๋ ๋จ์ํ ๊ฐ๊ณผ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๋งํฌ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
03 - 2 ํ๋
๊ฐ์ฒด๊ฐ ์ทจํ๋ ํ๋์ ๊ฐ์ฒด ์์ ์ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํจ๋ค.
๊ฐ์ฒด์ ํ๋์ ์ํด ๊ฐ์ฒด์ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ค๋ ๊ฒ์ ํ๋์ด ๋ถ์ ํจ๊ณผ(side effort)๋ฅผ ์ด๋ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
ex )
์จ๋ฆฌ์ค๊ฐ ์ผ์ดํฌ๋ฅผ ๋จน๋ ํ์ -> ์จ๋ฆฌ์ค์ ํค๋ฅผ ์๊ฒ ๋ณํ์ํค๊ณ , ์ผ์ดํฌ์ ์์ ์ค์ด๋ ๋ถ์ ํจ๊ณผ๋ฅผ ์ผ๊ธฐ
์จ๋ฆฌ์ค๊ฐ ๋ฌธ์ ํต๊ณผํ๋ ํ์ -> ์จ๋ฆฌ์ค์ ์์น๋ฅผ ๋ณํ์ํค๋ ๋ถ์ํจ๊ณผ๋ฅผ ์ด๋
๊ฐ์ฒด์ ํ๋์ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํค์ง๋ง ํ๋์ ๊ฒฐ๊ณผ๋ ๊ฐ์ฒด์ ์ํ์ ์์กด์ ์ด๋ค.
ex ) ์๋ฃ๋ฅผ ๋ง์ ํ์ ์จ๋ฆฌ์ค์ ํค๋ ์๋ฃ๋ฅผ ๋ง์์ง ์ ์ ์จ๋ฆฌ์ค์ ํค๋ณด๋ค ์์์ ธ์ผ ํ๋ค.
-> ์๋ฃ๋ฅผ ๋ง์๋ ํ๋์ ๊ฒฐ๊ณผ๊ฐ ์จ๋ฆฌ์ค์ ํค์ ์์กดํ๋ค.
์ํ์ ํ๋ ์ฌ์ด์ ๊ด๊ณ
1. ๊ฐ์ฒด์ ํ๋์ ์ํ์ ์ํฅ์ ๋ฐ๋๋ค. -> ์ํธ์์ฉ์ด ํ์ฌ์ ์ํ์ ์ด๋ค ๋ฐฉ์์ผ๋ก ์์กดํ๋๊ฐ
2. ๊ฐ์ฒด์ ํ๋์ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํจ๋ค. -> ์ํธ์์ฉ์ด ์ด๋ป๊ฒ ํ์ฌ์ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํค๋๊ฐ
๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ด๋ค.
-> ์์ฒญ์ ์์ ํ ๊ฐ์ฒด๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ ์ ํ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ํ๋ํ๋ค.
-> ๋ฐ๋ผ์, ๊ฐ์ฒด์ ํ๋์ ๊ฐ์ฒด๊ฐ ํ๋ ฅ์ ์ฐธ์ฌํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด๋ค.
๊ฐ์ฒด์ ํ๋์ผ๋ก ๋ฐ์ํ๋ ๊ฒฐ๊ณผ
1. ๊ฐ์ฒด ์์ ์ ์ํ ๋ณ๊ฒฝ
2. ํ๋ ๋ด์์ ํ๋ ฅํ๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ํ ๋ฉ์ธ์ง ์ ์ก
ํ๋์ด๋ ์ธ๋ถ์ ์์ฒญ ๋๋ ์์ ๋ ๋ฉ์์ง์ ์๋ตํ๊ธฐ ์ํด ๋์ํ๊ณ ๋ฐ์ํ๋ ํ๋์ด๋ค.
ํ๋์ ๊ฒฐ๊ณผ๋ก ๊ฐ์ฒด๋ ์์ ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ ์ ์๋ค.
๊ฐ์ฒด๋ ํ๋์ ํตํด ๋ค๋ฅธ ๊ฐ์ฒด์์ ํ๋ ฅ์ ์ฐธ์ฌํ๋ฏ๋ก ํ๋์ ์ธ๋ถ์ ๊ฐ์์ ์ด์ด์ผ ํ๋ค.
03 - 3 ์๋ณ์
๊ฐ์ฒด๋ ์ธ๊ฐ์ ์ธ์ง ๋ฅ๋ ฅ์ ์ด์ฉํด ์๋ณ ๊ฐ๋ฅํ ๊ฒฝ๊ณ๋ฅผ ๊ฐ์ง ๋ชจ๋ ์ฌ๋ฌผ์ ์๋ฏธํ๋ค.
-> ๊ฐ์ฒด๊ฐ ์๋ณ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๊ฐ์ฒด๋ฅผ ์๋ก ๊ตฌ๋ณํ ์ ์๋ ํน์ ํ property๊ฐ ๊ฐ์ฒด ์์ ์กด์ฌํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
-> ์ด property๋ฅผ ์๋ณ์๋ผ๊ณ ํ๋ค.
-> ๋ชจ๋ ๊ฐ์ฒด๋ ์๋ณ์๋ฅผ ๊ฐ์ง๋ฉฐ ์๋ณ์๋ฅผ ์ด์ฉํด ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ณํ ์ ์๋ค.
๊ฐ๊ณผ ๊ฐ์ฒด์ ์ฐจ์ด์
1. ๊ฐ : ์๋ณ์๋ฅผ ๊ฐ์ง์ง ์๋๋ค.
2. ๊ฐ์ฒด : ์๋ณ์๋ฅผ ๊ฐ์ง๋ค.
๊ฐ value
์ซ์, ๋ฌธ์์ด, ๋ ์ง, ์๊ฐ, ๊ธ์ก ๋ฑ๊ณผ ๊ฐ์ด ๋ณํ์ง ์๋ ์์ ๋ชจ๋ธ๋งํ๋ค.
๊ฐ์ ์ํ๋ ๋ณํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ณ ์ํ(immutable state)๋ผ๊ณ ํ๋ค.
๊ฐ์ ๊ฒฝ์ฐ, ๋ ์ธ์คํด์ค์ ์ํ๊ฐ ๊ฐ๋ค๋ฉด ๋ ์ธ์คํด์ค๋ฅผ ๊ฐ์ ๊ฒ์ผ๋ก ํ๋จํ๋ค.
-> ์ํ๋ฅผ ์ด์ฉํด ๋ ๊ฐ์ด ๊ฐ์์ง ํ๋จํ ์ ์๋ ์ฑ์ง์ ๋๋ฑ์ฑ(equality)์ด๋ผ๊ณ ํ๋ค.
-> ์ํ๋ฅผ ์ด์ฉํด ๋๋ฑ์ฑ์ ํ๋จํ ์ ์๋ ์ด์ ? ๊ฐ์ ์ํ๊ฐ ๋ณํ์ง ์๊ธฐ ๋๋ฌธ
-> ๊ฐ์ ์ค์ง ์ํ๋ง์ ์ด์ฉํด ๋๋ฑ์ฑ์ ํ๋จํ๊ธฐ ๋๋ฌธ์ ์ธ์คํด์ค๋ฅผ ๊ตฌ๋ณํ๊ธฐ ์ํ ๋ณ๋์ ์๋ณ์๋ฅผ ํ์๋ก ํ์ง ์๋๋ค.
๊ฐ์ฒด object
์๊ฐ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋๋ ์ํ๋ฅผ ํฌํจํ๋ฉฐ, ํ๋์ ํตํด ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ค. -> ๊ฐ๋ณ ์ํ(mutable state)
ํ์ ์ด ๊ฐ์ ๋ ๊ฐ์ฒด์ ์ํ๊ฐ ์์ ํ ๋๊ฐ๋๋ผ๋ ๋ ๊ฐ์ฒด๋ ๋ ๋ฆฝ์ ์ธ ๋ณ๊ฐ์ ๊ฐ์ฒด๋ก ๋ค๋ค์ผ ํ๋ค.
ex ) ์ด๋ฆ์ด ์จ๋ฆฌ์ค์ด๊ณ ํค๊ฐ ๋์ผํ ๋ ์ฌ๋์ด ํจ๊ป ์๋ค๊ณ ํ๋๋ผ๋ ๋ ์ฌ๋์ ์์ ํ ๋ณ๊ฐ์ ์ธ๊ฒฉ์ฒด์ด๋ค.
๋ ๊ฐ์ฒด์ ์ํ๊ฐ ๋ค๋ฅด๋๋ผ๋ ์๋ณ์๊ฐ ๊ฐ๋ค๋ฉด ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ๊ฐ์ฒด๋ก ํ๋จํ ์ ์๋ค.
-> ์๋ณ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฒด๊ฐ ๊ฐ์์ง๋ฅผ ํ๋จํ ์ ์๋ ์ฑ์ง : ๋์ผ์ฑ(identical)
์๋ณ์๋ ์ด๋ค ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ ๊ฐ์ฒด์ ๊ตฌ๋ถํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ค.
๊ฐ์ ์๋ณ์๋ฅผ ๊ฐ์ง์ง ์๊ธฐ ๋๋ฌธ์ ์ํ๋ฅผ ์ด์ฉํ ๋๋ฑ์ฑ ๊ฒ์ฌ๋ฅผ ํตํด ๋ ์ธ์คํด์ค๋ฅผ ๋น๊ตํด์ผ ํ๋ค.
๊ฐ์ฒด๋ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์๋ณ์๋ฅผ ์ด์ฉํ ๋์ผ์ฑ ๊ฒ์ฌ๋ฅผ ํตํด ๋ ์ธ์คํด์ค๋ฅผ ๋น๊ตํ ์ ์๋ค.
- ์ฐธ์กฐ ๊ฐ์ฒด(reference object), ์ํฐํฐ(entity) : ์๋ณ์๋ฅผ ์ง๋ ์ ํต์ ์ธ ์๋ฏธ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฉ์ด
- ๊ฐ ๊ฐ์ฒด(value object) : ์๋ณ์๋ฅผ ๊ฐ์ง์ง ์๋ ๊ฐ์ ๊ฐ๋ฆฌํค๋ ์ฉ์ด
- ๊ฐ์ฒด๋ ์ํ๋ฅผ ๊ฐ์ง๋ฉฐ ์ํ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค.
- ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํค๋ ๊ฒ์ ๊ฐ์ฒด์ ํ๋์ด๋ค.
- ํ๋์ ๊ฒฐ๊ณผ๋ ์ํ์ ์์กด์ ์ด๋ฉฐ ์ํ๋ฅผ ์ด์ฉํด ์์ ํ ์ ์๋ค.
- ํ๋์ ์์๊ฐ ์คํ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น๋ค.
- ๊ฐ์ฒด๋ ์ด๋ค ์ํ์ ์๋๋ผ๋ ์ ์ผํ๊ฒ ์๋ณ ๊ฐ๋ฅํ๋ค.
'๐ book > ๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
04 ์ญํ , ์ฑ ์, ํ๋ ฅ (0) | 2022.01.12 |
---|---|
03 ํ์ ๊ณผ ์ถ์ํ (2) ํ์ (0) | 2021.12.29 |
03 ํ์ ๊ณผ ์ถ์ํ (1) ์ถ์ํ (0) | 2021.12.27 |
02 ์ด์ํ ๋๋ผ์ ๊ฐ์ฒด (2) (1) | 2021.12.21 |
01 ํ๋ ฅํ๋ ๊ฐ์ฒด๋ค์ ๊ณต๋์ฒด (0) | 2021.11.28 |