๐Ÿ›๏ธ UML์˜ ํ•ต์‹ฌ์€ ‘๋„ํ˜•’์ด ์•„๋‹ˆ๋ผ ‘์„ ’์ด๋‹ค: ๊ด€๊ณ„(Relationships) ์ด์ •๋ฆฌ

์•ˆ๋…•ํ•˜์„ธ์š”! ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์˜ ์ง€๋„๋ผ ํ•  ์ˆ˜ ์žˆ๋Š” 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(์‘์ง‘๋„๋Š” ๋†’์ด๊ณ , ๊ฒฐํ•ฉ๋„๋Š” ๋‚ฎ์ถฐ๋ผ!)”

  1. ๊ฐ€๋Šฅํ•˜๋ฉดย ํ•ฉ์„ฑ(Composition)ย ๋ณด๋‹ค๋Š” ์ง‘ํ•ฉ(Aggregation)์„ ๊ณ ๋ คํ•˜๊ณ ,
  2. ์—ฐ๊ด€(Association)๋ณด๋‹ค๋Š” ์˜์กด(Dependency)์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด ๊ฐ„์˜ ๋ˆ์„ ๋А์Šจํ•˜๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”.
  3. “์ƒ์†๋ณด๋‹ค๋Š” ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ผ(Favor composition over inheritance)”๋Š” ๊ฒฉ์–ธ์ฒ˜๋Ÿผ, ์ผ๋ฐ˜ํ™”(Generalization)๋Š” ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ต๊ธ€ ๋‚จ๊ธฐ๊ธฐ

์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ํ•„๋“œ๋Š” *๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค