everydayminder

learn something everyday

Posts Tagged ‘UML

composition vs. aggregation

leave a comment »

UML 다이어그램에서 특히 집합 관계를 표시할 때, 헷갈리는 용어이다.

‘A가 B에 속해있다.’ 혹은 ‘B는 A를 포함한다’의 개념을 표현하고자 할 때 사용하는 표기인데,
어떤 경우에 이 관계는 composition 또는 aggregation이라고 말할 수 있는 것일까?

이에 대해, googling을 하던 중, 적어도 나에게는 와닿는 포스팅이 있어
소개하고자 한다.

물론, 단지 이 글 뿐만 아니라 다른 곳으로부터도 참고하였다.

참고 :
http://www.bestarticle.org/computer/association-aggregation-and-composition-what-are-they-and-how-do-they-differ/

Aggregation

  • ◇–, 실선으로 표시
  • 대상 객체에 대한 possession을 나타낸다. (ownership 아님)
  • 순환 관계는 안됨 (자기 자신을 포함할 수 없음)
  • “has-a” 관계
  • “A가 B를 포함한다”고 했을 경우, B는 A의 구성요소이기도 하지만, A와 별도의 객체이다. 즉, 별도로 존재가능하다.
  • “근로자”와 “주소” 객체가 있다고 할 경우, 모든 근로자는 주소를 갖고 있지만, 근로자 객체가 소멸한다고 해도 주소는 유효하다.

Composition

  • ◆–, 실선으로 표시
  • 대상 객체는 ownership을 나타낸다.
  • aggregation과 비슷하나, 큰 차이점은 전체-부분에 대한 관계성이며, 부분 객체는 전체 객체 없이 별도로 존재할 수 없다.
  • 즉, ‘A가 B를 포함한다”고 했을 경우, composition에서는 A가 없는 상태에서의 B는 존재할 수 없으며, A가 소멸될 경우 B도 함께 소멸한다.
  • 예를 들어, “근로자”와 “email주소” 객체가 있다고 했을 경우, 해당 근로자 객체가 소멸할 경우, 해당 근로자의 email주소 객체도 함께 소멸한다.
  • “contains-a” 관계
  • 순환 관계는 안됨 (자기 자신을 포함할 수 없음)

Aggregation vs Composition

  • aggregation은 “has-a” 관계를, composition은 “contains-a” 또는 “전체-부분” 관계를 표현
  • aggregation은 “전체”-“부분” 모두 독립적으로 존재할 수 있으나, composition은 “전체”가 “부분”의 생명 주기를 통제한다.
  • aggregation은 composition에 비해 약한 관계임
  • composition은 한 개의 전체에 한 개만 속할 수 있으나, aggregation은 여러 개의 전체에 0~n개 속할 수 있다.

Written by everydayminder

June 24, 2010 at 05:41

Posted in UML

Tagged with , , ,

Eclipse에서 java 소스로부터 클래스 다이어그램을 쉽게 만들자/ eUML2

leave a comment »

eUML2라는 eclipse 플러그인을 설치하여,
기존에 작성했던 java project의 클래스 다이어그램 및 클래스 연관 관계를 쉽게 그려서 볼 수 있다.

라이센스는 ‘free’ 버전과 ‘studio’ 버전이 있으므로, free를 골라서 설치하자.
eclipse에서 자신의 eclipse 버전에 맞는 것으로 골라서, download 받고 설치하면 된다.

대략 다음의 장점이 있다고 광고하고 있다.


  • Real-time code/model synchronization

  • UML2.1 compliant and support of OMG XMI

  • Advanced reversed engineering

  • Powerful true dependency analyze tools

  • JDK 1.4 and 1.5 support

  • Customizable template support. More…
해당 플러그인에 대한 자세한 정보는 http://www.soyatec.com/euml2/ 에서 확인할 수 있다.

Written by everydayminder

August 6, 2009 at 00:02

Posted in java

Tagged with , , , ,