시스템에서 사용되는 객체 타입을 정의하고, 그들 간의 존재하는 정적인 관계를 다양한 방식으로 표현한 다이어그램
- Class, Interface, collaboration, Relation을 이용하여 시스템의 정적인 관점들을 가시화하고 구축을 위한 자세한 내용을 명세화
- 객체지향 설계 시 가장 대중적으로 쓰이는 다이어그램 중 하나
특징
- 클래스(Class), 인터페이스(Interface), 공동작업(Collaboration) 간의 관계 중심
- 시스템 내 클래스들의 정적인 구조를 표현
- 작성 후 바로 프로그램 코드로 변환 가능
구성
- 클래스
- 속성
- 연산
- 관계
클래스
클래스 표기는 박스를 세 부분으로 나누어 첫번째 부분에는 클래스 이름이 위치하며, 두번째 부분은 속성, 세번째 부분은 연산을 기술
- 클래스 이름: 일반적으로 첫번째 글자는 대문자로 표기
- 속성(attribute): 의미 있는 명사형으로 표현
- Class의 특징(property)에 이름을 부여
- 연산(operation): 의미있는 동사형으로 표현
- 객체 행동에 영향을 주기 위해 특정 class의 객체로부터 요청할 수 있는 서비스를 표현
관계
요약
명칭 | 표현 | 설명 |
---|---|---|
연관 관계 | ────> | 객체간 개념적으로 연관 |
의존 관계 | - - - - - -> | 객체 변경 시 관계된 다른 객체도 변경 |
집합 관계 | ────◇ | 전체와 부분인 연관 관계 |
합성 관계 | ────♦ | 전체 소멸 시 부분도 소멸되는 집합 연관 관계 |
상속 관계 | ────▷ | 일반화된 개념과 구체화된 객체의 관계 |
상속 관계
특수화/일반화 관계(Specialization/Generalization Relationship)
- 상위와 하위의 관계를 의미. 하위는 상위의 공통점을 상속받아 가짐
- ‘is a 관계’ 또는 ‘is a kind of’ 관계라고도 함
연관 관계(Association Relationship)
- 한 객체가 다른 객체와 연결되어 있음을 나타낼 때 그들을 연관관계로 지칭하며. 클래스들 사이에 선을 그어서 표현
- 한 클래스와 다른 클래스 간에 연결된 선이 있으면 한 클래스의 객체가 다른 클래스의 객체를 사용하는 것을 암시
- 방향(navigability)과 멀티플리시티(multiplicity) 표현 가능
기타
- 집합 관계(Aggregation Relationship)
- 클래스와 클래스간의 부분과 전체의 관계를 의미
- UML 2.0에서는 사용하지 않음
- 합성 관계(Composition Relationship)
- 집합 관계와 같이 부분과 전체 관계이나, 전체 클래스 소멸 시 부분 클래스도 소멸하는 관계
- 의존 관계(Dependency Relationship)
- 한 클래스의 변화가 다른 클래스에 영향을 미치는 관계
- 한 클래스가 변경 되었을 때 이것을 사용하는 다른 클래스에 영향이 미치는 관계(그러나 반드시 역이 성립하는 것은 아니다.)