728x90
클래스 다이어그램: 구조 다이어 그램으로 내부 구성요소 및 클래스 간의 관계를 도식화하여 시스템의 전체 모듈이나 일부 및 전체를 구조화한다.
요소(element)
클래스
이름, 속성(변수), 메소드 순으로 나열.
속성과 메소드는 생략이 가능하지만 이름은 필수
+는 public, -는 private, #은 protected, ~은 default
{readonly}는 final, 밑줄은 static
[*], [0..1]은 변수에 지정된 사이즈: List의 경우 정해지지 않아서 *, Optional의 경우 0이거나 1이므로 [0..1]
(Optional은 NPE(NullPointerException)을 피하기 위해 null이 올 수 있는 값을 감싸는 Wrapper 클래스)
스테레오 타입
인터페이스나 추상 클래스와 같은 요소를 표기하기 위해 << >> (guillemet) 이용
<<interface>>, <<utility>>, <<abstract>>, <<enumeration>> 등
추상클래스
추상 클래스를 나타내는 방법:
1. 이탤릭체(기울어진 글씨)
2. 클래스명 {abstract}
3. <<abstract>>
클래스 간 관계
- Association: 다른 객체를 참조. 변수가 다른 클래스와 연관이 있을 때
- A -> B: A가 B를 참조.
- A - B: A와 B가 서로를 참조할 수 있음.
- -roleName(역할명)으로 참조될 때 어떤 역할을 가지고 있는지를 의미
- Inheritance: 상속 관계, 일반화
- A -|> B: A가 B를 상속받음
- Realization: 인터페이스를 상속받아 실현화
- A --|> B: A가 B를 상속받아 사용
- Denpendency: 클래스간 참조 관계. 메소드의 파라미터나 반환에 사용되는 클래스 관계를 나타낼 때
- A --> B: A가 B를 참조
- Aggregation: 집합 관계. 전체와 부분이 독립적
- A -<> B: A가 부분, B가 전체
- Association과 차이를 구분하기 힘들어 사용하지 않는 것이 좋음
- Composition: 집합 관계에서 부분이 전체에 종속적
- A -<> B: A가 부분, B가 전체
- 부분에 해당하는 인스턴스는 공유될 수 없음