๐ Unified Modeling Language, ์ํํธ์จ์ด ์ํคํ ์ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ๋ณต์กํ ์์คํ ์ ์๊ฐํํ๊ณ ๊ตฌ์ฑ ์์์ ๊ด๊ณ, ํน์ง, ๋์์ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ๊ตฌํํ๋ ํ์คํ๋ ๋ฐฉ๋ฒ
์์
- ๋ช
์ฌ ์ค ์ผ๋ถ๋ฅผ Class๋ก ๋ฝ์๋ด๊ธฐ
- ์ถ๊ฐ์ ์ธ ํน์ฑ์ ๊ฐ์ง์ง ์๊ฑฐ๋, ๊ด๊ณ์ Role์ ๋ช ์ํ ๊ฒ ์ ์ธ
- ๋จ์ ๋ช ์ฌ, ํ์ฉ์ฌ๋ฅผ Attribute๋ก ๋ฃ์ด์ฃผ๊ธฐ
- ๋์ฌ๋ Operation์ผ๋ก ๋ฃ์ด์ฃผ๊ธฐ
- ์ ์ฝ ์ฌํญ์ ํตํด Class ๊ฐ Relationship ์ฐ๊ฒฐ
๋ฌธ๋ฒ
Class Diagram

- Name: PascalCase
- Attribute:
[ + | - | # ] ํ๋๋ช : ํ์- Access Modifier:
+(Public),-(Private),#(Protected)
- Access Modifier:
- OP:
[ + | - | # ] ๋ฉ์๋๋ช (ํ๋ผ๋ฏธํฐ1: ํ์ 1, ...): ๋ฆฌํดํ์ - Static (Class variable/OP): ๋ฐ์ค
- Abstract Class (์ถ์ ํด๋์ค)
- Class: ํด๋์ค๋ช
์์
<<abstract>>Stereotype, ๊ธฐ์ธ์์ฒด, ํด๋์ค๋ช ์/์๋์{ abstract }Property - OP: ๋ฆฌํด ํ์
๋ค์
{ abstract }, ๊ธฐ์ธ์์ฒด
- Class: ํด๋์ค๋ช
์์
- Interface
๐ Public Abstract OPs์ ๋ชจ์์ ์ด๋ฆ์ ๋ถ์ธ ๊ฒ- Provided Interface: ๋๊ตฐ๊ฐ์ ์ํด ๊ตฌํ์ ์ ๊ณต๋ฐ๋ Interface

๐Observer- Ball (Lollipop) Symbol
- ์ธํฐํ์ด์ค๋ช
์์
<<interface>>Stereotype- ๊ตฌํ์ ์ ๊ณตํ๋ ํด๋์ค๋ก๋ถํฐ Implements Arrow๋ก ์ฐ๊ฒฐ๋ ์ ์์ (๐
TimerObserver)
- ๊ตฌํ์ ์ ๊ณตํ๋ ํด๋์ค๋ก๋ถํฐ Implements Arrow๋ก ์ฐ๊ฒฐ๋ ์ ์์ (๐
- Required Interface: Provided Interface์ ๋ํ Dependency๋ฅผ ๊ฐ๋, ์ฆ ์ ์ ๋์์ ์ํด์๋ Provided Interface์ ๊ตฌํ์ด ์๊ตฌ๋๋ Class

๐Timer- Socket Symbol
- Provided Interface (Ball Symbol,
<<interface>>Stereotype์ด ๋ถ์ ์ธํฐํ์ด์ค) ์ ๋ํ Dependency Arrow
- Provided Interface: ๋๊ตฐ๊ฐ์ ์ํด ๊ตฌํ์ ์ ๊ณต๋ฐ๋ Interface
Object Diagram

- ์ด๋ฆ์ ๋ฐ์ค ์์ ๊ฒฝ์ฐ, ํด๋์ค๋ช
์ด ์๋ ๊ฐ์ฒด๋ช
= โญํน์ ์๊ฐ์ Snapshot
- ํ์ ์ด ์๋ ์๋ก ๋ค๋ฅธ ๊ฐ์ ๊ฐ๊ฒ ๋จ
- Name: camelCase
โ Class Diagram, PascalCase- ํด๋์ค๋ช
์ ๋ช
์ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
objectName:ClassName - ๊ฐ์ฒด๋ช
์ ์๋ตํ๊ณ ์ถ์ ๊ฒฝ์ฐ (= ๋ฌด๋ช
๊ฐ์ฒด)
:ClassName
- ํด๋์ค๋ช
์ ๋ช
์ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
- Attribute:
ํ๋๋ช = ๊ฐ
โ Class Diagram,[ + | - | # ] ํ๋๋ช : ํ์
Relationship (์ฐ๊ด์ฑ)
๐ ์๋ก ๋ค๋ฅธ ๋ ๊ฐ ์ด์์ ๊ฐ์ฒด(ํด๋์ค)๊ฐ ์ํธ ์ฐธ์กฐํ๋ ๊ด๊ณ

- โญ ํ์ดํ Tail(= Source) ์ชฝ์์ Head(= Target)์ ์ ๋ณด ์ ์ ์์
= Source๊ฐ Target์ ์ ๋ณด๋ฅผ ์๊ณ ์์
= Target์ด Source์๊ฒ ์ ๋ณด๋ฅผ ์ค- Change Propagation (์ ํ): Target์ด ๋ณํ๋ฉด Source๋ ์ํฅ ๋ฐ์ (๊ฐ๋ฆฌ์ผ์ง๊ณ ์๋ ๊ฒ ๋ณํ๋ฉด ๊ฐ๋ฆฌํค๋ ์ชฝ๋ ํจ๊ป ๋ณํด์ผ ํจ) โก Data Abstraction, Encapsulation (์บก์ํ), Information Hiding (์ ๋ณด ์๋)์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅ
| Default | |||||||
|---|---|---|---|---|---|---|---|
| ๐ฝ | Dependency | Association | (Shared) Aggregation | Composition (ํฉ์ฑ) | Realization (Implementation) | Inheritance (์์) (Generalization, Specification) | ๐ผ |
| โ- | <โโ | ์ ์ฒด โ- ๋ถ๋ถ | ์ ์ฒด โ- ๋ถ๋ถ | ์ธํฐํ์ด์ค โ--- ๊ตฌํ | ๋ถ๋ชจ โโโ ์์ | ||
| ์์กด | ์ฐ๊ด | ์งํฉ | ํฉ์ฑ, ํฌํจ | ์ค์ฒดํ | ์ผ๋ฐํ, ํน์ํ | ||
| ํ์ ์๊ฐ | ์งง์ (์ผ์์ Binding) | ์ง์ | ์ง์ | ์ง์ | ์์ | ์์ | |
| ๊ตฌํ | ํ๋ผ๋ฏธํฐ, ๋ฆฌํด ํ์ (๋ฉ์๋ ๋ด์์๋ง ์ฌ์ฉ) | ๋ฉค๋ฒ ๋ณ์ | ๋ฉค๋ฒ ๋ณ์ | ๋ฉค๋ฒ ๋ณ์ | |||
| ๊ฒฐ์ ์์ | ๋ฐํ์ | ๋ฐํ์ | ๋ฐํ์ | ๋ฐํ์ | ์ปดํ์ผ ํ์ | ์ปดํ์ผ ํ์ | |
| ๊ด๊ณ | ๋๋ฑ, ๋ ๋ฆฝ | IS-MEMBER-OF, ๋๋ฑ, ๋ ๋ฆฝ | IS-PART-OF, ๋ ๋ฆฝ | HAS-A, ์์กด | IS-A, ์์กด |
- Association (์ฐ๊ด) โ Aggregation โ Shared Aggregation, Composition
Dependency (์์กด)
๐ ํ Class์ ์์์ ๋ค๋ฅธ Class๊ฐ ํ๋ผ๋ฏธํฐ, ๋ฆฌํด ํ์ , ๋ฉ์๋ ๋ด์์๋ง ์ฌ์ฉ ๋ฑ์ผ๋ก ์ ๊น Binding๋์ด ์ฐ์ด๋ ๊ด๊ณ
- โ-
- (๋ณดํต ์๋ต)
<<use>>Stereotype
- (๋ณดํต ์๋ต)
Association (์ฐ๊ด)
๐ ํ Class๊ฐ ๋ค๋ฅธ Class์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ฉค๋ฒ ๋ณ์๋ก ๊ฐ๋ ๊ด๊ณ

- ์ค์ < ํ์ดํ
- Navigability:
[ < | > | X | ], ์๋ Instance์ ๋ํ ์ฐธ์กฐ ์กด์ฌํ๋์ง ์ฌ๋ถ, Tail์์ Head์ ์ ๋ณด ์ ๊ทผ ๊ฐ๋ฅ- ์ฐธ์กฐ๋ฅผ ํตํด Visibleํ ๋ฉค๋ฒ์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- ์์ชฝ ํ์ดํ ๋ช
์ํ์ง ์์ ๊ฒ๋ ์ ๋ณด (= ์ ๋ณด ์์์ ์๋์ ์ผ๋ก ํํํ ๊ฒ), but ๊ดํ์ ์ผ๋ก๋ ์๋ฐฉํฅ ํ์ดํ์ ๋์ผ
โ ํ์ชฝ ํ์ดํ๋ง ์กด์ฌ, ๊ดํ์ ์ผ๋ก ์๋ ์ชฝ์ X๋ก ํด์ - ์์ธ ์ค๊ณ๋ผ๋ฉด ๊ฐ๋ฅํ ์ ํํ ์ ๋ณด ์ฃผ์์ ๊ฒ (์ฆ, ์์ฑ๋์ง ์์์ ํ๋ฅ ๋์), ๋ถ์ ๋จ๊ณ์์๋ Association ์ ๋ฌด๋ง ๊ณ ๋ คํด๋ ๋จ
- Association Name: ๋์ฌ, ๊ด๊ณ๊ฐ ์๊ธด ์ด์ (์กด์ฌ/ํ๋)
- Reading Direction:
[ โ | โถ | ], ํด์ ๋ฐฉํฅ, ์์ ๋ฐฉํฅ์ด ์ฃผ์ด
- Reading Direction:
- Multiplicity:
[ n | n..m | n, m, ... | ], ํน์ Snapshot์์ ๋ฐ๋ํธ์ Instance ํ ๊ฐ์ ๋์๋๋ Instance๊ฐ ๋์์ ์ต๋ ๋ช ๊ฐ ์ฐ๊ฒฐ๋ ์ ์๋์ง - Role: ๋ช
์ฌ, ํด๋น Class/Object๊ฐ ์ด๋ ํ ์๊ฒฉ์ผ๋ก ํด๋น Relationship์ ์ํ๋์ง
= ์ฐธ์กฐ ๋ณ์์ ์ด๋ฆ
- Access Modifier:
[ + | - | # | ] - Unary Association์์๋ ํ์ (ํนํ, 1:ๅค์ผ ๋)
- Class Diagram๋ง์ผ๋ก๋ ์ ํํ๊ฒ ํํ ๋ถ๊ฐ, ์ฃผ์ ํ์ (๐ ์์ ๊ณผ์ ๊ฒฐํผ๋ ํ์ฉ๋จ)
- Access Modifier:
- Navigability:
Association Class
๐ Association์ Attribute๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
- ๅค:ๅค ๊ด๊ณ์ผ ๋ ํ์, ์๋ ๋๋ ๊ทธ๋ฅ ๅค์ชฝ์ Attribute ์ถ๊ฐํด์ฃผ๋ฉด ๋จ
- Association ์ค์ ์ ์ ์ ์ผ๋ก ์ฐ๊ฒฐ
- Default = Link/Relationship ์ค๋ณต ๋ถ๊ฐ
= ํ ์กฐํฉ์ ํ๋์ Link/Relationship๋ง ์์ฑ
โ ์ค๋ณต ํ์ฉ:{ non-unique }Property

Qualified Association
๐ ๅค์ชฝ์ ์์ฑ ์ค, ๅค์ชฝ์ Object๋ฅผ ๋จ ํ๋๋ก ํ์ ์ง์ ์ ์๋ Qualifier๋ฅผ ๋ฐ๋์ชฝ์ ๋ช
์ํ๋ ๊ฒ

- Qualifier (ํ์ ์ฌ): ๅค์ชฝ์ Uniqueํ Attribute ์ค ํ๋, ๊ฐ Instance ์ง์นญ ๊ฐ๋ฅ
- โค๏ธ ๋ถ๊ฐ ์ ๋ณด ์ ๊ณต
(Shared) Aggregation (์งํฉ)
๐ Association์ ์ผ์ข , IS-PART-OF Relationship์ ๊ฐ์ง๋ ํน์ ๊ฒฝ์ฐ
- ์ ์ฒด โ- ๋ถ๋ถ (Hollow Diamond)
IS-PART-OF Relationship
๐ ๋ถ๋ถ์ด ์ ์ฒด์ ๋
๋ฆฝ์ ์ธ ๊ด๊ณ, ํ ์ชฝ์ ๋ถํ ๊ด๊ณ
= ์ ์ฒด๊ฐ ์์ด์ง๋๋ผ๋, ๋ถ๋ถ์ด ๋
๋ฆฝ์ ์ผ๋ก ์กด์ฌ ๊ฐ๋ฅ
- ํ ๋ถ๋ถ์ด
0..*๊ฐ์ ์ ์ฒด์ ์ํ ์ ์์
โ Composition (ํฉ์ฑ, ํฌํจ),0..1 - ๐ ์ ๊ณต(์ ์ฒด) โ- ๊ณผ๋ชฉ(๋ถ๋ถ), ์์
โ- ํ์, ์ปดํจํฐ โ- ํค๋ณด๋, ๋ชจ๋ํฐ, ํ๋ฆฐํฐโฆ
- ์ ๊ณต์ด ์์ด์ง๋๋ผ๋ ๊ณผ๋ชฉ ๋จ์์์ ์๋
- ์์ ์์ด์ง๋ค๊ณ ํ์์ด ๋ง ์ฌ๋ผ์ง์ง๋ ์์
- ์ปดํจํฐ๊ฐ ์ฌ๋ผ์ง๋ค๊ณ ํด๋, ํค๋ณด๋๋ ๋ชจ๋ํฐ, ํ๋ฆฐํฐ๋ ๋ค๋ฅธ ์์คํ ์์๋ ์ฌ์ฉ ๋ฐ ๊ณต์ ๊ฐ๋ฅ
- Transitive (์ดํ์ ):
B is-part-of A&&C is-part-of BโC is-part-of A - Asymmetric:
B is-part-of A&&A is-part-of B๋ ํญ์False
= ๋์์ ์๋ก์ PART๊ฐ ๋ ์๋ ์์
โก Directed Acyclic Graph, Deque
Composition (ํฉ์ฑ, ํฌํจ)
๐ Aggregation ์ค, HAS-A Relationship์ ๊ฐ์ง๋ ๊ด๊ณ
= Composition (ํฉ์ฑ)
- ์ ์ฒด โ- ๋ถ๋ถ (Solid Diamond)
HAS-A Relationship
= HAS-A Relationship
๐ ๋ถ๋ถ์ด ์ ์ฒด์ ์์กดํ๋ ๊ด๊ณ
= ๋ถ๋ถ์ ์๋ช
์ด ์ ์ฒด์ ์์กด
- โญ ํ ๋ถ๋ถ์ ๋ฌด์กฐ๊ฑด
0..1๊ฐ์ ์ ์ฒด์ ์ํจ- Aggregation์์ ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ๋จ, ๋ ๊ฐํ ๊ฒฐํฉ
- ๐ ๊ฑด๋ฌผ โ- ๊ฐ์์ค โ- ๋น ํ๋ก์ ํฐ, ๋๋ฌด โ- ๋๋ญ๊ฐ์ง, ์๋์ฐจ โ- ํ์ด์ด
- ๊ฑด๋ฌผ์ ๋ถ์๋ฉด ๋น์ฐํ ๊ฐ์์ค๋ ์ฌ๋ผ์ง ๊ฒ
- ๋๋ฌด๊ฐ ์ฌ๋ผ์ง๋ฉด ๋๋ญ๊ฐ์ง๋ ์ฌ๋ผ์ง
- ์๋์ฐจ์ ํ์ด์ด ๊ฐ์ ๋ชจ๋ธ๋ง
- ์ด๋ Aggregation์ผ๋ก๋ ๋ชจ๋ธ๋ง ๊ฐ๋ฅ, ์๋/๊ฐ์ ํ๊ณ ์ถ์ ์ํฉ ์ดํด๋ณด๊ณ ์ ํ
- ๋ถ๋ถ์ด ์ ์ฒด์ Lifetime์ ์์กด โก ์ ์ฒด๊ฐ ์๋ฉธํ๋ฉด ๋ถ๋ถ๋ ์๋ฉธ
โ Aggregation, ๋ถ๋ถ์ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌ ๊ฐ๋ฅ, ์ ์ฒด์ ๋ณ๊ฐ์ Lifetime ๊ฐ์ง - ํ ๋ถ๋ถ์
0..1๊ฐ์ ์ ์ฒด์ ์ํด์ผ ํจ
โ Aggregation, ํ ๋ถ๋ถ์ด ์ฌ๋ฌ ์ ์ฒด์ ๋์์ ์ํ ์ ์์
Realization (์ค์ฒดํ)
= Implementation
- ์ธํฐํ์ด์ค โ--- ๊ตฌํ
Generalization (์ผ๋ฐํ)
= Inheritance (์์)
= Generalization
- ๋ถ๋ชจ โโโ ์์
- ๋ค์ค ์์ ํ์ฉ