์๋ ํ์ธ์! ์ํํธ์จ์ด ์ค๊ณ์ ์ง๋๋ผ ํ ์ ์๋ UML(Unified Modeling Language)์ ํต์ฌ, ๊ทธ์ค์์๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ‘์ (Relationships)’์ ๋ํด ๊น์ด ์๊ฒ ํํค์ณ ๋ณด๊ฒ ์ต๋๋ค.
๋ง์ ๋ถ์ด ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ฆด ๋ ์ฌ๊ฐํ(ํด๋์ค)์ ๊ทธ๋ฆฌ๋ ๋ฐ ์ง์คํ์์ง๋ง, ์ค์ ์์คํ ์ ๋ ผ๋ฆฌ์ ‘๊ฐ์ฒด ๊ฐ์ ์์ฌ๊ณ ๋ฝ’์ ๊ฒฐ์ ํ๋ ๊ฒ์ ๊ทธ ์ฌ์ด๋ฅผ ์๋ย ์ ์ ๋๋ค. ์ด ์ ํ๋ ์๋ชป ๊ทธ๋ฆฌ๋ฉด ์ค๊ณ๋๊ฐ ์์ ํ ๋ค๋ฅธ ์๋ฏธ๋ก ์ฝํ ์ ์์ฃ .
์ํคํ ํธ๋ผ๋ฉด ๋ฐ๋์ ๋ง์คํฐํด์ผ ํ UML์ 6๊ฐ์ง ์ , ์ง๊ธ ๋ฐ๋ก ์ ๋ฆฌํด ๋๋ฆฝ๋๋ค.
1. ์ค์ณ๊ฐ๋ ์ธ์ฐ๊ณผ ์ง์๋๋ ์ธ์ฐ: ์์กด vs ์ฐ๊ด
๊ฐ์ฅ ๋จผ์ ๊ตฌ๋ถํด์ผ ํ ๊ฒ์ “์ผ๋ง๋ ์ค๋ ์๊ณ ์ง๋ด๋๊ฐ”์ ๋๋ค.
โ ์์กด ๊ด๊ณ (Dependency)ย --->
- ํค์๋:ย “์ ๊น ๋น๋ ค ์ธ๊ฒ.”
- ํน์ง:ย ์ ์ ํ์ดํ๋ก ํ์ํฉ๋๋ค. ๋ฉ์๋ ๋ด์์ ๋งค๊ฐ๋ณ์๋ก ์ ๊น ์ฌ์ฉ๋๊ฑฐ๋ ์ง์ญ ๋ณ์๋ก ์์ฑ๋ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์์ ์ด ๋๋๋ฉด ๊ด๊ณ๋ ์ข ๋ฃ๋ฉ๋๋ค.
- ์์:ย
์๋ฆฌ์ฌ๊ฐย๋ ์ํผ๋ฅผ ์ฐธ์กฐํ๋ ๊ด๊ณ. ์๋ฆฌ๊ฐ ๋๋๋ฉด ๋ ์ํผ๋ ํ์ ์์ฃ .
โก ์ฐ๊ด ๊ด๊ณ (Association)ย โโโ>
- ํค์๋:ย “๋๋ฅผ ์๊ณ ์์ด.”
- ํน์ง:ย ์ค์ (๋๋ ์ค์ ํ์ดํ)์ผ๋ก ํ์ํฉ๋๋ค. ํด๋์ค์ ํ๋(๋ฉค๋ฒ ๋ณ์)๋ก ์ ์ง๋๋ ๊ด๊ณ์ ๋๋ค. ์ฆ, ๊ฐ์ฒด๊ฐ ์ด์์๋ ๋์ ์๋๋ฐฉ์ ๊ณ์ ์ธ์งํ๊ณ ์์ต๋๋ค.
- ์์:ย
์ฌ๋๊ณผย์ง. ์ฌ๋์ ์์ ์ด ์ฌ๋ ์ง์ ์ฃผ์๋ฅผ ํญ์ ๊ธฐ์ตํ๊ณ ์๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
2. ํฌํจ์ ๊น์ด๊ฐ ๋ค๋ฅด๋ค: ์งํฉ vs ํฉ์ฑ
“A๊ฐ B๋ฅผ ๊ฐ์ง๊ณ ์๋ค”๋ ์๋ฏธ์ Has-a ๊ด๊ณ์ ๋๋ค. ์ฌ๊ธฐ์ ํต์ฌ์ **”์ ์ฒด๊ฐ ์ฌ๋ผ์ง ๋ ๋ถ๋ถ๋ ์ฌ๋ผ์ง๋๊ฐ?”**์ ๋๋ค.
โข ์งํฉ ๊ด๊ณ (Aggregation) โโโโ
- ๋ชจ์:ย ๋น ๋ค์ด์๋ชฌ๋
- ์๋ฏธ:ย ๋์จํ ํฌํจ ๊ด๊ณ. ์ ์ฒด๊ฐ ์ฌ๋ผ์ ธ๋ ๋ถ๋ถ์ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ ์ ์์ต๋๋ค.
- ์์:ย
์ปดํจํฐ์ย๋ง์ฐ์ค. ์ปดํจํฐ๋ฅผ ๋ฒ๋ฆฐ๋ค๊ณ ๋ง์ฐ์ค๊น์ง ๋ฒ๋ฆฌ์ง ์์ฃ ? ๋ค๋ฅธ ์ปดํจํฐ์ ๊ฝ์ผ๋ฉด ๊ทธ๋ง์ด๋๊น์.
โฃ ํฉ์ฑ ๊ด๊ณ (Composition) โโโโ
- ๋ชจ์:ย ๊ฝ ์ฐฌ ๋ค์ด์๋ชฌ๋
- ์๋ฏธ:ย ๊ฐ๋ ฅํ ์ข ์ ๊ด๊ณ. ์ ์ฒด๊ฐ ์ฌ๋ผ์ง๋ฉด ๋ถ๋ถ๋ ์ด๋ช ์ ๊ฐ์ดํฉ๋๋ค. ์๋ช ์ฃผ๊ธฐ๋ฅผ ํจ๊ป ๊ณต์ ํฉ๋๋ค.
- ์์:ย
์ฌ๋๊ณผย์ฌ์ฅ. ์ฌ๋์ด ์กด์ฌํ์ง ์๋๋ฐ ์ฌ์ฅ๋ง ๋ฐ๋ก ๋์๊ฐ๊ฒ ํ ์๋ ์๋ ๋ฒ์ ๋๋ค. (๊ฐ์ฅ ๊ฐ๋ ฅํ ๊ฒฐํฉ๋!)
3. ํด๋์ค์ ๊ณ๊ธ์ฅ: ์ผ๋ฐํ vs ์ค์ฒดํ
๊ฐ์ฒด์งํฅ์ ๊ฝ, ์์๊ณผ ์ธํฐํ์ด์ค ๊ตฌํ์ ๋ํ๋ ๋๋ค. ๋ ๋ค ๋์ด **’๋น ์ผ๊ฐํ’**์ด๋ผ๋ ๊ณตํต์ ์ด ์์ต๋๋ค.
โค ์ผ๋ฐํ ๊ด๊ณ (Generalization) โโโโท
- ํค์๋:ย “์์(Inheritance)”
- ํน์ง:ย ์ค์ ํ์ดํ. ๋ถ๋ชจ ํด๋์ค์ ๋ชจ๋ ์์ฑ์ ๋ฌผ๋ ค๋ฐ๋ย Is-a ๊ด๊ณ์ ๋๋ค.
- ์์:ย
ํฌ์ ๋ฅย –ย๊ณ ์์ด. ๊ณ ์์ด๋ ํฌ์ ๋ฅ์ ์ผ์ข ์ ๋๋ค.
โฅ ์ค์ฒดํ ๊ด๊ณ (Realization) ---โท
- ํค์๋:ย “์ธํฐํ์ด์ค ๊ตฌํ(Implementation)”
- ํน์ง:ย ์ ์ ํ์ดํ. ์ค๊ณ๋(์ธํฐํ์ด์ค)๋ง ์๊ณ ๋ด์ฉ์ด ์๋ ๊ฒ์ ์ค์ ๋ก ๋์ํ๊ฒ ๋ง๋๋ ๊ด๊ณ์ ๋๋ค.
- ์์:ย
์ด๋์๋จ(์ธํฐํ์ด์ค)ย –ย์๋์ฐจ. ‘์์ง์ด๋ค’๋ผ๋ ๋ช ์ธ(Spec)๋ฅผ ์๋์ฐจ๊ฐ ์ค์ ๋ก ๊ตฌํํด๋ ๋๋ค.
๐ก ํ๋์ ๋ณด๋ ์์ฝ ๊ฐ์ด๋

| ์ข ๋ฅ | ๋ชจ์ | ์๋ฏธ (๊ฒฐํฉ๋) | ์ค๋ฌด/์ฝ๋ ์ ์ฉ ์์ |
| ์์กด (Dependency) | ---> | ํ์์ ์ฐธ์กฐ (๋ฎ์) | ๊ฒฐ์ ์๋น์ค๊ฐ ํ ์ธ ๊ณ์ฐ๊ธฐ๋ฅผ ๋ฉ์๋ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๊ณ์ฐ๋ง ํ๊ณ ๋๋ผ ๋ |
| ์ฐ๊ด (Association) | โโโ> | ์ง์์ ์ธ์ง (๋ณดํต) | ์ฌ์ฉ์(User) ํด๋์ค๊ฐ ๋ฉค๋ฒ ๋ณ์๋ก ํ๋กํ(Profile) ์ ๋ณด๋ฅผ ๊ณ์ ๋ค๊ณ ์์ ๋ |
| ์งํฉ (Aggregation) | โโโโ | ๋ ๋ฆฝ์ ํฌํจ (๋์) | ๋์๊ด์ ์ฑ ์ด ์๋ ๊ด๊ณ (๋์๊ด์ด ํ์๋์ด๋ ์ฑ ์ ์ค๊ณ ์์ ์ผ๋ก ๊ฐ ์ ์์) |
| ํฉ์ฑ (Composition) | โโโโ | ์ข ์์ ํฌํจ (๋งค์ฐ ๋์) | ๋ฌธ์(Document)์ย ํ์ด์ง(Page)ย ๊ด๊ณ (๋ฌธ์ ํ์ผ์ด ์ญ์ ๋๋ฉด ๊ทธ ์์ ํ์ด์ง๋ ์ญ์ ๋จ) |
| ์ผ๋ฐํ (Generalization) | โโโโท | ์์ (Is-a) | ํฌ์ ๋ฅ ํด๋์ค๋ฅผ ์์๋ฐ์ ๊ณ ์์ด, ์ฌ์ ํด๋์ค๋ฅผ ๋ง๋ค ๋ |
| ์ค์ฒดํ (Realization) | | ์ธํฐํ์ด์ค ๊ตฌํ | ์ถ๋ ฅ๊ฐ๋ฅํ(IPrintable) ์ธํฐํ์ด์ค๋ฅผ ์์์ฆ, ๋ฆฌํฌํธ ํด๋์ค๊ฐ ์ค์ ๊ตฌํํ ๋ |
๐ก UML ์ (Relationships) ๋ํ ํ๋ง๋
์ค๊ณ๋๋ฅผ ๊ทธ๋ฆด ๋ ์ด๋ค ์ ์ ์ธ์ง ๊ณ ๋ฏผ๋๋ค๋ฉด, “์ด ๊ฐ์ฒด๊ฐ ์ฌ๋ผ์ง ๋ ์ฐ๊ฒฐ๋ ์ ๊ฐ์ฒด๋ ์ด๋ป๊ฒ ๋ ๊น?”๋ฅผ ๋จผ์ ์๋ฌธํด ๋ณด์ธ์. ์ ํ๋๊ฐ ์ฌ๋ฌ๋ถ์ ์ฝ๋์ ์ ์ฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๊ฒฐ์ ํฉ๋๋ค.
โจ ์ค๊ณ ํ: ๊ฒฐํฉ๋ ๊ด๋ฆฌํ๊ธฐ
์ํคํ
์ฒ ์ค๊ณ ์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ฒฐํฉ๋(Coupling)๋ฅผ ๋ฎ์ถ๋ ๊ฒ์
๋๋ค.
ย “Low Coupling, High Cohesion(์์ง๋๋ ๋์ด๊ณ , ๊ฒฐํฉ๋๋ ๋ฎ์ถฐ๋ผ!)”
- ๊ฐ๋ฅํ๋ฉดย ํฉ์ฑ(Composition)ย ๋ณด๋ค๋ ์งํฉ(Aggregation)์ ๊ณ ๋ คํ๊ณ ,
- ์ฐ๊ด(Association)๋ณด๋ค๋ ์์กด(Dependency)์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฐ์ ๋์ ๋์จํ๊ฒ ์ ์งํ์ธ์.
- “์์๋ณด๋ค๋ ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ผ(Favor composition over inheritance)”๋ ๊ฒฉ์ธ์ฒ๋ผ, ์ผ๋ฐํ(Generalization)๋ ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค.

๋ต๊ธ ๋จ๊ธฐ๊ธฐ