컬렉션 클래스(와, 그 서브 클래스)는 스몰토크언어의 특징중 하나입니다. 다른 언어에서는 줄줄이 기술해야하는 코드가, 스몰토크에서는 단 하나의 메시지로 끝납니다. 무언가를 학습하는 가장 좋은 방법은, 그것을 직접 경험해보는 것입니다. SortedCollection도 예외는 아닙니다.
이 레슨에서는 SortedCollection을 소개하고, 그 특징적인 기능을 몇 가지 기술하겠습니다.
1. VisualWorks를 실행시켜 주십시오.
2. VisualWorks 메인 런쳐 화면에서 툴바 맨 끝 버튼을 클릭하거나, 메뉴에서 Tool>>Workspace 를 선택해 주십시오.
새로운(Inspector) 화면이 표시됩니다. 화면의 타이틀은 a Sortedcollection입니다.
5. Inspector 화면의 왼쪽 창에 표시된 self를 클릭(반전)해 주십시오.
SortedCollection ('apple' 'cat' 'dog')이 표시됩니다.
6. Inspector 화면의 왼쪽 창에 표시된 1을 클릭(반전)해 주십시오.
'apple'이 표시됩니다.
그림 S-1. SortedCollection의 Inspector 화면
그림 S-2. Sortedcollection의 "최초" 항목
7. Inspector 화면을 닫아 주십시오.
SortedCollection의 동작을 확인할 수 있었습니까?
SortedCollection의 정의는, 수집한 모든 것을 정렬, 혹은 오더 순으로 놓습니다. 위의 예시에서는 집합에 문자열을 넣었기 때문에 알파벳순으로 정렬이 되었습니다. 즉, 넣은 것은 정렬 순으로 격납됩니다. 또한, 순서를 거꾸로 한 경우, 정렬 블록을 필요로 합니다. 위의 결과와 아래의 결과를 비교해 주십시오.
새로운(Inspector) 화면이 표시됩니다. 화면의 타이틀은 "a SortedCollection"입니다.
10. Inspector 화면의 왼쪽창에 표시된 self를 클릭(반전)해 주십시오.
SortedCollection ('dog' 'cat' 'apple')이 표시됩니다.
11. Inspector 화면 왼쪽 창에 표시되어있는 1을 클릭(반전)해 주십시오.
'dog'가 표시됩니다.
그림 S-3. SortedCollection의 인스팩터 화면
그림 S-4. SortedCollection의 "최초" 항목
12. Inspector 화면을 닫아 주십시오.
SortedCollection의 동작을 확인할 수 있었습니까?
최초 행에서는 임시변수 mySort를 선언하였습니다. 두 번째 행에서는 새로운 SortedCollection객체의 작성을 스몰토크에 지시하고, 임시변수에 대입했습니다. 세 번째 행에서는 SortedCollection 객체에 'cat'문자열을 추가했습니다. 다음 행에서는 SortedCollection 객체에 'apple' 문자열을 추가하고, 마지막은 'dog' 문자열을 추가했습니다. 그리고 SortedCollection 객체를 Inspect하는 지시를 Smalltalk에 지시했습니다.
SortedCollection객체에 무언가를 추가할 때마다, Smalltalk는 정렬순으로 컬렉션에 추가합니다. 아무것도 하지 않으면 오름차순이 적용됩니다. 하지만, 정렬 블록을 사용함으로 인해 정렬순을 변경할 수 있습니다. [:a :b 블록의 구문을 너무 깊게 들여다 보진 마십시오. 다음과 같이 생각해 주십시오. : "SortedCollection (a와 b)의 두 아이템은, 특정 아이템과 다른 아이템을 작은지 같은지 비교합니다." < 문자를 > 문자로 바꾸면 정렬순이 역순이 됩니다. 수많은 프로그래밍 언어에서는 자신이 정렬 코드를 적어야 할 필요가 있습니다. Smalltalk에서는 언어에 들어가 있습니다.