(U) UML 클래스간 관계(association, composition, aggregation, dependency) - brodieroy/Study GitHub Wiki

####Has a 관계

  1. 객체가1. 자신의 클래스 타입이 아닌 객체를 포함하는 구조 (포함관계)
  2. Aggregation Relation : 포함하는 객체와 포함되는 객체의 수명이 다른 경우 - 지역(메서드에서 생성)
  3. Composition Relation : 포함하는 객체와 포함되는 객체의 수명이 같은 경우 - 멤버(메서드에서 생성)
    ####Is a 관계 : 상속관계
  4. extends, implements

#####example code UML관계1

#####1. association(연관관계)

  1. 클래스로 생성된 객체간의 연관관계. 다른 클래스의 변수나 매서드 혹은 객체를 참조 표현하고자 할 경우 role name을 사용한다. 가리키는 방법은 양방향과 단방향이 있다.
  2. ex) A와 D의 관계는 "association" 이다. D 의 life cycle과 A의 life cycle은 서로 연관이 없다. aggregation 과 차이는 A class 가 D 의 instance를 가질 수도 있고 안 가질 수도 있다는 것이다. A class를 사용하는 곳에서 "setValue()" method를 사용할 수도 안 할 수도 있기 때문에 A와 D는 association 관계에 있지만, aggregation 관계는 아닌 것이다.
  3. UML관계2

#####1-2. composition(복합 연관관계)

  1. 두 클래스간의 부분 - 전체 관계, 라이프사이클이 종속적
  2. has a 관계
  3. ex) A와 B 의 관계는 composition 이다. B의 instance는 A와 life cycle을 같이 하고 있기 때문이다.
  4. 선분과 속이 찬 마름모로 표현 UML관계3

#####1-3. aggregation(집합연관관계)

  1. 두 클래스간의 부분 - 전체 관계
  2. 라이프 사이클 독립적.
  3. has a 관계
  4. ex) A와 C의 관계는 aggregation 이다.
    C 의 instance는 외부에서 만들어지기 때문에 A 의 life cycle와 전혀 상관이 없다.
  5. 선분과 속이 빈 마름모로 사용 UML관계4

#####2. dependency(의존관계)

  1. 한클래스가 다른 클래스를 사용.
  2. 한 클래스의 변화가 다른 클래스에 영향을 주는 관계(역은 성립하지 않음).
  3. 사용되는 클래스가 사용하는 클래스의 매소드 파라미터, 매소드 로컬변수, 전역변수로 사용되는 경우, 인스턴스변수는 제외
  4. ex) association 과 dependency 를 구분하는 기준은 instance의 reference가 유지 되느냐 여부이다. E의 instance는 isDependency method 내부에서 사용하고 바로 소멸되기 때문에 이 경우는 dependency 인 것이다.
  5. 점선과 화살표로 표시 UML관계5

#####3. realization(실체화, 권력화)

  1. 인터페이스와 실제 구현된 클래스간의 관계 UML관계6

#####4. generalization(일반화)

  1. 여러 클래스가 가진 공통적인 특징을 추출하여 클래스를 일반화 시키는 의미이며 클래스간의 관계는반드시 is a관계여야 한다. 즉 상속을 의미한다
  2. 실선과 화살표로 표시 UML관계7