https://sabarada.tistory.com/72
[UML] 클래스 다이어그램 이해하기
[UML] 클래스 다이어그램 이해하기 [UML] 시퀀스 다이어그램 이해하기 안녕하세요. 오늘은 클래스 다이어그램에 대해서 이야기 해보고자 합니다. 최근 레거시 시스템의 구조개선을 조금씩 하고 있
sabarada.tistory.com
위 링크에 참조된 Contents Review
1. UML (United Modeling Language)
도메인 결제(시스템 등)을 모델로 표현해주는 언어
- 목적
- 의사소통 또는 설계 논의를 위해
- 전체 시스템의 구조 및 클래스의 의존성 파악을 위해
- 유지보수를 위한 설계의 back-end 문서 제작을 위해
2. 클래스 다이어그램
UML 중 클래스 다이어그램은 정적 다이어그램으로 클래스의 구성요소 및 클래스간의 관계를 표현하는 대표적인 UML임.
- 의존 관계를 명확히 보여줌
- 순환 의존이 발생하는 지점을 찾아내서 어떻게 이 순환고리를 꺨 수 있을 지 결정할 수 있게 해줌
- 용도
- 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개념과 같은 추상적인 개념을 기술하기 위해 나타냄
- 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적으로 사용할 수 있음
3. 접근제어자 리스트
- +: public
- -: private
- #: protected
4. 형식
- 속성(Attibute)
- 접근제어자 이름: 타입 = 기본값
- -title: String
- 메서드(Method)
- 접근제어자 이름(파라미터 속성): 리턴값
- +setTitle(String)
- +getTitle(): String
5. 클래스 다이어그램을 이용한 관계 표현
- 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 은 클래스 연관관계에서 강한 결합의 관계를 의미
- 즉, 참조하는 클래스의 라이프 사이클이 종속적, 실선에 채워져있는 다이아몬드로 표시