Part3) CH7. 합성과 집합

songtofu·2022년 12월 5일
0

전문가를 위한 C

목록 보기
7/10
  • to-be관계 = 상속 (다음 장)

7.3) 합성

  • 한 객체가 다른 객체를 포함하거나 소유할 떄, 즉 한 객체가 다른 객체로 구성될 떄, 이들 객체 사이에 합성 관계가 있다고 할 떄 사용.
  • 컨테이너에 포함된 객체의 수명은 컨테이너 객체의 수명에 바인딩 된다.
  • 포함된 객체의 수명은 컨테이너 객체에 의해 내부적으로 반드시 관리
  • 합성관계 구현할 떄 포인터 유출 X. 유출되면, 포함된 객체의 상태를 외부 코드가 변경할 수 있음.
  • 같은 자료형이 아닌 두 객체는 상대의 구현에 대한 세부 사항은 몰라야한다. = 정보 은닉에서 따라야하는 규칙
    ex. 차와 엔진

7.4) 집합

  • 다른 객체를 포함하는 컨테이너 객체를 동반. 컨테이너에 포함된 객체의 수명이 컨테이너 객체의 수명에 독립적이다.
  • 집합 포인터 생성 시 설정되어야 한다면, 대상 객체의 주소를 생성자의 인수로 전달해야함. (의무적 집합)
  • 집합 포인터가 생성자에서 NULL로 남아있을 수 있다면 선택적 집합.
  • 집합 관계가 종료된 뒤 포인터를 NULL로 두어야함.
    ex.player와 gun
  • 집합 관계가 두 객체 사이에 일시적이라면, 객체에 해당하는 클래스 사이에서도 관계가 일시적? ㄴㄴㄴㄴ. 집합 관계는 클래스에서 영구적. 합성도 마찬가지로 영구적.
profile
읽으면 머리에 안들어와서 직접 쓰는 중. 잘못된 부분 지적 대환영

0개의 댓글