Computer Science/Design Pattern

1.3.2.3. 관계(집합 관계)

s_y_130 2021. 3. 9. 12:43
JAVA 객체지향 디자인 패턴<UML과 GoF 디자인 패턴 핵심 10가지로 배우는> 정리

 

UML 연관 관계의 특별 경우로 전체와 부분의 관계를 명확하게 명시하고자 사용한다.

 

 

1. 집약 관계(aggregation)

  • 객체가 다른 객체를 포함하는
    • '부분' 나타내는 객체를 다른 객체와 공유할 있다.
  • '전체' 가리키는 클래스 방향에 마름모로 표시
  • 전체 객체의 라이프타임과 부분 객체의 라이프타임은 독립적이다.
    • 전체 객체가 메모리에서 사라진다 해도 부분 객체는 사라지지 않는다.
// Ex) 생성자에서 참조값을 인자로 받아 필드를 세팅한다.
public class Computer {
    private MainBoard mb;
    private CPU c;
	
    //생성자
    public Computer(MainBoard mb, CPU c) {
        this.mb = mb;
        this.c = c;
    }
}

 

 

 

2. 합성 관계(composition)

  • 부분 객체가 전체 객체에 속하는 관계
    • '부분' 나타내는 객체를 다른 객체(여러 전체 객체 혹은 다른 '부분' 객체) 공유할 없다.
  • '전체' 가리키는 클래스 방향에 채워진 마름모로 표시
  • 전체 객체의 라이프타임과 부분 객체의 라이프타임은 의존적이다.
    • 전체 객체가 없어지면 부분 객체도 없어진다.
// Ex) 생성자에서 필드에 대한 객체를 생성한다.
public class Computer {
    private MainBoard mb;
    private CPU c;
    
    //생성자
    public Computer() {
    	this.mb = new MainBoard();
		this.c = new CPU();
    }
}