다음은 GoF Iterator 설계 패턴의 클래스 다이어그램이다. 해당… | [7급 국가직 소프트웨어공학] 26년 1회차 기출문제 상세 페이지
1[7급 국가직 소프트웨어공학] 26년 1회차
다음은 GoF Iterator 설계 패턴의 클래스 다이어그램이다. 해당 다이어그램에 대한 설명 중에서 옳지 않은 것은?
1
복합 객체 요소의 내부 구조를 외부에 노출하지 않고 순차적으로 접근하기 위한 설계 패턴이다.
2
Java 언어의 Vector와 같이 불규칙한 크기의 객체 집합인 자료구조에는 적용할 수 없다.
3
Aggregate 인터페이스는 Client가 Iterator를 생성할 수 있도록 한다.
4
ConcreteAggregate는 적합한 ConcreteIterator의 인스턴스를 반환하기 위한 인스턴스 생성 인터페이스를 구현한다.
해설
Vector처럼 크기가 변하는 객체 집합에는 적용할 수 없다는 설명이 옳지 않다. Iterator 패턴은 집합의 내부 구조와 무관하게 순회 방법을 제공하는 것이 목적이다.
Client는 Aggregate의 createIterator()로 Iterator를 얻고 hasNext()·getNext()로 순회하므로, 배열·리스트·가변 크기 컬렉션 어느 쪽이든 ConcreteIterator만 맞게 구현하면 적용된다. 실제로 Java의 Vector도 Iterator를 제공한다.
- 복합 객체의 내부 구조를 노출하지 않고 요소에 순차 접근하게 한다는 설명은 Iterator 패턴의 의도 그대로이다.
- Aggregate 인터페이스가 createIterator()를 선언해 Client가 Iterator를 생성할 수 있게 한다는 설명은 다이어그램과 맞다.
- ConcreteAggregate가 알맞은 ConcreteIterator 인스턴스를 반환하는 생성 인터페이스를 구현한다는 설명도 옳다. 메모처럼 createIterator()는 factory method 역할을 한다.
오류나 개정된 내용이 보이면 알려주세요
