내포 클래스를 사용 안 할 경우

다음 클래스 다이어그램 (이 그림을 보고 아래 문제에 답하라)

┌────────────────┐ 0..*        1 ┌──────────────┐
│ RecordReader   │◇──────────────│ Record       │
└────────────────┘               └──────────────┘
    (◇ = 빈 다이아몬드)

빈 다이아몬드(◇)는 무슨 관계를 나타내는가?

has-a 관계 (집합, aggregation)

  • 한 클래스가 다른 클래스를 멤버로 가지고 있음(참조함)
  • 퉁쳐서 컴포지션이라고도 부름
  • 여기서는 RecordReaderRecord를 참조 (생성자에서 받아 멤버 변수로 가짐)

다이아몬드는 어느 클래스 쪽에 붙는가?

가지고 있는(참조하는) 쪽 = RecordReader

  • RecordReaderRecord를 가지므로 RecordReader 끝에 다이아몬드가 붙음

다이아몬드가 없는 쪽(Record) 숫자 1의 의미는?

RecordReader 하나는 정확히 1개의 Record를 참조함

  • 참조 대상은 하나의 Record

다이아몬드가 있는 쪽(RecordReader) 숫자 0..*(0개 이상)의 의미는?

하나의 Record를 0개 이상의 RecordReader가 참조할 수 있음

  • Record 사본을 만들지 않고, 같은 Record를 여러 RecordReader가 공유 가능

0건의 항목