http://geniusduck.tistory.com/entry/UML-%EA%B8%B0%EB%B3%B8%ED%8E%B8-%EA%B8%B0%EB%B3%B8-%ED%91%9C%EA%B8%B0-%ED%98%95%EC%8B%9D-%EB%B0%8F-%EA%B4%80%EA%B3%84%ED%91%9C%ED%98%84%EB%B2%95
개략적인 관계는 아래와 같은 듯 하다.
1. dependency
2. association
- aggregation
- composition
링크된 사이트의 설명을 보는 것을 권장하지만 간단하게 설명하면 아래와 같다. A라는 클래스 메써드 내에서 지역변수 정도로 B라는 클래스를 사용한다면 이는 단순 dependency 관계이다. 그러나 attribute로써 클래스 B를 사용한다면 association 관계가 되는 것이다.
association 의 경우 B라는 클래스가 C라는 클래스를 생성자 등의 인자로 받아서 B의 attribute로 세팅할 경우에는 aggregation관계가 된다. 이 경우에는 B라는 클래스의 객체가 소멸되더라도 인자로 넘어온 C라는 클래스의 객체는 그대로 살아 있을 것이다. (편의상 클래스를 객체로 이해해 주었으면 한다.)
그런데 B에서 C라는 클래스는 인자로 받아서 attribute에 세팅하는 것이 아니라 자체적으로 new 연산자를 사용하여 세팅한다면 이 때에는 composition 관계가 되는 것이다. 즉, B의 life cyle과 C의 life cycle은 동일하게 되는 것이다.(동일하게끔 구현을 해야할 것이다.)
'잡담' 카테고리의 다른 글
LoadLibrary (0) | 2009.10.30 |
---|---|
soft link, hard link (0) | 2009.09.16 |
Compiler 개요3 (0) | 2009.07.17 |
Compiler 개요2 (0) | 2009.07.15 |
Compiler 개요 (0) | 2009.07.13 |