πŸ€ etc

[UML] 클래슀 닀이어 그램 (Class Diagram)

KiwiπŸ’» 2022. 5. 18. 16:21

UML μ΄λž€?

μ•„νŒŒνŠΈ μ‹œκ³΅μ‚¬κ°€ μžμ‹ λ“€μ΄ μ§€μœΌλ €λŠ” μ•„νŒŒνŠΈλ₯Ό λ§Žμ€ μ‚¬λžŒλ“€μ—κ²Œ 보여주렀 λͺ¨λΈ ν•˜μš°μŠ€λ₯Ό μ§“λŠ” κ²ƒμ²˜λŸΌ, μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œλ„ 개발 이전에 λͺ¨λΈμ„ λ§Œλ“ λ‹€. μ΄λ•Œ μ‚¬μš©λ˜λŠ” 것이 UML이고, μ΄λŠ” μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ—μ„œ μ‚¬μš©λ˜λŠ” ν‘œμ€€ν™”λœ λ²”μš© λͺ¨λΈλ§ μ–Έμ–΄λΌλŠ” λœ»μ΄λ‹€. μ‰½κ²Œ 말해 λͺ¨λΈμ„ λ§Œλ“œλŠ” ν‘œμ€€μ–Έμ–΄λΌλŠ” λœ»μ΄λ‹€.

 

κ·Έλ ‡λ‹€λ©΄ UML을 μž‘μ„±ν•˜λ©΄ 쒋은 점이 무엇이 μžˆμ„κΉŒ?

 

  1. νƒ„νƒ„ν•˜κ²Œ κ΅¬ν˜„ 된 λͺ¨λΈμ€ 쒋은 μ•„ν‚€ν…μ²˜μ˜ 기반이 λœλ‹€.
  2. ν”„λ‘œμ νŠΈ νŒ€μ›λ“€κ°„μ— μ˜μ‚¬μ†Œν†΅μ„ μ›ν™œν•˜κ²Œ 도와쀀닀.
  3. ν•œλ²ˆμ— μ΄ν•΄ν•˜κΈ° νž˜λ“  μ‹œμŠ€ν…œμ„ μ‹œκ°μ μœΌλ‘œ κ΅¬ν˜„ν•˜μ—¬ 이해λ₯Ό 도와쀀닀.

Class DIagram

클래슀 λ‹€μ΄μ–΄κ·Έλž¨μ€ 객체지ν–₯ν˜• μ‹œμŠ€ν…œ μ„€κ³„μ—μ„œ, μ‹œμŠ€ν…œμ˜ 논리 섀계λ₯Ό μœ„ν•œ ν΄λž˜μŠ€λ“€μ˜ μ‘΄μž¬μ™€ κ·Έλ“€μ˜ 관계λ₯Ό 도식화 ν•œ 것이닀.

κ΄€κ³„μ˜ μ’…λ₯˜

Association, μ—°κ΄€ 관계

μ—°κ΄€ κ΄€κ³„λŠ” 보톡 객체의 μ°Έμ‘°λ₯Ό κ°€μ§€λŠ” ν•„λ“œλ₯Ό μ˜λ―Έν•œλ‹€.
(μ €μž₯ ν”„λ‘œνΌν‹°μ˜ νƒ€μž…μœΌλ‘œ λ‹€λ₯Έ 클래슀λ₯Ό μ°Έμ‘° ν• λ•Œ)

class Tottenham {
    let mvpPlayer: Sonny
}

class Sonny {

}

ν† νŠΈλ„˜ ν΄λž˜μŠ€κ°€ μ˜λ‹ˆν΄λž˜μŠ€ μ°Έμ‘°, 이 경우 λ°©ν–₯성이 μžˆλŠ” 연관이기 λ•Œλ¬Έμ— 일반 싀선이 μ•„λ‹Œ ν™”μ‚΄ν‘œλ₯Ό μ‚¬μš©ν•΄ 쀄 수 있음

Inheritance, Generalization, 상속 관계, μΌλ°˜ν™” 관계

μΌλ°˜ν™” κ΄€κ³„λŠ” μŠˆνΌν΄λž˜μŠ€μ™€ μ„œλΈŒν΄λž˜μŠ€κ°„μ˜ 상속관계λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

class Epl {

}

class Tottenham: EPL {

}

Implementation, Realization, κ΅¬ν˜„ 관계, 싀체화 관계

μΈν„°νŽ˜μ΄μŠ€μ˜ κ΅¬ν˜„μ„ λ‚˜νƒ€λ‚΄λŠ” 관계
(μŠ€μœ„ν”„νŠΈμ—μ„œλŠ” ν”„λ‘œν† μ½œ 채택이 λŒ€ν‘œμ μΈ 예)

protocol FootballPlayer {

}

class Sonny: FootballPlayer {

}

Dependency, 의쑴 관계

일반적으둜 제일 많이 μ‚¬μš©λ˜λŠ” 관계, λ§€μ„œλ“œ λ‚΄μ—μ„œ λŒ€μƒ 클래슀의 객체 생성, 객체 μ‚¬μš©, λ©”μ„œλ“œ 호좜, 객체 리턴, λ§€κ°œλ³€μˆ˜λ‘œ ν•΄λ‹Ή 객체λ₯Ό λ°›λŠ” 것을 λ§ν•œλ‹€.

class Football {
    func game() {

    }
}

class Person {
    func watchFootball() -> Football {
        Football()
    }

    func playFootball(play: Football) {
        football.game()
    }
}

Aggregation, 집합 관계

κ°œλ…μ΄ λͺ…ν™•ν•˜μ§€ μ•Šκ³ , 연관관계와 μ½”λ“œμƒ 차이점이 쑴재 ν•˜μ§€ μ•ŠμŒ

  • κ°œμΈμ μœΌλ‘œλŠ” μ΅œλŒ€ν•œ μ‚¬μš©μ„ ν•˜μ§€ μ•ŠμœΌλ € 함...

Composition, ν•©μ„± 관계

Aggregation와 λΉ„μŠ·ν•œ κ°œλ…μ΄λ‚˜, 두 개체의 Life Cycle이 λ™μΌν•˜μ—¬ 쑰금 더 κ°•λ ₯ν•œ 집합을 의미 ν•œλ‹€.

class FruitStore {

}

class JuiceMaker {
    let fruitStore: FruitStore = FruitStore()
}

'πŸ€ etc' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

SOLID 원칙  (0) 2022.05.19
[UML] μ‹œν€€μŠ€ λ‹€μ΄μ–΄κ·Έλž¨ (Sequense Diagram)  (0) 2022.05.18
μžμ£Όμ“°λŠ” git λͺ…λ Ήμ–΄  (0) 2022.04.12
Git κ°œλ… / μš©μ–΄ 정리  (0) 2022.04.11