GnuSmalltalkUsersGuide:BaseChapter 031
- Class
Class
네임스페이스 Smalltalk에 정의됨
슈퍼클래스: ClassDescription
범주: 언어-구현
- 내가 바로 그 유명한 클래스 객체다. 나의 인스턴스들은 시스템의 클래스들이다. 나는 보통 클래스에 기인하는 정보를 제공한다; 즉, 클래스명, 클래스 주석(내가 없었다면 당신이 이 글을 읽을 일도 없다), 클래스의 인스턴스 변수 리스트, 클래스 범주.
Class 클래스: 초기화하기
initialize
루트 클래스의 특수 초기화를 실행하라.
Class: 인스턴스와 변수 접근하기
addClassVarName: aString
주어진 이름으로 된 클래스 변수를 클래스 풀 dictionary로 추가하라.
addClassVarName: aString value: valueBlock
주어진 이름으로 된 클래스 변수를 클래스 풀 dictionary로 추가하고 valueBlock을 그 initializer로서 평가하라.
주어진 공유 풀을 클래스의 풀 dictionary 리스트에 추가하라.
allClassVarNames
수신자의 클래스 풀 dictionary 내와 슈퍼클래스의 클래스 풀 dictionary마다 존재하는 변수명을 응답하라.
bindingFor: aString
주어진 이름으로 된 클래스 변수에 대한 변수 바인딩을 응답하라.
category
클래스 범주를 응답하라.
category: aString
클래스 범주를 aString으로 변경하라.
classPool
클래서 풀 dictionary를 응답하라.
classPragmas
이 클래스의 file-out으로 작성된 pragmas를 리턴하라.
classVarNames
클래스 풀 dictionary 내의 변수명을 응답하라.
comment
클래스 주석을 응답하라.
comment: aString
클래스명을 변경하라.
environment
'environment'를 응답하라.
environment: aNamespace
수신자의 환경을 aNamespace로 설정하고 모든 것을 재컴파일하라.
initialize
자식들(children)에게서 재정의됨 (?)
initializeAsRootClass
루트 클래스로 예약(reserved)된 특수 초기화를 실행하라.
name
클래스명을 응답하라.
removeClassVarName: aString
클래스로부터 클래스 변수를 제거하되 클래스 변수가 존재하지 않거나 아직 사용 중인 경우 오류가 발생한다.
클래스의 풀 dictionary 리스트에 주어진 dictionary를 제거하라.
클래스가 정의한 공유 풀의 이름을 리턴하라.
superclass: aClass
수신자의 슈퍼클래스를 설정하라.
Class: 정리하기
fileOutDeclarationOn: aFileStream
클래스 정의를 aFileStream으로 file out하라. Parser 패키지가 필요하다.
fileOutOn: aFileStream
완전한 클래스 설명을 file out하라: 클래스 정의, 클래스 및 인스턴스 메서드. Parser 패키지가 필요하다.
Class: 인스턴스 생성
extend
현재 네임스페이스에 수신자의 버전을 재정의하라. 주목: 해당 메서드는 시스템 클래스로 전송 시 다양한 방식으로 문제를 야기할 수 있다; 직면할 수 있는 문제의 예는 매뉴얼에서 네임스페이스와 관련된 절을 참조하길 바란다.
subclass: classNameString
주어진 이름으로 된 수신자의 서브클래스를 정의하라. 클래스가 이미 정의되어 있다면 그 인스턴스나 클래스 변수를 수정하지 않으나 불가피하다면 필요한 모든 것을 재컴파일하라.
subclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames category: categoryNameString
주어진 이름, 인스턴스 변수, 클래스 변수, 풀 dictionary, 범주로 수신자의 고정된 서브클래스를 정의하라. 클래스가 이미 정의되어 있는 경우 꼭 필요하다면 모든 것을 재컴파일하라.
#short
variable: shape subclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames category: categoryNameString
주어진 이름, 모양, 인스턴스 변수, 클래스 변수, 풀 dictionary, 범주로 수신자의 가변(variable) 서브클래스를 정의하라. 클래스가 이미 정의되어 있는 경우 꼭 필요하다면 모든 것을 재컴파일하라. 모양은 #byte #int8 #character #short #ushort #int #uint #int64 #uint64 #utf32 #float #double #pointer 중 하나로 가능하다.
variableByteSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames category: categoryNameString
주어진 이름, 인스턴스 변수("일 것이다), 클래스 변수, 풀 dictionary, 범주로 수신자의 바이트 가변 서브클래스를 정의하라. 클래스가 이미 정의되어 있는 경우 꼭 필요하다면 모든 것을 재컴파일하라.
variableSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames category: categoryNameString
주어진 이름, 인스턴스 변수, 클래스 변수, 풀 dictionary, 범주로 수신자의 가변 포인터 서브클래스를 정의하라. 클래스가 이미 정의되어 있는 경우 꼭 필요하다면 모든 것을 재컴파일하라.
variableWordSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames category: categoryNameString
주어진 이름, 인스턴스 변수("일 것이다), 클래스 변수, 풀 dictionary, 범주로 수신자의 워드 가변 서브클래스를 정의하라. 클래스가 이미 정의되어 있는 경우 꼭 필요하다면 모든 것을 재컴파일하라
Class: 인스턴스 생성 - 대안적 방법
categoriesFor: method are: categories
IBM Smalltalk로부터 file in용으로만 존재하므로 사용하지 말라.
subclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames
IBM Smalltalk로부터 file in용으로만 존재하므로 사용하지 말라.
subclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames
IBM Smalltalk로부터 file in용으로만 존재하므로 사용하지 말라.
variableByteSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames
IBM Smalltalk로부터 file in용으로만 존재하므로 사용하지 말라.
variableByteSubclass: classNameString classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames
IBM Smalltalk로부터 file in용으로만 존재하므로 사용하지 말라.
variableLongSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames
IBM Smalltalk로부터 file in용으로만 존재하므로 사용하지 말라.
variableLongSubclass: classNameString classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames
IBM Smalltalk로부터 file in용으로만 존재하므로 사용하지 말라.
variableSubclass: classNameString classInstanceVariableNames: stringClassInstVarNames instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames
IBM Smalltalk로부터 file in용으로만 존재하므로 사용하지 말라.
variableSubclass: classNameString instanceVariableNames: stringInstVarNames classVariableNames: stringOfClassVarNames poolDictionaries: stringOfPoolNames
IBM Smalltalk로부터 file in용으로만 존재하므로 사용하지 말라.
Class: pragmas
pragmaHandlerFor: aSymbol
pragma aSymbol을 위해 (어쩌면 상속된) 등록된 처리기를 응답하고, 찾을 수 없다면 nil을 응답하라.
registerHandler: aBlock forPragma: pragma
주어진 이름으로 된 pragma를 마주칠 때마다 메서드를 컴파일하면서 CompiledMethod과 pragma 인자값의 배열을 이용해 aBlock을 호출하라.
Class: 인쇄하기
article
수신자명으로 괜찮은 관사('a' 또는 'an')를 응답하라.
printOn: aStream
수신자의 표현을 aStream 상에 인쇄하라.
storeOn: aStream
수신자로 컴파일하는 스몰토크 코드를 aStream 상에 보관하라.
Class: 저장하기와 로딩하기
binaryRepresentationVersion
객체의 현재 표현 버전을 나타내는 숫자>=0 을 응답하라. 기본 구현은 0을 응답한다.
convertFromVersion: version withFixedVariables: fixed indexedVariables: indexed for: anObjectDumper
VersionableObjectProxy 가 클래스로 부착된 경우 해당 메서드가 호출된다. 이는 객체를 위해 보관된 버전 번호(객체가 VersionableObjectProxy를 사용하지 않은 경우 nil을 응답), 고정 인스턴스 변수, 색인된 인스턴스 변수, 객체를 읽은 ObjectDumper를 수신한다. 기본 구현은 버전을 무시하고, 주어진 고정 및 색인된 인스턴스 변수를 이용해 단순히 수신자의 인스턴스를 채운다 (클래스 인스턴스의 크기가 고정된 경우 nil을 응답). 인스턴스 변수가 클래스로부터 제거된 경우 나머지도 무시한다; 현재 클래스는 고정되어 있는데 이전에 색인되었던 경우 색인된(indexed) 것은 사용되지 않는다.
nonVersionedInstSize
클래스가 VersionableObjectProxy를 사용하지 않고 객체를 보관할 때 사용하던 인스턴스 변수의 수를 응답하라. 기본 구현은 현재 instSize를 응답한다.
Class: 보안
check: aPermission
해당 설명 없음..
securityPolicy
'securityPolicy'를 응답하라.
securityPolicy: aSecurityPolicy
해당 설명 없음.
Class: 아직 분류되지 않음
메타클래스 내 메서드에서 보이는 공유 풀을 올바른 순으로 응답하라.
Class: 검사하기
= aClass
두 개의 클래스 객체가 같은 것으로 간주되는 경우 true를 응답하라.
Class: 기능 검사하기
asClass
수신자를 응답하라.
isClass
'true'를 응답하라.