UML class 관계 표기법

C++ 2011. 1. 3. 21:38
UML class 관계 표기법

Association (연관) - 지속적인 강한 관계

양방향
class A {
private B b
}
class B {
private A a
}

서로에 대한 참조 멤버 변수를 갖음


단방향
class A {
private B instance[16];
}
class B {}
A가 B 객체의 instance라는 이름의 참조 멤버 변수 16개를 갖음.
16 대신 *일 경우 vector나 list등을 의미할 수 있다.


Recursive Association (재귀)
class A {
private A a;
}
자기자신을 참조할 수 있는 경우
Inner Class (내부 클래스)
class A {
class B {}
}

클래스 안의 클래스


Association Class (연관 클래스)
classs A {
private Vector instance;
}

A는 B를 Vector에 담아 표현함을 나타낸다.
Association Class 보단 아래처럼 스테레오 타입의 사용이 더 낫다.
Association Qualifier (연관 한정사)
class A {
private int id;
public string getName() {
B b = DB.getB(id);
return e.getName();
}
}
class B {}
A는 B에 id를 통해 접근함을 표현
키나 토큰을 통해 연관을 나타낼때 사용


Dependency (의존)
class A {
void method(B b) {
}
}
class B {}

일시적인 약한 관계


Aggregation (집합)
class A {
private Vector<B> vectorB;
}
class B {}
A가 B의 집합을 갖으나 생명주기는 이질적인 경우.
(A가 소멸한다고 해서 B도 소멸하진 않는다.)
UML2에서 제외됨. (Association(연관)와 차이 없는 모습 때문에..)
Composition (합성)
class A {
private Vector<B> vectorB;
}
class B {}
A가 B의 집합을 갖고 생명주기도 동일하다.
(A, B가 항상 같이 소멸한다.)


Generalization (일반화 : 상속)
class A {}
class B : public A {} //Java는 extends A

B가 A를 상속
Realization (실체화 : 구현)
class A {}
class B : public A {} //Java는 implement A

B가 A 인터페이스를 구현