4는 숫자입니다. 좀 더 구체적으로 말하면, Integer(정수)라 불리우는 수입니다. 비주얼웍스에서 정수는 SmallInteger와 LargeInteger로 나뉩니다. 객체지향 용어에서 4는 객체입니다. 그리고 SmallInteger는 그 클래스입니다. 다른 말로 "4는 SmallInteger 클래스의 인스턴스입니다"가 됩니다. "연어는 생선입니다"를 바꿔 말하면 "연어는 생선 클래스의 인스턴스입니다"가 됩니다.
VisualWorks는 거대한 클래스 라이브러리를 제공하고 있습니다. 이 라이브러리에는 클래스에 속하는 코드(메서드)가 포함되어 있습니다. 이것들의 메서드는 컴퓨터(컴퓨터 언어)에 처리를 요구하는 기능을 가지고 있습니다. 예를들어 수치가 왔을 경우 더하기, 빼기, 곱하기, 나누기를 컴퓨터에 요구합니다. 또한 “squared”(제곱)을 계산하기 위해서는 더욱 고도의 수학적 기능을 실행하도록 요구할 것입니다.
위의 식에서는 4(SmallInteger 클래스의 인스턴스)에 squared 메시지가 송신되어 있습니다.
이해되셨나요? 다음 예시에서 좀 더 자세하게 알아보도록 합시다.
"pots"는 single quotes(')에 둘러싸여 있습니다. Smalltalk에서는 이것을 연속문자로 인식합니다. 다른 말로 표현하자면, String(문자열)로 유명합니다. String은 클래스입니다. "pots"는 String 클래스의 인스턴스입니다. 스몰토크에 있어서 "pots"는 "단어"로서 인식되지 않습니다. 영어를 구사하는 사람들에게 있어서는 단어일지도 모르겠지만, 스몰토크 입장에서는 연속되는 문자일 뿐입니다. 스몰토크에서는 단어를 single quotes로 둘러쌈으로서 String이 됩니다. String은 클래스이며, "pots"는 String 클래스의 인스턴스입니다.
앞서 서술한 것과 같이, 비주얼웍스는 거대한 클래스 라이브러리를 제공하고 있으며, 그 라이브러리는 클래스에 속하는 코드(메서드)를 포함하고 있습니다. 이것들의 메서드는 컴퓨터(컴퓨터 언어)가 기대하는 기능을 실행합니다. 예를 들어서 문자열의 경우, 문자열의 수를 카운트하는 방법이나 문자의 분할방법을 요구하거나 합니다. reverse 메서드는 문자열 조작을 행합니다. 이것은 스몰토크에 문자 순서를 거꾸로 하라는 지시를 내립니다.
워크스페이스에서 위에서 적은 문을 반전하고 <오퍼레이트 클릭>해서 프린트를 선택해 주십시오. 스몰토크는 'stop'을 표시합니다.
이제는 제법 이해를 하셨으리라 생각합니다. 전부를 이해하는 것은 어렵지만 조금이나마 이해가 되었을지도 모릅니다. 좀 더 해봅시다.
3과 4는 객체에서 SmallInteger 클래스의 인스턴스입니다. 여기까진 아시겠지요. 모든 Smalltalk 식은 최소한 객체와 메시지를 포함해야 합니다. 따라서 플러스 기호는 메시지여야 합니다. 그리고 Smalltalk에서 모든 식은 오브젝트 - 메서드라는 형태로 분해되어야 합니다. 이 메시지는 이항 메시지라 합니다. 왜냐하면 두 개의 객체를 동반하고 있기 때문입니다. 만약 이해가 되지 않더라도 나중에 설명할 것이니 일단 진행하도록 합시다. 3은 SmallInteger 클래스의 인스턴스입니다.(플러스 메시지의 리시버를 호출하고 있음) 스몰토크는 SmallInteger 클래스에 대응해 플러스 메서드를 찾습니다. 찾아서 메서드를 실행하고 객체를 돌려놓습니다. 이 경우에는 7의 SmallInteger 인스턴스가 돌아옵니다.
여기서 살짝 의문이 들지도 모르겠네요. 일반 사회에서 플러스 기호는 수학적 계산을 하는 것으로 인식되어 있습니다. 다른 프로그래밍 언어에서는 이 플러스 기호를 명령 혹은 삽입되어있는 기능으로서 취급합니다. Smalltalk에서는 플러스 기호는 메시지입니다. 이러한 사고방식은 점점 익숙해질 것입니다.
|