OOP/OOP Basic

[OOP] 합성관계와 집합관계

IT록흐 2022. 10. 12. 05:38
반응형

 

 

 

합성관계(Compostion)와 집합관계(Aggregation)는

전체와 부분을 나타내는 관계로

 

부분객체의 생성권한이 어디있느냐로 구분된다.

 

 

합성관계(Composition)

 

전체객체가 부분객체의 제어권을 갖는다. 예를 들면, 일체형 컴퓨터 같은거다.

 

 

public class Computer{

	private MainBoard mb;
    private CPU cpu;
    private Memory memory;
    
    
    public Computer(){
   		this.mb = new MainBoard(); //객체생성
        this.cpu = new CPU(); // 객체생성
        this.memory = new Memory(); //객체생성
    }
    
}

 

 

Computer 객체가 생성될 때, MainBoard,CPU,Memory 객체도 생성된다. 그리고 생성된 객체의 주소는 Computer 객체의 필드변수에 저장된다. 고로, Computer 객체가 사라지면  MainBoard,CPU,Memory 객체도 사라진다. 이렇게 전체와 부분의 라이프타임이 같은 관계를 두고 '합성관계'라 부른다. 

 

 

집합관계(Aggregation)

 

전체객체가 부분객체의 제어권을 갖지 못한다. 예를 들면, 조립형 컴퓨터 같은거다.

 

public class Computer{

	private MainBoard mb;
    private CPU cpu;
    private Memory memory;
    
    
    public Computer(MainBoard mb, CPU cpu, Memory memory){
   		this.mb = mb; 
        this.cpu = cpu;
		this.memory =  memory;
	}	
}

 

Computer 객체가 생성될 때, 이미 생성되어 있는 MainBoard,CPU,Memory 객체를 생성자 인수로 가져온다. 고로 Computer 객체가 사라져도 메모리 상에 MainBoard,CPU,Memory 객체는 사라지지 않는다. 이렇게 전체와 부분의 라이프 타임이 다른 관계를 두고 '집합관계'라 부른다. 

 

 

그러므로 전체객체와 부분객체의 결합도에 따라, 합성관계로 할지 집합관계로 할지 결정하면 된다. 

 

 

참고자료

 

JAVA 객체지향 디자인 패턴 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

 

 

반응형

'OOP > OOP Basic' 카테고리의 다른 글

[OOP] 일반화(추상화)  (0) 2022.10.17
[OOP] 캡슐화  (0) 2022.10.17
[OOP] 의존관계  (0) 2022.10.12
[OOP] 연관관계(2) - Vector의 사용  (0) 2022.01.30
[OOP] 연관관계 (1)  (0) 2022.01.29