자바(SE)

클래스간의 관계

  • -
반응형

클래스간의 관계는 통상 4단계로 구별할 수 있다.

 

1. dependency: 

 - 의존 관계( A ------> B: A는 B에 의존한다.)

 - 의존 관계로 모든 객체들은 대부분 의존 관계를 갖는다.

 - A 클래스에서 B 클래스를 사용하고 있다면 이것은 dependency 관계이다.

 - 왜냐하면 B를 변경하게 되면 A가 영향을 받기 때문이다.


2. association:

 - 의존 관계 중 member 변수 관계(A-B: A는 B를 포함한다.)

 - A 클래스가 B 클래스를  맴버변수로 포함해서 의존하는 관계
 - 학생이 차를 소유한다: 학생 - 차
 - 학생이 라디오를 소유한다. - 라디오  

 

굳이 association을 세분화 한다면..


3. aggregation: 

 - association 중 whole - part 관계(A◇-B: A는 B를 부품으로 포함한다.)

 - A 클래스가 B를 맴버 변수로 포함해서 의존하는데 부품으로 존재하는 경우

 - 이때 A와 B는 라이프사이클리 다를 수 있다.
 - 차 - 블랙박스 : 카의 부품 (차를 구입한 후 블랙박스를 추가로 장착할 수 있다.)

4. composition: 

 - association 중 life cyclel 일치하는 경우(A◆-B: A는 B와 라이프사이클이 일치하게 포함한다.)

 - A 클래스가 B를 맴버 변수로 포함하는데 A가 생성되면서 B도 생성되는 관계

 - 차 - 엔진: 차가 만들어질 때 엔진도 같이 생성한다.

 

aggregation 부터는 UML 2.0 부터 없어질 위기에 있었지만 기존 버전과의 호환성 때문에 목숨을 유지하고 있다. 개발자 입장에서 굳이 aggregation인지, composition인지 고민할 필요 없이 association까지만 쓰면 될듯~

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.