UML(Unified Modeling Language)은 통합 모델링 언어로 객체 지향 프로그램을 개발할 때 시각적 모델을 만들기 위해 쓰이는 표준화된 언어다. UML은 구조 다이어그램(Struncture Diagram)과 행위 다이어그램(Behavior Diagram)으로 나뉜다.
UML 구조 다이어그램의 한 종류로 클래스들 사이의 관계를 시각화해 표현한 것을 의미한다.
클래스는 3부분으로 나뉜다. 클래스명, 변수명, 메서드 3부분이다. 변수와 메서드의 접근제어자는 '+,-,#,~'를 이용해 표현하고 변수타입과 메서드 리턴타입은 ':'콜론을 이용해 표현한다. 메서드의 파라미터는 타입만 작성한다.
다중성 표시 : 클래스만으로 여러 객체간 관계를 표현할 수 있는 표시
연관관계( association ) : 보통 한 클래스가 다른 클래스가 제공하는 기능을 사용하는 관계를 의미한다.
V 실선 화살표 : 단방향 연관관계로 A와 B가 있을 때 A는 B에 대해 알고, B는 A에 대해 모르는 관계다. 즉,클래스A가 클래스B를 멤버변수로 가지고 있는 관계다. 이해하기 쉽게 A가 B를 소유하고 있는 주종관계를 생각하면 된다.
실선 : 양방향 연관관계로 A와 B가 서로에 대해 알고있는 관계다. 이해하기 쉽게 A와 B가 친구인 상태를 생각하면 된다.
일반화관계( generalization)
집합관계 : 전체와 부분의 관계를 의미한다.
집약관계( aggregation )
합성관계( composition )
의존관계( dependency )
실체화관계( realization )
class 관계로 설명된 개념들 중 연관관계와 집합관계(집약관계, 합성관계)의 차이가 거의 없다고 느꼈다. 두 관계 모두 한 클래스가 다른 클래스를 멤버변수로 가지고 있는 관계를 의미하기 때문이다. 약간의 차이는 집합관계는 생성자를 이용해 다른 클래스 멤버변수들을 생성하거나 파라미터로 받는다는 점(?)같다. 내가 잘못 이해한 것인지 이런 개념들 자체가 원래 모호한 것인지는 모르겠다.