1.3.2.3. 관계(집합 관계)

2021. 3. 9. 12:43·Computer Science/Design Pattern
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();
    }
}

 

'Computer Science/Design Pattern' 카테고리의 다른 글
  • [Design Pattern] 생성 패턴 - 싱글톤 패턴(Singleton Pattern)
  • 디자인 패턴(Design Pattern)이란?
  • 1.3.2.2 관계(일반화 관계)
  • 1.3.2.1 관계(연관 관계)
s_y_130
s_y_130
  • s_y_130
    About SY
    s_y_130
  • 전체
    오늘
    어제
    • 분류 전체보기 (439) N
      • JAVA (54)
        • 더 자바 8 (0)
        • JAVA (41)
        • JAVA (JVM) (13)
      • Computer Science (86)
        • CS Basic (7)
        • OOP (11)
        • Design Pattern (16)
        • Network (8)
        • HTTP (6)
        • WEB (22)
        • OS (16)
      • DataBase (29)
        • DB theory (15)
        • MySQL (14)
        • Redis (0)
      • Collection Framework (1)
        • 구현 (1)
      • Data Structure (14)
        • Linear (9)
        • Non-Linear (5)
      • Algorithm (19)
        • Basic (12)
        • 응용 (2)
        • 완전 탐색(Brute Force) (1)
        • 다익스트라 (1)
        • Algorithm Problem (3)
      • Spring (104)
        • 스프링 핵심 원리 - 기본편 (9)
        • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (7)
        • 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 (11)
        • 스프링 DB 1편 - 데이터 접근 핵심 원리 (6)
        • 스프링 DB 2편 - 데이터 접근 활용 기술 (10)
        • 스프링 핵심 원리 - 고급편 (13)
        • 스프링 부트 - 핵심 원리와 활용 (9)
        • Spring Security 6.x (2)
        • Spring Batch (2)
        • Spring Cloud로 개발하는 MSA (1)
        • 재고시스템으로 알아보는 동시성이슈 해결방법 (4)
        • 개념 (27)
        • 테스트 (0)
        • Annotation (1)
        • Error Log (2)
      • TEST (0)
        • 부하 테스트 (0)
        • Practical Testing: 실용적인 테스트.. (0)
      • JPA (40)
        • 자바 ORM 표준 JPA 프로그래밍 (12)
        • 1편- 실전! 스프링 부트와 JPA 활용 (7)
        • 2편- 실전! 스프링 부트와 JPA 활용 (4)
        • 실전! 스프링 데이터 JPA (6)
        • 실전! Querydsl (6)
        • 개념 (5)
      • 백엔드 부트캠프[사전캠프] (35)
        • TIL (12)
        • 문제풀이 (23)
      • 백엔드 부트캠프 (8) N
        • Calculator (3)
        • Kiosk (5) N
      • Open Source (0)
      • Book Study (1)
        • Morden Java in Action (1)
        • Real MySQL 8.0 Vol.1 (0)
        • TDD : By Example (0)
      • AWS (0)
        • EC2 (0)
      • git (2)
      • AI (22)
        • Machine Learning (17)
        • Deep Learning (0)
        • TensorFlow (1)
        • PyTorch (1)
        • YOLO (1)
        • Data Analysis (0)
        • Ai code Error (1)
        • Numpy (1)
      • MY (0)
      • WEB (15)
        • Django (3)
        • WEB 개념 (1)
        • React (1)
        • Maven (10)
      • Python (6)
      • 기초수학 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s_y_130
1.3.2.3. 관계(집합 관계)
상단으로

티스토리툴바