SmalltalkObjectsandDesign:Appendix
- 부록 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 브로드캐스팅을 추가할 계획이다.