
๋ชจ๋ธ๋ง (Modeling)
๐ก ๋ชจ๋ธ์ ์ญํ
๋ชจ๋ธ๋ง์ ํ์ค ์ธ๊ณ์ ์์คํ
์ ์ดํดํ๊ณ , ์ด๋ฅผ ํํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ถ์ํ(Abstraction) ๊ณผ์ ์ด๋ค.
์ฆ, ๋ณต์กํ ํ์ค์ ๋จ์ํํ์ฌ ํํํจ์ผ๋ก์จ ์์คํ
์ ๊ตฌ์กฐ์ ๋์์ ๋ช
ํํ ํ์
ํ ์ ์๋ค.
- ์๋ก์ ํด์์ ๊ณต์ ํด ํฉ์๋ฅผ ์ด๋ฃจ๊ฑฐ๋ ํด์์ ํ๋น์ฑ์ ๊ฒํ
- ํ์ System or ์ถํ ๊ฐ๋ฐํ System์ ์ํ๋ ๋ชจ์ต์ ๊ฐ์ํ
- System์ ๊ตฌ์กฐ + ํ์ ๋ช ์ธ (ํ ์ ๊ณต)
- ์ถ์ํ(๊ด๋ จ์ด ์๋ ์ ๋ถ๊ฐ, ๊ด๋ จ ์๋ ๊ฒ ๋ฌด์)์ ๋ฐํ์ ๋๊ณ ์๋ค.
๋ชจ๋ธ์ ์ฃผ์ ์ญํ
- ํด์์ ๊ณต์ ์ ํฉ์
- ๊ฐ๋ฐ์, ๊ธฐํ์, ๋์์ด๋ ๋ฑ ์ดํด๊ด๊ณ์๋ค์ด ๋์ผํ ๊ด์ ์์ ์์คํ ์ ๋ฐ๋ผ๋ณผ ์ ์๊ฒ ํ๋ค.
- ์์คํ
์ ๊ฐ์ํ
- ํ์ฌ ๋๋ ๋ฏธ๋์ ์์คํ ๊ตฌ์กฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ์ฌ ์ดํด๋ฅผ ๋๋๋ค.
- ๋ช
์ธํ(Specification)
- ์์คํ ์ ๊ตฌ์กฐ ๋ฐ ํ์๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ๊ธฐ์ ํ๋ค.
- ๊ตฌ์ถ์ ํ ์ ๊ณต
- ๋ชจ๋ธ์ ์์คํ ์ ์ค์ ๋ก ๊ตฌํํ๊ธฐ ์ํ ์ฒญ์ฌ์ง(์ค๊ณ๋) ์ญํ ์ ํ๋ค.
๐น ์์ฝ: ๋ชจ๋ธ์ ‘ํ์ค์ ๋ณต์ก์ฑ์ ๋จ์ํํ ํํ’์ด๋ฉฐ, ์์คํ ๊ฐ๋ฐ์ ๊ณตํต ์ธ์ด๋ค.
UML ๋ค์ด์ด๊ทธ๋จ
๋ํ์ ์ธ ์์คํ ๋ชจ๋ธ๋ง ์ธ์ด
UML (Unified Modeling Language)
UML์ด๋?
- UML์ ๊ฐ์ฒด์งํฅ ์์คํ ์ ์๊ฐํํ๊ณ ๋ช ์ธํํ๊ธฐ ์ํ ํ์คํ๋ ๋ชจ๋ธ๋ง ์ธ์ด์ด๋ค.
- 1990๋ ๋์ Grady Booch, James Rumbaugh, Ivar Jacobson์ด ๊ฐ๊ฐ์ ๋ฐฉ๋ฒ๋ก (OOAD, OMT, OOSE)์ ํตํฉํ์ฌ ๋ง๋ค์๋ค.
- ํ์ฌ๋ UML 2.5๊ฐ ๋ํ์ ์ธ ํ์ค์ด๋ค.
UML์ ๋ชฉ์
- ์์คํ ์ ๊ตฌ์กฐ์ ํ์๋ฅผ ์๊ฐ์ ์ผ๋ก ํํ
- ๊ฐ์ฒด ๊ฐ ๊ด๊ณ ๋ฐ ์ํธ์์ฉ์ ๋ช ํํ ์ ์
- ๊ฐ๋ฐ์ ๊ฐ์ ์์ฌ์ํต ๋๊ตฌ๋ก ํ์ฉ
UML ๋ค์ด์ด๊ทธ๋จ์ ์ข ๋ฅ
| ๋ถ๋ฅ | ๋ค์ด์ด๊ทธ๋จ ์ ํ | ๋ชฉ์ |
| ๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ (structure diagram) |
ํด๋์ค ๋ค์ด์ด๊ทธ๋จ (class diagram) | ์์คํ ์ ๊ตฌ์ฑํ๋ ํด๋์ค๋ค ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํํํ๋ค. |
| ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ (object diagram) | ๊ฐ์ฒด ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋ค. | |
| ๋ณตํฉ์ฒด ๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ (composite structure diagram) | ๋ณตํฉ ๊ตฌ์กฐ์ ํด๋์ค์ ์ปดํฌ๋ํธ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ํํํ๋ค. | |
| ๋ฐฐ์น ๋ค์ด์ด๊ทธ๋จ (deployment diagram) | ์ํํธ์จ์ด, ํ๋์จ์ด, ๋คํธ์ํฌ๋ฅผ ํฌํจํ ์คํ ์์คํ ์ ๋ฌผ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํํํ๋ค. | |
| ์ปดํฌ๋ํธ ๋ค์ด์ด๊ทธ๋จ (component diagram) | ์ปดํฌ๋ํธ ๊ตฌ์กฐ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํํํ๋ค. | |
| ํจํค์ง ๋ค์ด์ด๊ทธ๋จ (package diagram) | ํด๋์ค๋ ์ ์ฆ ์ผ์ด์ค ๋ฑ์ ํฌํจํ ์ฌ๋ฌ ๋ชจ๋ธ ์์๋ฅผ ๊ทธ๋ฃนํํด ํจํค์ง๋ฅผ ๊ตฌ์ฑํ๊ณ , ํจํค์ง๋ค ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํํํ๋ค. | |
| ํ์ ๋ค์ด์ด๊ทธ๋จ (behavior diagram) |
ํ๋ ๋ค์ด์ด๊ทธ๋จ (activity diagram) | ์ ๋ฌด ์ฒ๋ฆฌ ๊ณผ์ ์ด๋ ์ฐ์ฐ์ด ์ํ๋๋ ๊ณผ์ ์ ํํํ๋ค. |
| ์ํ ๋จธ์ ๋ค์ด์ด๊ทธ๋จ (state machine diagram) | ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ํํํ๋ค. | |
| ์ ์ฆ ์ผ์ด์ค ๋ค์ด์ด๊ทธ๋จ (use case diagram) | ์ฌ์ฉ์ ๊ด์ ์์ ์์คํ ํ์๋ฅผ ํํํ๋ค. | |
| ์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ - ์์ฐจ ๋ค์ด์ด๊ทธ๋จ (interaction diagram - sequence diagram) | ์๊ฐ ํ๋ฆ์ ๋ฐ๋ฅธ ๊ฐ์ฒด ์ฌ์ด์ ์ํธ์์ฉ์ ํํํ๋ค. | |
| ์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ - ์ํธ์์ฉ ๊ฐ์ ๋ค์ด์ด๊ทธ๋จ (interaction diagram - interaction overview diagram) | ์ฌ๋ฌ ์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ ์ฌ์ด์ ์ ์ด ํ๋ฆ์ ํํํ๋ค. | |
| ์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ - ํต์ ๋ค์ด์ด๊ทธ๋จ (interaction diagram - communication diagram) | ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ค์ฌ์ผ๋ก ์ํธ์์ฉ์ ํํํ๋ค. | |
| ์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ - ํ์ด๋ฐ ๋ค์ด์ด๊ทธ๋จ (interaction diagram - timing diagram) | ๊ฐ์ฒด ์ํ ๋ณํ์ ์๊ฐ ์ ์ฝ์ ๋ช ์์ ์ผ๋ก ํํํ๋ค. |
ํด๋์ค ๋ค์ด์ด๊ทธ๋จ (Class Diagram)
์ ์
ํด๋์ค ๋ค์ด์ด๊ทธ๋จ์ ์์คํ
์ ์ ์ ์ธ ๊ตฌ์กฐ(Static Structure)๋ฅผ ํํํ๋ ๋ค์ด์ด๊ทธ๋จ์ด๋ค.
์ฆ, ์์คํ
์ ๊ตฌ์ฑํ๋ ํด๋์ค, ๊ทธ ์์ฑ, ์ฐ์ฐ(๋ฉ์๋), ๊ทธ๋ฆฌ๊ณ ํด๋์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.
๐ง ์ ์ ๊ตฌ์กฐ๋?
์๊ฐ์ ๋ฐ๋ผ ๋ณํ์ง ์๋ ์์คํ ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์์ ๊ทธ ๊ด๊ณ๋ฅผ ์๋ฏธํ๋ค.
- System์ "์ ์ "์ธ ๊ตฌ์กฐ ํํ
- ์๊ฐ์ ๋ฐ๋ผ ๋ณํ์ง ์๋๋ค
- Class์ ๊ทธ๋ค ๊ฐ์ ๊ด๊ณ ํํ
| โป Class 1) ๋์ผ ์์ฑ์ ๊ฐ์ง๊ณ ๋์ผ ํ์๋ฅผ ์ํํ๋ object์ ์งํฉ 2) object๋ฅผ ์์ฑํ๋ ์ค๊ณ๋ |
ํด๋์ค์ ๊ฐ๋
- ๋์ผํ ์์ฑ๊ณผ ํ์๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ค์ ์งํฉ
- ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ค๊ณ๋(Blueprint) ์ญํ ์ ํ๋ค.
UML์์์ ํด๋์ค ํํ
UML์์๋ ํด๋์ค๋ฅผ ๋ค์๊ณผ ๊ฐ์ 3๊ตฌ์ญ ๋ฐ์ค(Box)๋ก ํํํ๋ค.
| ๊ฐ์ฅ ์ ๋ถ๋ถ(์๋จ) | ํด๋์ค ์ด๋ฆ (Class Name) |
ํ์ | |
| ์ค๊ฐ ๋ถ๋ถ (์ค๋จ) |
์์ฑ (๋ณ์, ๋ฐ์ดํฐ) (Attributes) |
- ์ด๋ฆ - ์ ๊ณต - ํ๋ฒ - ๊ณผ๋ชฉ |
์์ฑ์ ๊ทธ ๊ฐ์ฒด๋ง๋ค ํน์ ๊ฐ์ ๊ฐ๊ณ ์๋ค. - type : string, integer, float, Boolean - operation์ signature |
| ๋ง์ง๋ง ๋ถ๋ถ (ํ๋จ) |
์ฐ์ฐ (๋ฉ์๋, ๊ธฐ๋ฅ) (Operations) |
+์๊ฐํ๋ค() |
์ ๊ทผ ์ ์ด์ : public, private, protected, package
์ค์ฉ์ ์ผ๋ก ํด๋์ค ํ๊ธฐํ๋ ๋ฒ
: ์ค์ ๋ก๋ ์์ฑ๊ณผ operation์ ๋ชจ๋ ์ ์ง ์์๋ ์๊ด ์๋ค.
์์ :
โโโโโโโโโโโโโโโโโโโโโโโ
โ Student โ
โโโโโโโโโโโโโโโโโโโโโโโค
โ -name : String โ
โ -studentId : int โ
โโโโโโโโโโโโโโโโโโโโโโโค
โ +registerCourse() โ
โ +viewGrades() โ
โโโโโโโโโโโโโโโโโโโโโโโ
์ ๊ทผ์ ์ด์ ํ๊ธฐ๋ฒ
| + | public (๊ณต๊ฐ) |
| - | private (๋น๊ณต๊ฐ) |
| # | protected (์์ ํ์ฉ) |
์ค์ UML ๋ค์ด์ด๊ทธ๋จ์์๋ ๋ชจ๋ ์์ฑ๊ณผ ์ฐ์ฐ์ ๋ช ์ํ์ง ์์๋ ๋๋ค.
์์คํ ์ดํด์ ํ์ํ ํต์ฌ ์ ๋ณด๋ง ํํํด๋ ์ถฉ๋ถํ๋ค.
ํด๋์ค ๊ฐ ๊ด๊ณ (Relationships)
๊ฐ์ฒด์งํฅ ์์คํ
์ ๋จ์ผ ํด๋์ค๊ฐ ์๋, ์ฌ๋ฌ ํด๋์ค๊ฐ ์ํธ์์ฉํ์ฌ ๋์ํ๋ค.
๋ฐ๋ผ์ ํด๋์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ํํํ๋ ๊ฒ์ด ์ค์ํ๋ค.
๊ฐ์ฒด์งํฅ system์ ์ํธ ๊ด๊ณ๋ฅผ ๋งบ๋ ์ฌ๋ฌ ํด๋์ค์์ ์์ฑ๋ ๊ฐ์ฒด๋ค์ด ๊ธฐ๋ฅ์ ์ํํ๋ค.
| No. | ๊ด๊ณ | ์ค๋ช |
| 1 | ์ฐ๊ด ๊ด๊ณ (association) |
- ํด๋์ค๋ค์ด ๊ฐ๋
์ ์๋ก ์ฐ๊ฒฐ๋์์์ ๋ํ๋ธ๋ค. - ์ฐ๊ด๋ ํด๋์ค ์์ ์ค์ ์ด๋ ํ์ดํ๋ฅผ ๊ทธ์ด ํ์ํ๋ฉฐ,๋ณดํต์ ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ์ํฉ์ผ ๋ ํํํ๋ค. - ์ฐ๊ด ๊ด๊ณ ์ด๋ฆ ๋ ํด๋์ค ์์ด์ ๊ด๊ณ๊ฐ ๋ช ํํ ๊ฒฝ์ฐ ์ด๋ฆ์ ์ฌ์ฉํ์ง ์์๋ ๋๋ค. - ์ฐ๊ด ๊ด๊ณ์์ ๊ฐ Class Object(๊ฐ์ฒด)์ ์ญํ (์ด๋ฆ) ํด๋์ค ๋ฐ๋ก ์ ์ฐ๊ด ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ์ ๊ฐ๊น์ด์ ๊ธฐ์ ํ๋ค. ๐ ์ญํ ์ด๋ฆ์ ์ฐ๊ด๋ class์ object๋ค์ด ์๋ก๋ฅผ ์ฐธ์กฐํ ์ ์๋ ์์ฑ์ ์ด๋ฆ์ผ๋ก ํ์ฉํ๋ค. = ๊ฐ์ฒด๊ฐ ์๋ก๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ field(์์ฑ) ์ด๋ฆ์ผ๋ก ๊ทธ๋๋ก ์ด๋ค. ![]() - ๋ค์ค์ฑ (multiplicity) ํ ๊ฐ์ฒด๊ฐ ๋ฐ๋ํธ ๊ฐ์ฒด๋ฅผ ๋ช ๊ฐ๊น์ง ๊ฐ์ง ์ ์๋์ง ์ฐ๊ฐ ๊ด๊ณ์ Class Object์ ์ญํ ์ด๋ฆ๊ณผ ๊ฒน์น์ง ์๊ฒ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๊ฐ๊น์ด์ ํ๊ธฐํ๋ค. ![]() ํ๋จ์ ์์ ํ๋ฅผ ๋ณด๊ฐํ์ฌ ์์ฑํ์์. - ์ฐ๊ด ํด๋์ค (Association Class) ์ฐ๊ด ๊ด๊ณ์ ์ถ๊ฐํ ์์ฑ์ด๋ ํ์๊ฐ ์์ ๋ ์ฌ์ฉ. ์: “์ฑ์ (Grade)”์ Student์ Course ๊ฐ์ ์ฐ๊ด ์์ฒด์ ์กด์ฌํ๋ ์ ๋ณด์ด๋ค. ์ฌ๊ฑด ์ด๋ ฅ(event history) ํํ, ?? - ์ฌ๊ท์ ์ฐ๊ด ๊ด๊ณ (Recursive Association) ๋์ผํ ํด๋์ค์ ์ํ ๊ฐ์ฒด๋ค ์ฌ์ด์ ์ฐ๊ด ๊ด๊ณ ์: ์ง์(Employee) ํด๋์ค๊ฐ ์์ ๊ด๋ฆฌ์์ ํ์ ์ง์์ ํํํ ๋. ์ญํ ์ ํด๋์ค๋ก ํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ ?? |
| 2 | ์ผ๋ฐํ ๊ด๊ณ (generalization) |
๊ฐ์ฒด์งํฅ ๊ฐ๋
์ ์์ ๊ด๊ณ๋ค. ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค๋ฅผ ํฌํจํ๋ ์์ ๊ฐ๋
์ผ ๋์ IS-A ๊ด๊ณ๋ฅผ UML์์๋ ์ผ๋ฐํ ๊ด๊ณ๋ก ๋ชจ๋ธ๋งํ๋ฉฐ, ์์ด ๋น ํ์ดํ๋ก ํ์ํ๋ค. - ์์ ํด๋์ค์ ์์ฑ๊ณผ ์ฐ์ฐ์ ํ์ ํด๋์ค๊ฐ ๋ฌผ๋ ค๋ฐ๋๋ค. - "is a kind of" ๊ด๊ณ๋ก ํด์๋๋ค. ์ : ๊ฐ์ ์ ํ(์์) - ์ธํ๊ธฐ, TV, ์๊ธฐ์ธ์ฒ๊ธฐ(ํ์) |
| 3 | ์งํฉ ๊ด๊ณ (composition, aggregation) |
ํด๋์ค๋ค ์ฌ์ด์ ์ ์ฒด-๋ถ๋ถ(Part-Whole) ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค. ์ง์ฝ(aggregation) ๊ด๊ณ์ ํฉ์ฑ(composition) ๊ด๊ณ๊ฐ ์กด์ฌํ๋ค. |
| 4 | ์์กด ๊ด๊ณ (dependency) |
ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์ ๊ธฐ๋ฅ์ ์ ๊น ์ฌ์ฉํ๋ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค. ์ฐ๊ด๊ณผ ๋น์ทํ์ง๋ง ๋ณดํต ํ ๋ฉ์๋ ์คํ ๋์๋ง ์ ์ง๋๋ ๋งค์ฐ ์งง์ ์๋ช ์ด๋ฉฐ, ์ ์ ํ์ดํ๋ก ํ์ํ๋ค. |
| 5 | ์ค์ฒดํ ๊ด๊ณ (realization) |
์ธํฐํ์ด์ค์ ์ฑ ์๋ค์ ์ค์ ๋ก ๊ตฌํํ ํด๋์ค์์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค. ์์๊ณผ ์ ์ฌํ์ง๋ง ๋น ์ผ๊ฐํ ๋จธ๋ฆฌ์ ์ ์ ์ ์ฌ์ฉํด ํ์ํ๋ค. |
| +) ์ฐ๊ด ๊ด๊ณ |
๐ ์ญํ ์ด๋ฆ์ ์ฐ๊ด๋ class์ object๋ค์ด ์๋ก๋ฅผ ์ฐธ์กฐํ ์ ์๋ ์์ฑ์ ์ด๋ฆ์ผ๋ก ํ์ฉํ๋ค.
= ๊ฐ์ฒด๊ฐ ์๋ก๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ field(์์ฑ) ์ด๋ฆ์ผ๋ก ๊ทธ๋๋ก ์ด๋ค.
์ ์์
class Customer {
// ์ญํ ์ด๋ฆ orders → ๋ค์ค์ฑ 0..* → ์ปฌ๋ ์
ํ์
private final List<Order> orders = new ArrayList<>();
}
class Order {
// ์ญํ ์ด๋ฆ customer → ๋ค์ค์ฑ 1 → ๋จ์ผ ์ฐธ์กฐ
private Customer customer;
}
| ๋ค์ค์ฑ ํ๊ธฐ | ์๋ฏธ(๋ฒ์) | ๊ด๊ณ | ์ฝ๋ ๋ฒ | ์์ |
| 1 | ์ ํํ 1 | A(1) — B(1) = 1โท1 | ์ฌ์ฉ์ 1๋ช ์ ํ๋กํ 1๊ฐ๋ฅผ ๊ฐ์ง๋ค | ํ์ ๋จ์ผ ๊ด๊ณ |
| 0..1 | 0 ๋๋ 1 | A(1) — B(0..1) = 1โท0..1 | ์ฌ์ฉ์ 1๋ช ์ ์ถ์ฒ์ธ์ด ์์ ์๋/์์ ์๋ ์๋ค | ์ ํ์ ๋จ์ผ(optional) |
| * ๋๋ 0..* | 0 ์ด์, ์ํ ์์ | A(1) — B(0..) = 1โท | ์ฌ์ฉ์ 1๋ช ์ ์ฃผ๋ฌธ์ 0๊ฐ ์ด์ ๊ฐ์ง๋ค | ์ํ ๋ฏธ์ ์ ๋ณดํต ‘*’ ์ฌ์ฉ |
| 1..* | 1 ์ด์, ์ํ ์์ | A(1) — B(1..) = 1โท1.. | ์ฃผ๋ฌธ 1๊ฑด์ ์ฃผ๋ฌธํญ๋ชฉ์ ์ต์ 1๊ฐ ์ด์ ๊ฐ์ ธ์ผ ํ๋ค | “์ต์ 1๊ฐ” ๊ฐ์ |
| n | ์ ํํ n๊ฐ | A(1) — B(n) | ์ผ์ธ๋ฐฉ 1๊ฐ๋ ์ฐธ๊ฐ์ ์ ํํ 3๋ช ์ ๊ฐ์ง๋ค | ๊ณ ์ ์นด๋๋๋ฆฌํฐ |
| m..n | m ์ด์ n ์ดํ | A(1) — B(m..n) | ํ 1๊ฐ๋ ํ์์ 2~5๋ช ๊ฐ์ง๋ค | ๋ฒ์ ์ ์ฝ |
| ๊ฐ ์งํฉ ์: 1, 2, 6 | ๋ช ์๋ ๊ฐ ์ค ํ๋ | A(1) — B(1,2,6) | ํจํค์ง 1๊ฐ๋ ์์ดํ ์ 1๊ฐ/2๊ฐ/6๊ฐ๋ง ๋ด์ ์ ์๋ค | ๋ถ์ฐ์ ํ์ฉ(ํ์ค ํ๊ธฐ ํ์ฅ) |
| ํผํฉ ์: 1, 3..5 | 1 ๋๋ 3~5๊ฐ | A(1) — B(1,3..5) | ํ์ฌ 1๊ฐ๋ ์ข์์ 1๊ฐ ๋๋ 3~5๊ฐ ์์ฝํ๋ค | ๋ถ์ฐ์+๊ตฌ๊ฐ ํผํฉ(ํ์ค ํ๊ธฐ ํ์ฅ) |
๋๋จ ์กฐํฉ์ผ๋ก ์ฝ๋ ๋ฒ ์์ฝ
- 1 — 1: ์ผ๋์ผ(One-to-One)
- 1 — *: ์ผ๋๋ค(One-to-Many)
- * — 1: ๋ค๋์ผ(Many-to-One)
- *— *: ๋ค๋๋ค(Many-to-Many)
์ฌ์ฉ ํ
- ๋ค์ค์ฑ์ “์ ๋”์ ๊ฐ๊ฐ ํ๊ธฐํ๋ค. ์: ์ฃผ๋ฌธ(1) — (1..*) ์ฃผ๋ฌธํญ๋ชฉ.
- “*”๋ ์ํ ๋ฌดํ์ ๋ปํ๋ค. ์ํ์ด ์์ผ๋ฉด ์ ์๋ ๊ตฌ๊ฐ์ผ๋ก ๋ช ์ํ์.
- ๋ชจ๋ธ ์ ์ฝ์ ์๋ฐํ ์ ๋ฌํด์ผ ํ๋ฉด m..n ๋๋ ๊ฐ ์งํฉ ํ๊ธฐ๋ฅผ ํ์ฉํ๋ค.
์ฌ๊ธฐ์๋ถํฐ ๋ด์ผ๋จ
5๏ธโฃ ์งํฉ ๊ด๊ณ (Aggregation / Composition)
| Aggregation (์ง์ฝ) | ์ ์ฒด์ ๋ถ๋ถ์ ๊ด๊ณ, ๋ถ๋ถ์ด ๋ ๋ฆฝ์ | ๋ ๋ฆฝ์ | ๋น ๋ง๋ฆ๋ชจ(โ) |
| Composition (ํฉ์ฑ) | ์ ์ฒด๊ฐ ์ฌ๋ผ์ง๋ฉด ๋ถ๋ถ๋ ์ฌ๋ผ์ง | ์ข ์์ | ์ฑ์์ง ๋ง๋ฆ๋ชจ(โ) |
์์:
6๏ธโฃ ์์กด ๊ด๊ณ (Dependency)
- ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์ ์ ์ฌ์ฉํ๋ ๊ด๊ณ(์์์ ๊ด๊ณ)
- ์: ๋ฉ์๋์ ๋งค๊ฐ๋ณ์, ์ง์ญ ๋ณ์๋ก ์ฐธ์กฐ๋ ๋
- UML์์ ์ ์ ํ์ดํ(→) ๋ก ํํ
์์:
7๏ธโฃ ์ธํฐํ์ด์ค์ ์ค์ฒดํ ๊ด๊ณ (Interface & Realization)
- ์ธํฐํ์ด์ค๋ ํน์ ๊ธฐ๋ฅ์ “์ฑ ์”์ ์ ์ํ ์ถ์์ ๊ฐ๋ ์ด๋ค.
- ์ค์ฒดํ(Realization) ๊ด๊ณ๋ ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ์ ์ค์ ๋ก ๊ตฌํํ ํด๋์ค๋ฅผ ๋ํ๋ธ๋ค.
- “can do this” ๊ด๊ณ๋ก ํด์๋๋ค.
์์:
์ํ์ค ๋ค์ด์ด๊ทธ๋จ (Sequence diagram)
๊ฐ๋
์ํ์ค ๋ค์ด์ด๊ทธ๋จ์ ๊ฐ์ฒด๋ค์ด ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์ ํํํ๋ค.
์ฆ, **์์คํ
์ ๋์ ์ธ ํ์(Behavior)**๋ฅผ ์๊ฐํํ๋ ๋ค์ด์ด๊ทธ๋จ์ด๋ค.
โ ๊ฐ์ฒด๋ค์ด ์ด๋ป๊ฒ ๊ต๋ฅํ๋์ง ๋ณด์ฌ์ค
- Dimension - time
โ ๊ฐ์ฒด, ์ค์ ํ์ดํ๋ก ๊ทธ๋ ค์ง๋ ๋ฉ์์ง ๊ทธ๋ฆฌ๊ณ ์์ง ์ง
ํ ์ํฉ์ ๋ํ๋ด๋ ์๊ฐ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- ๊ฐ์ฒด
| โ์๋ช
์ (lifeline) - ๊ฐ ๊ฐ์ฒด๋ก๋ถํฐ ์๋๋ก ๋ป์ด๊ฐ๋ ์์ โ์คํ(activation) - ๊ฐ์ฒด๊ฐ ์ํํ๋ ์คํผ๋ ์ด์ |
- ๋ฉ์์ง
| ํธ์ถ(call) ๋ฉ์์ง - ์์ ๊ฐ์ฒด๊ฐ ์คํผ๋ ์ด์ ์ ์ํํ ๋๊น์ง ์ก์ ๊ฐ์ฒด๋ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค. - ํธ์ถ ๋ฉ์์ง์ ๋ต์ ๋ฉ์์ง |
- ์๊ฐ
| ์์ง ๋ฐฉํฅ์ผ๋ก ๋ํ๋ธ๋ค |
๊ตฌ์ฑ ์์
| ๊ฐ์ฒด(Object) | ๋ค์ด์ด๊ทธ๋จ ์๋จ์ ์์น, ์ด๋ฆ ์๋์ ์์ง์ ํ์ |
| ์๋ช ์ (Lifeline) | ๊ฐ์ฒด์ ์กด์ฌ ๊ธฐ๊ฐ์ ๋ํ๋ด๋ ์ ์ |
| ํ์ฑ ๊ตฌ๊ฐ(Activation) | ๊ฐ์ฒด๊ฐ ์์ ์ ์ํํ๋ ๊ตฌ๊ฐ (์ง์ฌ๊ฐํ ๋ธ๋ก) |
| ๋ฉ์์ง(Message) | ๊ฐ์ฒด ๊ฐ ํธ์ถ ๋๋ ๋ฐํ์ ๋ํ๋ด๋ ํ์ดํ |
| ์๊ฐ(Time) | ์์์ ์๋๋ก ํ๋ฅด๋ ์๊ฐ์ ์งํ |
์์
์๋์ฐจ ํค๋ก ์๋์ฐจ ์ ๊ธ ๊ธฐ๋ฅ์ ์ํํ๋ ์๋๋ฆฌ์ค
- CarOwner๊ฐ CarKey์ lock() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
- CarKey๋ Car์ lockDoor() ๋ฉ์๋๋ฅผ ์คํํ๋ค.
- Car๋ ๋ฌธ์ ์ ๊ทธ๊ณ , ๋ผ์ดํธ๋ฅผ ๊น๋ฐ์ด๋ฉฐ, ๊ฒฝ์ ์๋ฆฌ๋ฅผ ๋ธ๋ค.
์ํ์ค ๋ค์ด์ด๊ทธ๋จ:
CarOwner → CarKey : lock()
CarKey → Car : lockDoor()
Car → Car : blinkLight()
Car → Car : beepSound()
๐ ํต์ฌ ์์ฝ
| ๋ชจ๋ธ๋ง | ์์คํ ์ ๊ตฌ์กฐ์ ๋์์ ์ถ์ํํ์ฌ ํํํ๋ ๊ณผ์ |
| UML | ๊ฐ์ฒด์งํฅ ์์คํ ์ ์๊ฐํํ๊ณ ๋ช ์ธํํ๋ ํ์ค ์ธ์ด |
| ํด๋์ค ๋ค์ด์ด๊ทธ๋จ | ์์คํ ์ ์ ์ ๊ตฌ์กฐ๋ฅผ ํํ |
| ์ํ์ค ๋ค์ด์ด๊ทธ๋จ | ๊ฐ์ฒด ๊ฐ ๋ฉ์์ง ๊ตํ์ ์์๋ฅผ ํํ |
| ๊ด๊ณ์ ์ข ๋ฅ | ์ฐ๊ด, ์ผ๋ฐํ, ์ง์ฝ, ํฉ์ฑ, ์์กด, ์ค์ฒดํ ๋ฑ |
'Programming Language ๐ป > Java โ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java] ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) - 3. ๋์์ธ ํจํด์ด๋? (0) | 2025.10.18 |
|---|---|
| [Java] ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) - 1. ๊ฐ์ (0) | 2025.10.18 |
| [Java] Type of Inheritance: extends vs implements (2) | 2024.12.05 |
| [Java] Chapter01. ์ถ๋ ฅ (1) | 2024.10.31 |
| [JAVA] ๋ฐฑ์ค Week2 (0) | 2024.09.15 |

