GnuSmalltalkUsersGuide:BaseChapter 001
- 제 1 장. 기반 클래스
기반 클래스
AbstractNamespace
네임스페이스 Smalltalk에 정의됨
슈퍼클래스: BindingDictionary
범주: 언어-구현
- 나는 특별한 형태의 dictionary 이다. 클래스들은 나의 인스턴스를 보유한다; 이것을 클래스의 '환경'이라 부른다.
AbstractNamespace class: 인스턴스 생성
new
비활성화됨 – 인스턴스를 생성하기 위해 #new를 사용하라.
primNew: parent name: spaceName
private – 주어진 이름과 부모로 새로운 네임스페이스를 생성하고, 그것을 참조하는 키를 부모로 추가하라.
AbstractNamespace: 접근하기
allAssociations
수신자 내에 연관(association)과 각 슈퍼스페이스가 있는 Dictionary를 응답하라 (중복 키는 네임스페이스 계층구조에서 더 깊이 위치한 연관과 관련이 있다)
allBehaviorsDo: aBlock
네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라.
allClassObjectsDo: aBlock
네임스페이스 내에서 각 클래스와 메타클래스마다 aBlock을 한 번씩 평가하라.
allClassesDo: aBlock
네임스페이스 내에서 각 클래스마다 aBlock을 한 번씩 평가하라.
allMetaclassesDo: aBlock
네임스페이스 내에서 각 메타클래스마다 aBlock을 한 번씩 평가하라.
classAt: aKey
aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 실패한다.
classAt: aKey ifAbsent: aBlock
aKey에 일치하는 값이 클래스일 경우 그 값을 응답하라. aBlock을 평가하고, aKey를 찾을 수 없거나 클래스가 아닌 것과 연관된 경우 결과를 응답하라.
AbstractNamespace: 컴파일하기
나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라 (import).
import: aDictionary
나를 이용해 컴파일한 클래스에 주어진 바인딩을 환경으로 가져오라.
직접 풀(direct pool) 리스트에서 aDictionary를 제거하라.
내 클래스를 위해 가져온 공유 풀(이름이 아닌)을 응답하라.
AbstractNamespace: 복사하기
copyEmpty: newSize
크기가 newSize인 수신자의 빈 복사본을 응답하라.
whileCurrentDo: aBlock
현재 수신자로 설정된 네임스페이스로 aBlock을 평가하라. 평가 결과를 응답하라.
AbstractNamespace: 네임스페이스 계층구조
addSubspace: aSymbol
aSymbol로 명명된 네임스페이스를 생성하고, 수신자의 서브스페이스로 추가한 후 그것을 응답하라.
allSubassociationsDo: aBlock
수신자의 각 서브스페이스 내에서 모든 연관마다 aBlock을 한 번씩 호출하라.
allSubspaces
Set에서 수신자의 직접 및 간접 서브스페이스를 응답하라.
allSubspacesDo: aBlock
모든 직접 및 간접 서브스페이스에 대해 aBlock을 호출하라.
allSuperspacesDo: aBlock
수신자의 슈퍼스페이스마다 aBlock을 한 번씩 호출하라.
includesClassNamed: aString
수신자 또는 그 슈퍼스페이스가 주어진 클래스를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않고, (#includesGlobalNamed:와 달리) 전역 변수가 클래스 객체인 경우 true를 리턴하기만 한다는 사실을 주목한다.
includesGlobalNamed: aString
수신자 또는 그 슈퍼스페이스 중 어떤 것이 주어진 키를 포함하는지 여부를 응답하라-해당 메서드는 (#includesKey: 와 달리) aString이 intern 되도록 요구하지 않지만, (#includesClassNamed:와 달리) 전역 변수가 클래스 객체가 아닌 경우에도 true를 리턴한다는 사실을 주목한다.
removeSubspace: aSymbol
aSymbol로 명명된 나의 서브스페이스를 계층구조에서 제거하라.
selectSubspaces: aBlock
aBlock을 충족시키는 수신자의 서브스페이스 Set를 리턴하라.
selectSuperspaces: aBlock
aBlock을 충족시키는 수신자의 슈퍼스페이스 Set를 리턴하라.
siblings
수신자와 같은 네임스페이스의 다른 자식들을 모두 응답하라.
siblingsDo: aBlock
다른 루트 네임스페이스마다 aBlock을 한 번씩 평가하여 네임스페이스를 매개변수로서 전달하라.
subspaces
수신자의 직접 서프스페이스를 응답하라.
subspacesDo: aBlock
모든 직접 서브스페이스에 aBlock을 호출하라.
superspace
수신자의 슈퍼스페이스를 응답하라.
superspace: aNamespace
수신자의 슈퍼스페이스가 'aNamespace' 가 되도록 설정하라. 또한 수신자를 그것의 서브스페이스로서 추가하라.
withAllSubspaces
직접 및 간접 서브스페이스와 함께 수신자를 포함하는 Set를 응답하라.
withAllSubspacesDo: aBlock
수신자와 모든 직접 및 간접 서브클래스에 대해 aBlock을 호출하라.
AbstractNamespace: 슈퍼스페이스 오버라이드
inheritedKeys
수신자와 그 슈퍼스페이스 내에서 모든 키의 Set를 응답하라.
set: key to: newValue
newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 어떤 슈퍼스페이스에서도 변수를 찾을 수 없을 경우 오류를 발생시킨다. newValue를 응답하라.
set: key to: newValue ifAbsent: aBlock
newValue 를 'key'에서 명시한 대로 명명된 변수로 할당하라. 해당 메서드는 새 변수를Assign 정의하지 않을 것이다; 대신 키를 찾을 수 없다면 슈퍼스페이스에서 찾고, 찾을 수 없다면 aBlock을 평가할 것이다. newValue를 응답하라.
values 수신자의 값을 포함하는 Bag를 응답하라.
AbstractNamespace: 인쇄하기
name
수신자명을 응답하라.
name: aSymbol
수신자명을 aSymbol로 변경하라.
nameIn: aNamespace
현재 네임스페이스가 aNamespace일 때 수신자로 컴파일하는 스몰토크 코드를 응답하라.
printOn: aStream
수신자의 표현을 인쇄하라.
storeOn: aStream
수신자로 컴파일하는 스몰토크 코드를 보관하라.
AbstractNamespace: 검사하기
isNamespace
'true'를 응답하라.
isSmalltalk
'false'를 응답하라.