- Generalization
- 상속 관계
A -> B
: A가 B를 상속
- Realization
- Interface에 정의된 메서드를 오버라이딩해 구현한 것 이라고 생각하면 됨
A -> B
: A는 B를 실체화 혹은 구현한것
- Dependency
- A객체가 B 객체를 가지고 있을 때 A가 B에 의존관계를 가지게 됨
A -> B
- A객체가 B 객체를 가지고 있을 때 A가 B에 의존관계를 가지게 됨
1
2
3
4
5
public class A {
public String foo(B b) {
...
};
}
- Association
- 다른 객체의 참조를 가짐.
- 방향성이 없다 -> 누가 누구를 참조할지 명시를 하지 않는 것
- 모든 가능성에 대해 생각 할 것
1
2
3
public class A {
private List<B> b;
}
- Dependency와 Association의 차이
- Dependency
- 클래스 A가 클래스 B의 메서드를 가지고 있음
- 클래스 B를 메서드의 인자로 받음
- Association
- 클래스 A가 클래스 B를 멤버 “변수”로 가짐
- Dependency
- Diredted Association
- 방향성을 가짐
- 바로 위의 예시에서
A -> B
<<List>>
혹은*
, 혹은 속성을 같이 명시하면 좋음
- Aggregation
- 보다 특수한 Association.
- 코드 level에서는 큰 차이가 보이지 않음
- “집합”이라는 개념이 추가되었으나 공식문서에서도 명확한 정의 없음
- 따라서 많은 곳에서 웬만하면 지양해야 한다고 함
- Composition
- Aggregation과 비슷한데 좀더 강한 집합.
- whole이 part의 생명주기를 책임진다.
Reference)
https://en.wikipedia.org/wiki/Class_diagram
https://www.nextree.co.kr/p6753/
https://morm.tistory.com/88