IT노트/기타
[소프트웨어] Composition vs Aggregation
건리버
2020. 4. 29. 17:23
728x90
반응형
소프트웨어 특히 OOP(Object-Oriented Programming)를 다룰 때 클래스간의 관계를 나타내기 위해 Class Diagram을 그리곤 한다. 이 때 헷갈리는 부분이 Compotition(구성) 과 Aggregation(집합)의 차이이다. 둘 다 전체와 부분이라는 점에서 동일하지만 생명 주기로 보면 차이가 있기 때문에 화살표의 모양도 다르게 그린다. 잘 정리된 블로그가 있어 블로그 링크(맨아래)와 함께 요약해 보았다.
Composition은 전체와 부분이 강력한 연관 관계를 맺으며, 전체와 부분이 같은 생명 주기를 갖는다.
( 'Car' 와 'Engine' 의 관계 )
( 'House' 와 'Room' 의 관계 )
public class Engine
{
......
}
public class Car
{
Engine e = new Engine();
.......
}
Aggregation은 전체와 부분의 연관 관계를 맺지만, 그러나 동일한 생명 주기를 갖지는 않는다.
( 'Person' 과 'Address' 의 관계 )
( '역사과목' 과 '학생' 의 관계 )
public class Address
{
......
}
public class Person
{
private Address address;
public Person(Address address)
{
this.address = address;
}
......
}
728x90
반응형