SmalltalkObjectsandDesign:Appendix

From 흡혈양파의 번역工房
Jump to: navigation, search
부록 dialect별 차이

dialect별 차이

아래 표는 주요 스몰토크 dialects 간 차이를 몇 가지 소개한 것이다. 완전하거나 세부 사항까지 표현한 것은 아니므로 놀랄 만한 내용은 아니다. 하지만 IBM Smalltalk용으로 작성된 이 책과 다른 dialects 간에 발생하기 쉬운 차이를 알고자 하는 독자들을 위해 실었다. 또한 dialects가 기본적으로 다른 수칙을 기반으로 하여 이 책에서 논하지 않은 몇 가지 영역을 지적하겠다. ParcPlace-Digitalk 는 VisualSmalltalk 와 VisualWorks 제품을 하나의 제품으로 통합하는 작업을 진행 중인데, 이러한 통합제품은 표에서 마지막 두 열이 제시하는 차이를 조정할 것이다.


VisualAge (IBM Smalltalk) VisualSmalltalk(Smalltalk/V) VisualWorks(Smalltalk-80)
이미지명(기본 값) image v.exe
v.image (매킨토시)
visual.im
Command 1 Execute Do It do it
Command 2 Display Show It print it
Transcript의 클래스 EtTranscript TextWindow TextCollector
전역 변수(sparingly하게 사용) 명시적으로 선언되어 있다 첫 시도에서 하나를 사용하도록 유도한다 첫 시도에 하나를 사용하도록 유도한다
클래스 인스턴스 변수 Yes Yes-말 그대로 class의 클래스에 대한 인스턴스 변수 (기존 버전엔 없음) Yes-말 그대로 class의 클래스에 대한 인스턴스 변수 (기존 버전엔 없음)
aMsg 메시지 전송 aMsg sendTo: anObject aMsg perform anObject perform: aMsg selector withArguments: aMsg arguments
순수 가상 (추상, 지연된) 메서드 subclassResponsibility implementedBySubclass subclassResponsibility
텍스트 창 열기 EtWorkspace new show: 'Hello, world' TextWindow new openOn: 'Hello, world' ComposedTextView open: 'Hello, world' as ComposedText
컬렉션 계층구조가 서브타이핑되었다 아니오 아니오 아니오
Finalization과 약한 참조 예 (기존 버전엔 없음)
플랫폼의 창 관리자가 조절하는 모양과 느낌 아니오
리터럴 문자열이 수정 가능하다 아니오
리터럴 배열이 수정 가능하다 아니오
블록 임시 변수 [ㅣxㅣ ...] 아니오
Pool dictionary 클래스 EsPoolDictionary Dictionary Dictionary
Pool dictionary 키 String String Symbol
서브클래스가 pool dictionaries를 상속한다 아니오
SmallInteger 범위(32비트 플랫폼상) -230에서 230-1까지 -230에서 230-1까지 -229에서 229-1까지
Broadcaster AbtObservableObjecta EventManagerb Modelc
예외 인스턴스 계층구조 클래스 계층구조 인스턴스 계층구조


a 이에 더해, 동일하지만 덜 효율적이고 덜 캡슐화된 프로토콜을 어떤 Object에도 이용 가능하다. 세 번째 프로토콜은 Object에서 클래스 변수 Dependents를 이용하는 전형적인 프로토콜이다.


b 이에 더해, 동일하지만 덜 효율적이고 덜 캡슐화된 프로토콜을 어떤 Object에도 이용 가능하다. 오래된 버전들은 Object에서 클래스 변수 Dependents를 이용하는 전형적인 프로토콜을 지원한다.


c 이 클래스는 전형적인 (오리지널 MVC) 프로토콜을 지원한다. 이에 더해, 동일하지만 덜 효율적이고 클래스 변수 Dependents를 사용하는 프로토콜을 어떤 Object에도 이용 가능하다. ParcPlace-Digitalk는 VisualSmalltalk에서와 같이 EventManager 브로드캐스팅을 추가할 계획이다.