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;
     }
     ......
}

https://sonsooresoon.tistory.com/entry/Aggregation-%EA%B3%BC-Composition-%EC%9D%98-%EC%B0%A8%EC%9D%B4

728x90
반응형

+ Recent posts