클래스 다이어그램에서의 관계의 종류
UML 다이어그램 종류 중 클래스 다이어그램은 시스템을 구성하는 클래스들 사이의 관계를 표현합니다. 요구 분석부터 설계, 구현 단계까지 폭넓게 사용되는 다이어그램입니다.
그 중에서 클래스들 사이의 관계에 대해 자세히 알아보겠습니다. 크게 연관, 일반화, 집합, 의존, 인터페이스 책임 관계로 나누어집니다.
연관 관계 | 일반화 관계 | 집합 관계 | 의존 관계 | 인터페이스 책임 관계 | |
---|---|---|---|---|---|
설명 | 클래스간에 연관관계가 있으면 두 클래스를 실선으로 잇습니다. | 클래스들의 공통부분을 추출하여 수퍼 클래스를 정의하고 서브클래스들은 수퍼클래스를 향하여 속이 빈 화살표로 선을 연결합니다. | 클래스를 정의하는 속성의 라이프타임에 따라 집약, 합성 관계로 나누어집니다. | 클래스의 관계가 연관 관계에 비해 협력하는 빈도수가 적거나 유동적일 때 사용하며 점선을 연결한다. | 일반화 관계가 is a kind of 관계라면 인터페이스 책임관계는 can do 관계로써 행위를 수행함이 가능한 것을 의미한다. |
예시 |
방향성과 다중성
선들을 표현함에 있어서 어떤 클래스는 관계되어있는 클래스를 알아야 할 수도 몰라야 할 수도 있습니다. 이럴 때 화살표를 통해 단방향과 양방향을 나타냅니다 기본적으루 화살표가 없으면 양방향을 의미합니다. 그리고 관계에 있는 클래스의 구체적인 개수를 나타내기 위해 선의 끄트머리에 “1”, “*”, “1..*” 을 표기하기도 합니다.
연관 관계를 실제로 구현한다면?
위의 예시에서 Student와 Course 클래스는 양방향 관계입니다. 이는 서로의 존재를 알고있음을 의미합니다. 이를 Java 코드로 표현하면 다음과 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Class Student {
private Course course;
public void register(Course course){
this.course = course;
}
}
Class Course {
private Student student;
public void setStudent(Student student){
this.student = student;
}
}