내포 클래스를 사용 안 할 경우
다음 클래스 다이어그램 (이 그림을 보고 아래 문제에 답하라)
┌────────────────┐ 0..* 1 ┌──────────────┐
│ RecordReader │◇──────────────│ Record │
└────────────────┘ └──────────────┘
(◇ = 빈 다이아몬드)빈 다이아몬드(◇)는 무슨 관계를 나타내는가?
has-a 관계 (집합, aggregation)
- 한 클래스가 다른 클래스를 멤버로 가지고 있음(참조함)
- 퉁쳐서 컴포지션이라고도 부름
- 여기서는
RecordReader가Record를 참조 (생성자에서 받아 멤버 변수로 가짐)
다이아몬드는 어느 클래스 쪽에 붙는가?
가지고 있는(참조하는) 쪽 = RecordReader
RecordReader가Record를 가지므로RecordReader끝에 다이아몬드가 붙음
다이아몬드가 없는 쪽(Record) 숫자 1의 의미는?
RecordReader 하나는 정확히 1개의 Record를 참조함
- 참조 대상은 하나의
Record뿐
다이아몬드가 있는 쪽(RecordReader) 숫자 0..*(0개 이상)의 의미는?
하나의 Record를 0개 이상의 RecordReader가 참조할 수 있음
- 즉
Record사본을 만들지 않고, 같은Record를 여러RecordReader가 공유 가능