SqueakByExample:5.2

From 흡혈양파의 번역工房
Revision as of 12:42, 22 August 2012 by Onionmixer (talk | contribs) (스타일 수정)
Jump to navigation Jump to search

모든 것은 오브젝트이다.

문구 "모든 것은 오브젝트 이다" 는 매우 전파력이 강합니다. 여러분이 스몰토크로 잠시 동안이라도 작업을 하신다면, 이 규칙이 얼마나 여러분이 하시는 모든 작업을 단순화하는가에 관해 놀라실 것입니다. 예를 들면, 정수는(integers) 실제로 오브젝트이므로, 여러분은 다른 객체에 메시지를 보냈던 것처럼, 정수에도 역시 메시지를 보낼 수 있습니다.


3+4 ⇒ 7 "send '+ 4' to 3, yielding 7"
20 factorial ⇒ 2432902008176640000 "send factorial, yielding a big number"


20의 계승 표시는 분명히 7의 계승과는 다른 표시를 보여줍니다. 그 이유는 둘 다 오브젝트이지만, 어떤 코드도, 심지어 계승의 실행까지도, 이 표시에 관해 현재 값이 될 필요가 있습니다. 아마도 이 규칙의 가장 근본적인 결과는 다음 내용입니다.


클래스 또한 오브젝트 입니다.


더 나아가, 클래스는 2등급 오브젝트가 아닙니다: 클래스는 여러분이 메시지를 보내고 정밀검사하고 다른 작업들을 할 수 있는 1등급 오브젝트입니다. 이 의미는 스퀵은 개발자들에게 다량의 표현 능력을 제공하는 진정한 반영(reflective) 시스템 임을 보여줍니다.

스퀵의 실행을 깊이 들여다 보면, 3 가지 다른 종류의 오브젝트가 있습니다. 참조(reference)에 의해 패스되는 인스턴스 변수들(instance variables)을 가진 보통 오브젝트(1)가 있으며, 값에 의해 패스되는 작은 정수(small integers)가 있으며, 메모리의 인접한 부분을 차지하는 배열(arrays)와 같이, 색인을 달 수 있는 오브젝트가 있습니다. 스몰토크의 아름다움은, 여러분이 이 3 종류의 오브젝트들 사이의 차이점에 관해 평상시에 신경을 쓸 필요가 없다는 점에 있습니다.

Notes