SqueakByExample:9.3

From 흡혈양파의 번역工房
Revision as of 01:38, 17 August 2012 by 221.112.56.98 (talk) (SBE 컬렉션의실행 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

9.3 컬렉션의 실행 (Implementations of collections)


그림 9.4: 실행 테크닉에 의해 범주화된 몇몇 컬렉션 클래스들


기능에 의한 이 범주화들은 우리의 유일한 관심이 아니며, 우리는 반드시 컬렉션 클래스들이 어떻게 실행되는지를 반드시 고려해야만 합니다. 그림 9.4에서 보이는 것 처럼, 5개의 실행 기술들이 차용되었습니다.

  1. 배열들은 그것들의 구성요소들을 컬렉션 오브젝트 자신의 색인가능(indexable) 인스턴스 변수들에 저장하며, 결과로서의 배열들은 반드시 고정되어야 하지만, 단일 메모리 배치와 (a single memory allocation)함께 만들어 질 수 있습니다.
  2. OrderedCollections와 SortedCollections는 그것들의 구성요소들을 컬렉션의 인스턴스 변수들중의 하나로 참조되는 배열 속에 저장합니다. 결과적으로, 내부 배열(the internal array)은 만약 컬렉션이 그것의 저장 용량을 넘어서서 커진다면, 더 큰 것으로 대체될 수 있습니다.
  3. 다양한 종류의 세트와 딕셔너리의 종류들 또한 저장(storage)장소를 위해 부차적인 배열(subsidiary array)을 참조하지만, hash table로서 배열(array)을 사용합니다. Bags는 키(keys)로서 bag의 구성요소들과 값(values)으로서 여러 개의 occurrence와 함께 부차적인 사전(subsidiary dictionary)을 사용합니다.
  4. LinkedLists는 표준 단일 링크 표현(a standard singly-linked representation)을 사용합니다.
  5. 인터벌은(Intervals) 두 개의 끝점(endpoints)가 스텝크기(step size)를 기록하는 3 개의 정수들에 의해 표현됩니다.

이 클래스들 뿐만 아니라, Array, Set 그리고 다양한 종류의 딕셔너리들이 있습니다. 이 컬렉션들은 그것들의 구성요소 위에 약하게 보유됩니다. 예를 들면, 구성요소들이 가비지 수집(garbage collected)이 되는 것을 막지 않는 방식입니다. 스퀵 가상 머신(The Squeak virtual machine)은 이 클래스들을 알고 있으며, 특별하게 취급(handle)합니다.

리더(Readers)는 스몰토크 컬렉션들이 LaLonde와 Phgh의 훌륭한책[1]을 좀더 참조한다는 것에 관한 학습에 흥미를 갖고 있습니다.

Notes

  1. Wilf LaLonde and John Pugh, Inside Smalltalk: Volume 1. Prentice Hall, 1990, ISBN 0–13– 468414–1.