SqueakByExample:5.8: Difference between revisions
Jump to navigation
Jump to search
Onionmixer (talk | contribs) mNo edit summary |
Onionmixer (talk | contribs) (번역수정) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
==5장 요약== | ==5장 요약== | ||
스퀵의 오브젝트 모델은 모두 단순하고 일정합니다. 모든 것은 오브젝트이며, 거의 모든 것은 메시지 | 스퀵의 오브젝트 모델은 모두 단순하고 일정합니다. 모든 것은 오브젝트이며, 거의 모든 것은 메시지 전송으로 이루어집니다. | ||
* 모든 것은 오브젝트이며, 정수와 같은 프리미티브 엔티티 오브젝트이고, 또한 클래스도 일등급 오브젝트 입니다. | |||
* 모든 오브젝트는 클래스의 인스턴스이며, 클래스는 전용 인스턴스 변수와 그 변수의 인스턴스들의 동작을 통해, 스스로의 인스턴스 구조를 정의합니다. 각 클래스는 그 클래스의 메타클래스가 가진 고유한 인스턴스입니다. 클래스 변수은 클래스와 그 클래스의 모든 인스턴스들에 의해 공유되는 private 변수입니다. 클래스는 그 클래스의 인스턴스가 가진 인스턴스 변수에 직접 접근할 수 없으며, 인스턴스는 그 인스턴스의 클래스가 가진 인스턴스 변수에 접근할 수 없습니다. 접근자는 반드시 접근자가 필요할때만 정의되어야만 합니다. | |||
* 모든 클래스는 상위 클래스를 갖고 있습니다. 단일 상속 계층도의 뿌리는 ProtoObject 입니다. 여러분이 정의하는 클래스는 오브젝트 또는 그 오브젝트의 하위클래스들로부터 상속됩니다. 추상 클래스들을 정의하는 어떤 프로그램식도 존재하지 않습니다. 추상 클래스란, 실행이 표현식 self subclassResponsibility 로 구성된 추상 메서드를 가진 클래스 입니다. 비록 스퀵이 단일 상속만을 지원하지만, traits 로서 메서드 패키지를 만들어, 메서드들의 실행을 공유하는 작업은 어렵지 않습니다. | |||
* 모든 것은 메시지 전송으로 이루어집니다. 스몰토크에서는 "메서드 호출"을 하지 않고, "메시지 전송"을 사용합니다. 메세지가 전송된다음, 수신자는 그 메시지에 응답하기 위해 수신자 자신의 메서드를 선택합니다. | |||
* 메서드 찾기는 상속 관계를 따르고, super send는 정적이며, 그 super send가 작성된 장소에 있는 클래스의 super class에서 시작되는 반면에, self send는 동적이며 수신자의 클래스에서 메서드 검색을 다시 시작합니다. | |||
* 3가지 종류의 공유 변수들이 있습니다. 글로벌 변수들은 스몰토크 시스템 어디에서나 접근할 수 있습니다. 클래스 변수들은 클래스, 그 클래스의 서브클래스 그리고 그 클래스의 인스턴스 사이에서 공유됩니다. Pool 변수들은 클래스들의 선택된 세트 사이에서 공유됩니다. 여러분은 최대한 공유 변수를 피해야만 합니다. | |||
==Notes== | ==Notes== |
Revision as of 12:51, 5 March 2013
5장 요약
스퀵의 오브젝트 모델은 모두 단순하고 일정합니다. 모든 것은 오브젝트이며, 거의 모든 것은 메시지 전송으로 이루어집니다.
- 모든 것은 오브젝트이며, 정수와 같은 프리미티브 엔티티 오브젝트이고, 또한 클래스도 일등급 오브젝트 입니다.
- 모든 오브젝트는 클래스의 인스턴스이며, 클래스는 전용 인스턴스 변수와 그 변수의 인스턴스들의 동작을 통해, 스스로의 인스턴스 구조를 정의합니다. 각 클래스는 그 클래스의 메타클래스가 가진 고유한 인스턴스입니다. 클래스 변수은 클래스와 그 클래스의 모든 인스턴스들에 의해 공유되는 private 변수입니다. 클래스는 그 클래스의 인스턴스가 가진 인스턴스 변수에 직접 접근할 수 없으며, 인스턴스는 그 인스턴스의 클래스가 가진 인스턴스 변수에 접근할 수 없습니다. 접근자는 반드시 접근자가 필요할때만 정의되어야만 합니다.
- 모든 클래스는 상위 클래스를 갖고 있습니다. 단일 상속 계층도의 뿌리는 ProtoObject 입니다. 여러분이 정의하는 클래스는 오브젝트 또는 그 오브젝트의 하위클래스들로부터 상속됩니다. 추상 클래스들을 정의하는 어떤 프로그램식도 존재하지 않습니다. 추상 클래스란, 실행이 표현식 self subclassResponsibility 로 구성된 추상 메서드를 가진 클래스 입니다. 비록 스퀵이 단일 상속만을 지원하지만, traits 로서 메서드 패키지를 만들어, 메서드들의 실행을 공유하는 작업은 어렵지 않습니다.
- 모든 것은 메시지 전송으로 이루어집니다. 스몰토크에서는 "메서드 호출"을 하지 않고, "메시지 전송"을 사용합니다. 메세지가 전송된다음, 수신자는 그 메시지에 응답하기 위해 수신자 자신의 메서드를 선택합니다.
- 메서드 찾기는 상속 관계를 따르고, super send는 정적이며, 그 super send가 작성된 장소에 있는 클래스의 super class에서 시작되는 반면에, self send는 동적이며 수신자의 클래스에서 메서드 검색을 다시 시작합니다.
- 3가지 종류의 공유 변수들이 있습니다. 글로벌 변수들은 스몰토크 시스템 어디에서나 접근할 수 있습니다. 클래스 변수들은 클래스, 그 클래스의 서브클래스 그리고 그 클래스의 인스턴스 사이에서 공유됩니다. Pool 변수들은 클래스들의 선택된 세트 사이에서 공유됩니다. 여러분은 최대한 공유 변수를 피해야만 합니다.