SqueakByExample:5.8

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

5장 요약

스퀵의 객체 모델은 모두 단순하며 일관성이 있습니다. 모든 요소는 객체이며, 대부분 동작은 메시지 전송으로 이루어집니다.

  • 모든 요소는 객체이며, 정수와 같은 프리미티브 엔티티 객체이고, 클래스는 일등급 객체 입니다.
  • 모든 객체는 클래스의 인스턴스이며, 클래스는 전용 인스턴스 변수와 그 변수의 인스턴스들의 동작을 통해, 스스로의 인스턴스 구조를 정의합니다. 각 클래스는 그 클래스의 메타클래스가 가진 고유한 인스턴스입니다. 클래스 변수은 클래스와 그 클래스의 모든 인스턴스들에 의해 공유되는 private 변수입니다. 클래스는 그 클래스의 인스턴스가 가진 인스턴스 변수에 직접 접근할 수 없으며, 인스턴스는 그 인스턴스의 클래스가 가진 인스턴스 변수에 접근할 수 없습니다. 접근자는 반드시 접근자가 필요할때만 정의되어야만 합니다.
  • 모든 클래스는 super클래스를 갖고 있습니다. 단일 상속 계층도의 뿌리root는 ProtoObject 입니다. 사용자가 정의하는 클래스는 객체 또는 그 객체의 서브클래스에서 상속됩니다. 추상 클래스들을 정의하는 어떤 프로그램식도 존재하지 않습니다. 추상 클래스란, 실행이 표현식 self subclassResponsibility 로 구성된 추상 메서드를 가진 클래스 입니다. 비록 스퀵이 단일 상속만을 지원하지만, traits 로서 메서드 패키지를 만들어, 메서드들의 실행을 공유하는 작업은 어렵지 않습니다.
  • 모든 동작은 메시지 전송으로 이루어집니다. 스몰토크에서는 "메서드 호출"을 하지 않고, "메시지 전송"을 사용합니다. 메시지를 전송하면, 수신자는 그 메시지에 응답하기 위해 수신자 자신의 메서드 중 알맞는 것을 선택합니다.
  • 메서드 탐색은 상속 관계를 따라 수행합니다. super send 는 정적이며, 메서드 탐색은 super send를 작성한 장소에 있는 클래스의 super class 에서 시작됩니다. 반면에, self send는 동적이며, 메서드 탐색은 수신자의 클래스에서 다시 시작합니다.
  • 3가지 종류의 공유 변수들이 있습니다. 전역 변수는 스몰토크 시스템 어디에서나 접근할 수 있습니다. 클래스 변수들은 클래스, 그 클래스의 서브클래스 그리고 그 클래스의 인스턴스 사이에서 공유됩니다. Pool 변수는 클래스 초기화 부분에서 poolDictionary를 설정한 클래스들 사이에서만 공유됩니다. 공유 변수는 최대한 사용하지 말아주세요.


Notes