Class relationship의 Type
정설은 아니지만 그래도 '현실 개발자' 입장에서 좀 더 명확한 구분을 해 볼 수 있다.
Dependency: 한 클래스의 객체가 다른 클래스의 객체를 잠시(단순히) 이용하는 관계. class 간의 가장 약한 관계인데 A 클래스가 B 클래스를 local variable 이나 method의 파라미터로만 사용하는 경우에 해당한다.
Association: 한 클래스의 객체가 다른 클래스의 객체를 일정 시간 이상 이용하는 경우를 통틀어 표현하는 관계. 대부분은 'Part of'의 의미가 아니거나 관계의 타입이 불분명한 경우. Dependency 이상의 관계인데 (attribute로 가지는 관계인데) aggregation인지 composition 인지 애매하면 그냥 association으로 나타내라. 불명확한 것을 굳이 표현하려고 애쓰면 오해가 생기기 마련.
Aggregation: 넓은 의미로는 (Shared) Aggregation과 Composition을 모두 포함함.
Dependency: 한 클래스의 객체가 다른 클래스의 객체를 잠시(단순히) 이용하는 관계. class 간의 가장 약한 관계인데 A 클래스가 B 클래스를 local variable 이나 method의 파라미터로만 사용하는 경우에 해당한다.
Association: 한 클래스의 객체가 다른 클래스의 객체를 일정 시간 이상 이용하는 경우를 통틀어 표현하는 관계. 대부분은 'Part of'의 의미가 아니거나 관계의 타입이 불분명한 경우. Dependency 이상의 관계인데 (attribute로 가지는 관계인데) aggregation인지 composition 인지 애매하면 그냥 association으로 나타내라. 불명확한 것을 굳이 표현하려고 애쓰면 오해가 생기기 마련.
Aggregation: 넓은 의미로는 (Shared) Aggregation과 Composition을 모두 포함함.
- (Shared) Aggregation: 'Part of'의 관계를 가지지만 Part가 독립적으로도 존재가능할 때. 'Part'가 여러 다른 Class의 'Part'도 되는 경우. 'Whole'을 삭제하여도 'Part'는 남아 있는 경우. Composition과 구분 지어서 생각하는 'Aggregation'일 때는 이 경우이다.
- Composition: 'Whole'과 'Part'가 생명 주기를 같이 하는 경우. 'Whole'로의 multiplicity는 항상 1이다.
Generalization: super class의 attribute, operations, associations, aggregations 가 모두 sub class에 전달되는 경우. 위의 4가지 경우와 가장 큰 차이점은 compile time에 결정되는 관계라는 점.
0개의 덧글:
댓글 쓰기
에 가입 댓글 [Atom]
<< 홈