본문 바로가기

개발 언어/기본개념

[UML] Class Diagram

728x90
반응형

https://sabarada.tistory.com/72

 

[UML] 클래스 다이어그램 이해하기

[UML] 클래스 다이어그램 이해하기 [UML] 시퀀스 다이어그램 이해하기 안녕하세요. 오늘은 클래스 다이어그램에 대해서 이야기 해보고자 합니다. 최근 레거시 시스템의 구조개선을 조금씩 하고 있

sabarada.tistory.com

위 링크에 참조된 Contents Review

1. UML (United Modeling Language)

도메인 결제(시스템 등)을 모델로 표현해주는 언어

  • 목적
    • 의사소통 또는 설계 논의를 위해
    • 전체 시스템의 구조 및 클래스의 의존성 파악을 위해
    • 유지보수를 위한 설계의 back-end 문서 제작을 위해

2. 클래스 다이어그램

UML 중 클래스 다이어그램은 정적 다이어그램으로 클래스의 구성요소 및 클래스간의 관계를 표현하는 대표적인 UML임.

  1. 의존 관계를 명확히 보여줌
  2. 순환 의존이 발생하는 지점을 찾아내서 어떻게 이 순환고리를 꺨 수 있을 지 결정할 수 있게 해줌
  • 용도
    • 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개념과 같은 추상적인 개념을 기술하기 위해 나타냄 
    • 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적으로 사용할 수 있음

왼쪽: 첫번째 용도, 오른쪽: 두번째 용도

3. 접근제어자 리스트

  • +: public
  • -: private
  • #: protected

4. 형식

  • 속성(Attibute)
    • 접근제어자 이름: 타입 = 기본값
    • -title: String
  • 메서드(Method)
    • 접근제어자 이름(파라미터 속성): 리턴값
    • +setTitle(String)
    • +getTitle(): String

5. 클래스 다이어그램을 이용한 관계 표현

  1. Generalization (일반화)

- 일반적으로 알고 있는 상속을 의미, 클래스 다이어그램에서는 실선에 비어있는 화살표로 표시함

위 도메인을 코드로 나타내면 아래와 같다.

2. Realization (실체화)

- Realization은 interface에 있는 spec을 오버라이딩하여 실제로 구현하는 것, 점선과 비어있는 화살표로 구현함

3. Dependency (의존)

- Dependency는 클래스간의 참조가 일어나는 것 중 하나, 메서드내에서 대상 클래스의 객체를 생성하거나 사용, 리턴받아 사용하는 것을 말함.

- 또한 위의 참조는 해당 클래스와의 관계를 계속 유지하지 않음, 점선과 화살표로 구현함

4. Association & Direct Association (연관)

- Association은 다른 객체의 참조를 가지는 필드를 의미함

- 실선으로 표현되며 방향성이 존재하는 경우에는 화살표를 넣어 표시함, 또한 둘의 연관관계가 어떻게 되는지 숫자로 표시할 수 있음

- 연관관계의 숫자 표현은 아래와 같음

  • 1 - 1개의 표현
  • * - 0 ~ n 개의 표현
  • n...m: n부터 m까지의 연관관계를 맺음

5. Aggregation (집합) & Composition (합성)

-  Aggregation 과 Composition은 특수한 관계

- Aggregation은 Association의 집합 관계를 나타내는 것으로 Collection 이나 Array 를 이용하는 관계

- 그러나 위 관계는 Association 으로도 충분히 나타낼 수 있음 -> 위에서 Association의 예제가 1:N 연관관계를 나타낸 것

- Aggregation과 Association의 모호성은 지속적으로 논란이 되고 있지만 결론이 나지 않음

 

- Composition 은 클래스 연관관계에서 강한 결합의 관계를 의미

- 즉, 참조하는 클래스의 라이프 사이클이 종속적, 실선에 채워져있는 다이아몬드로 표시 

728x90
반응형