GnuSmalltalkUsersGuide:BaseChapter 121
- ObjectDumper
ObjectDumper
네임스페이스 Smalltalk에 정의됨
슈퍼클래스: Stream
범주: 스트림-파일
- 나는 일반 스몰토크 시스템에 속하지 않지만 대부분 스몰토크는 나와 유사한 기능을 제공한다: 즉, 객체를 바이너리 형식으로 보관하는 것을 지원한다는 의미다; #storeOn: 와 스몰토크 컴파일러 대신 나를 사용할 경우 많은 장점이 있다.
데이터는 매우 압축된 형식으로 보관되므로 #storeOn: 이 준비하는 스몰토크 코드의 컴파일과 비교 시 훨씬 빨리 로딩이 된다는 부수적인 효과도 있다. 게다가 나의 인스턴스들은 객체들 간 순환 참조를 지원하는 반면 #storeOn: 은 그러한 참조를 설계 시에 인지한 경우에만 지원하며 이를 처리하기 위해 #storeOn: 을 오버라이드 해야 한다.
ObjectDumper 클래스: 프록시 클래스 구축하기
disableProxyFor: aClass
aClass와 그 종속자들의 인스턴스에 대한 프록시를 비활성화하라.
hasProxyFor: aClass
프록시 클래스가 aClass의 인스턴스를 위해 등록되었는지 여부를 응답하라.
proxyClassFor: anObject
객체에 유효한 프록시의 클래스를 응답하고, 찾을 수 없는 경우 nil을 응답하라.
proxyFor: anObject
객체에 유효한 프록시를 응답하고, 찾을 수 없는 경우 객체 자체를 응답하라.
registerProxyClass: aProxyClass for: aClass
aClass와 그 종속자의 인스턴스에 사용될 프록시 클래스 aProxyClass - DumperProxy의 종속자 - 를 등록하라.
ObjectDumper 클래스: 인스턴스 생성
new
이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.
on: aFileStream
aFileStream에서 작업 중인 ObjectDumper 를 응답하라.
ObjectDumper 클래스: 단축키
dump: anObject to: aFileStream
anObject를 aFileStream으로 덤프하라. anObject를 응답하라.
loadFrom: aFileStream
aFileStream으로부터 객체를 로딩하고 객체를 응답하라.
ObjectDumper 클래스: 검사하기
example
정말로 고문 테스트다: 재귀적 객체, 동일한 객체를 여러 번, 클래스, 메타클래스, 정수, 문자, 프록시를 (따라서 좀 더 복잡한 객체의 테스트가 되기도 한다) 출력한다!
ObjectDumper: 접근하기
flush
이전에 보관된 객체에 관한 어떤 정보도 '잊어버려라'.
stream
ObjectDumper가 작성하고 그것을 읽어올 ByteStream을 응답하라.
stream: aByteStream
ObjectDumper가 작성하고 그것을 읽어올 ByteStream을 설정하라.
ObjectDumper: 객체 로딩/dump하기
dump: anObject
수신자와 연관된 스트림에 anObject를 덤프하라. anObject를 응답하라.
load
수신자와 연관된 스트림으로부터 객체를 로딩하여 응답하라.
ObjectDumper: 스트림 인터페이스
atEnd
기본이 되는 스트림이 EOF인지 여부를 응답하라.
next
기본이 되는 스트림으로부터 객체를 로딩하라.
nextPut: anObject
기본이 되는 스트림 상에서 객체를 보관하라.