SqueakByExample:4.2: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(이진 > 이항 으로 수정)
(용어수정)
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
==3 종류의 메시지==
==종류의 메시지==
 
스몰토크는 메시지가 전송되는 순서를 결정하기 위해 메시지를 몇가지 간단한 규칙으로 정의합니다. 이러한 규칙들은 세 종류의 메시지구분에 대한 차이를 기반으로 합니다:
 
* ''단항 메시지''는 어떤 정보도 갖고 있지 않은 객체에게 발송한 메시지입니다. 예를 들어 '''3 factorial'''에서, '''factorial'''은 단항 메시지 입니다.
* ''이항 메시지''는 연산자들(종종 산술적)로 구성되어 있습니다. 그 연산자들은 이항(양쪽에 인자가 필요한)이며, 그 이유는 이항메세지는 항상 두 개의 객체, 그리고 수신자와 인자 객체등에 관여하기 때문입니다. 예를 들면, 10 + 20 에서 +는 인자 20과 함께 수신자 10에 발송된 이항 메시지 입니다.
* ''키워드 메시지''는 한 각각 콜론(:)으로 끝나며 한 개의 인자를 받는 한 개 또는 그 이상의 키워드로 구성됩니다. 예를 들면, anArray at: 1 put: 10 에서, 키워드 at:은 인자 1을 취하며, 키워드 put:은 인자 10을 취합니다.


스몰토크는 발송된 메시지 위치의 순서를 결정하기 위한 몇 가지 단순한 규칙들을 정의합니다. 이러한 규칙들은 3 종류의 메시지 사이의 차이에 기초합니다:


* ''단항 메시지''는 어떤 정보도 갖고 있지 않은 오브젝트에 발송한 메시지입니다. 예를 들어 '''3 factorial'''에서, '''factorial'''은 단항 메시지 입니다.
* ''이항 메시지''는 연산자들(종종 산술적)로 구성되어 있습니다. 그 연산자들은 이항(양쪽에 인수가 필요한)이며, 그 이유는 항상 두 개의 오브젝트에 관여하기 때문입니다: 수신자(receiver)와 인수 오브젝트(the argument object). 예를 들면, 10+20에서 +은 인수 20과 함께 수신자(receiver) 10에 발송된 이항 메시지 입니다.
* ''키워드 메시지''는 한 각각 콜론(:)으로 끝나며 한 개의 인수를 받는 한 개 또는 그 이상의 키워드로 구성됩니다. 예를 들면, anArray at: 1 put: 10 에서, 키워드 at:은 인수 1을 취하며, 키워드 put:은 인수 10을 취합니다.


===단항 메시지===
===단항 메시지===


단항 메시지는 어떤 인수도 요구하지 않는 메시지 입니다. 단항메시지는 구문론적 템플릿(the syntactic template) receiver messageName을 따릅니다. 선택자(selector)는 단순히 포함하고 있지 않은 문자들의 연속(승계)으로 만들어 집니다. (예를 들면, 계승(factorial), 열기(open), 클래스(class)등)
단항 메시지는 어떤 인자도 요구하지 않는 메시지 입니다. 단항 메시지는 receiver messageName 의 문법구조를 따릅니다. 이런경우에 셀렉터는 그 뒤에 문자(인자)가 이어지지 않게 만들어져 있습니다. (예를 들면, 계승(factorial), 열기(open), 클래스(class)등)


{| style="border: 1px solid black;"
{| style="border: 1px solid black;"
Line 23: Line 25:
|true not||⇒ false
|true not||⇒ false
|-
|-
|Object class||⇒ Object class "The class of Object is Object class (!)"
|Object class||⇒ Object 클래스 "Object의 클래스가 Object 클래스입니다 (!)"
|}
|}




<center>{{HighlightDoubleBox|단항 메시지는 어떤 인수도 요구하지 않는 메시지 입니다. 단항메시지는 구문론적 템플릿(the syntactic template) receiver messageName을 따릅니다}}</center>
<center>{{HighlightDoubleBox|단항 메시지는 어떤 인자도 요구하지 않는 메시지 입니다. 단항 메시지는 receiver '''selector''' 의 문법구조로 되어 있습니다}}</center>




===이항 메시지(Binary messages)===


이항 메시지는 정확히 하나의 인수를 요구하고 그것의 선택자(selector)가 : +, --, *,/, &, =, >, |, <, , @ 같은 세트에서 가져온 하나 또는 그 이상의 문자의 연속으로 구성되어 있는 메시지입니다: -- 은 문장 분석(parsing) 양식에 허용되지 않습니다.
===이항 메시지===
 
이항 메시지는 정확히 하나의 인자를 필요로 하고 메세지의 선택자가 : +, --, *,/, &, =, >, |, <, , 그리고 @ 등과 같은 분류에서 가져온 하나 이상의 문자가 붙어오도록 만들어져 있는 메시지입니다: -- 은 문장의 해석양식에서 허용되지 않습니다.


{| style="border: 1px solid black;"
{| style="border: 1px solid black;"
Line 44: Line 47:
|4 <= 3||&rArr; false
|4 <= 3||&rArr; false
|-
|-
|(4/3) * 3 = 4||&rArr; true "equality is just a binary message, and Fractions are exact"
|(4/3) * 3 = 4||&rArr; true "등식은 이항 메시지이며 분수 표현은 정확합니다"
|-
|-
|(3/4) == (3/4)||&rArr; false "two equal Fractions are not the same object"
|(3/4) == (3/4)||&rArr; false "두개의 동일한 분수는 같은 객체가 아닙니다"
|}
|}




<center>{{HighlightDoubleBox|이항 메시지는 정확히 하나의 인수를 요구하고 그것의 선택자(selector)가 : +, --, *,/, &, =, >, |, <, , @ 같은 세트에서 가져온 하나 또는 그 이상의 문자의 연속으로 구성되어 있는 메시지입니다. 이항 메시지는 구문론적 템플릿(the syntactic template) receiver selector 인수를 따릅니다}}</center>
<center>{{HighlightDoubleBox|이항 메시지는 정확히 하나의 인자를 요구하고 그의 선택자가 : +, --, *,/, &, =, >, |, <, , 그리고 @ 등과 같은 분류에서 가져온, 하나 또는 그 이상의 문자의 연속으로 만들어져 있는 메시지입니다. 이항 메시지는 receiver '''selector''' argument 의 문법구조로 되어있습니다.}}</center>
 




===키워드 메시지===
===키워드 메시지===


키워드 메시지는 한 개 또는 그 이상의 인수와 각각 : 으로 끝나는 한 개 또는 그 이상의 키워드로 구성된 인수의 선택자(selector)를 요구하는 메시지 입니다. 키워드 메시지는 구문론적 탬플릿(the syntactic template)를 따릅니다: '''receiver selectorWordOne: argument-One wordTwo: argumentTwo'''
키워드 메세지는 각각 콜론으로 끝나는 셀렉터와 그에 따르는 한개 또는 복수의 인자로 구성된 메세지입니다. 키워드 메시지는 다음의 문법구조로 되어있습니다: '''receiver selectorWordOne: argument-One wordTwo: argumentTwo'''


각각의 키워드는 인수를 취합니다. 그러므로 r:g:b:는 3 개의 인수를 가진 메서드이며, playFileNamed: 와 at: 은 1 개의 인수를 가진 메서드이며, at:put:는 2 개의 인수를 가진 메서드 입니다. 클래스 color의 인스턴스를 만들려면, 색상을 빨강으로 만드는 메서드 r:g:b: as in Color r: 1 g: 0 b: 0을 사용할 수 있습니다. 콜론 :은 선택자(selector)의 일부임에 유의합니다.
키워드는 따로따로 인자를 취합니다. 그러므로 r:g:b:는 3 개의 인자를 가진 메서드이며, playFileNamed: 와 at: 은 1개씩의 인자를 가진 메서드고, at:put:는 2 개의 인자를 가진 메서드 입니다. color 클래스로 인스턴스를 만들면, Color r:1 g:0 b:0 에서와 같이 색상을 빨강으로 만드는 메서드 r:g:b: 사용할 수 있습니다. :(콜론) 은 셀렉터의 일부임을 주의합니다.




<center>{{HighlightDoubleBox|자바 또는 C++에서, 스몰트크 메서드 불러오기(the smalltalk method invocation ) Color r: 1 g: 0 b: 0는 Color.rgb(1,0,0)로 기록될 수 있습니다.}}</center>
<center>{{HighlightDoubleBox|자바 또는 C++에서, 스몰트크 메서드 불러오기. Color r: 1 g: 0 b: 0를 Color.rgb(1,0,0)로 작성할 수 있습니다.}}</center>




<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
1 to: 10                        (1 to: 10) "creates an interval"
1 to: 10                        (1 to: 10) "인터벌을 만듭니다"
Color r: 1 g: 0 b: 0            Color red "creates a new color"
Color r: 1 g: 0 b: 0            Color red "새 색상을 만듭니다"
12 between: 8 and: 15      true
12 between: 8 and: 15      true


nums := Array newFrom: (1 to: 5).
nums := Array newFrom: (1 to: 5).
nums at: 1 put: 6.
nums at: 1 put: 6.
nums                            #(6 2 3 4 5)
nums                            #(6 2 3 4 5)
</syntaxhighlight>
</syntaxhighlight>




<center>{{HighlightDoubleBox|키워드 메시지는 한 개 또는 그 이상의 인수를 요구합니다. 그 인수들의 선택자(selector)는 각각 콜론 (:) 으로 끝나는 한 개 또는 그 이상의 키워드로 구성됩니다. 키워드 메시지는 구문론적 탬플릿(the syntactic template)를 따릅니다:<br>receiver selectorWordOne: argument-One wordTwo: argumentTwo}}</center>
<center>{{HighlightDoubleBox|키워드 메시지는 한 개 이상의 인자를 요구합니다. 그 인자들의 선택자는 각각 콜론 (:) 으로 끝나는 한 개 또는 그 이상의 키워드들로 구성됩니다. 키워드 메시지는 다음의 문법구조로 되어있습니다:<br>receiver '''selectorWordOne:''' argument-One '''wordTwo:''' argumentTwo}}</center>
 





Latest revision as of 19:34, 16 September 2013

세 종류의 메시지

스몰토크는 메시지가 전송되는 순서를 결정하기 위해 메시지를 몇가지 간단한 규칙으로 정의합니다. 이러한 규칙들은 세 종류의 메시지구분에 대한 차이를 기반으로 합니다:

  • 단항 메시지는 어떤 정보도 갖고 있지 않은 객체에게 발송한 메시지입니다. 예를 들어 3 factorial에서, factorial은 단항 메시지 입니다.
  • 이항 메시지는 연산자들(종종 산술적)로 구성되어 있습니다. 그 연산자들은 이항(양쪽에 인자가 필요한)이며, 그 이유는 이항메세지는 항상 두 개의 객체, 그리고 수신자와 인자 객체등에 관여하기 때문입니다. 예를 들면, 10 + 20 에서 +는 인자 20과 함께 수신자 10에 발송된 이항 메시지 입니다.
  • 키워드 메시지는 한 각각 콜론(:)으로 끝나며 한 개의 인자를 받는 한 개 또는 그 이상의 키워드로 구성됩니다. 예를 들면, anArray at: 1 put: 10 에서, 키워드 at:은 인자 1을 취하며, 키워드 put:은 인자 10을 취합니다.


단항 메시지

단항 메시지는 어떤 인자도 요구하지 않는 메시지 입니다. 단항 메시지는 receiver messageName 의 문법구조를 따릅니다. 이런경우에 셀렉터는 그 뒤에 문자(인자)가 이어지지 않게 만들어져 있습니다. (예를 들면, 계승(factorial), 열기(open), 클래스(class)등)

89 sin ⇒ 0.860069405812453
3 sqrt ⇒ 1.732050807568877
Float pi ⇒ 3.141592653589793
'blop' size ⇒ 4
true not ⇒ false
Object class ⇒ Object 클래스 "Object의 클래스가 Object 클래스입니다 (!)"


단항 메시지는 어떤 인자도 요구하지 않는 메시지 입니다. 단항 메시지는 receiver selector 의 문법구조로 되어 있습니다


이항 메시지

이항 메시지는 정확히 하나의 인자를 필요로 하고 메세지의 선택자가 : +, --, *,/, &, =, >, |, <, , 그리고 @ 등과 같은 분류에서 가져온 하나 이상의 문자가 붙어오도록 만들어져 있는 메시지입니다: -- 은 문장의 해석양식에서 허용되지 않습니다.

100@100 ⇒ 100@100 "creates a Point object"
3+4 ⇒ 7
10 -- 1 ⇒ 9
4 <= 3 ⇒ false
(4/3) * 3 = 4 ⇒ true "등식은 이항 메시지이며 분수 표현은 정확합니다"
(3/4) == (3/4) ⇒ false "두개의 동일한 분수는 같은 객체가 아닙니다"


, <, , 그리고 @ 등과 같은 분류에서 가져온, 하나 또는 그 이상의 문자의 연속으로 만들어져 있는 메시지입니다. 이항 메시지는 receiver selector argument 의 문법구조로 되어있습니다.


키워드 메시지

키워드 메세지는 각각 콜론으로 끝나는 셀렉터와 그에 따르는 한개 또는 복수의 인자로 구성된 메세지입니다. 키워드 메시지는 다음의 문법구조로 되어있습니다: receiver selectorWordOne: argument-One wordTwo: argumentTwo

키워드는 따로따로 인자를 취합니다. 그러므로 r:g:b:는 3 개의 인자를 가진 메서드이며, playFileNamed: 와 at: 은 1개씩의 인자를 가진 메서드고, at:put:는 2 개의 인자를 가진 메서드 입니다. color 클래스로 인스턴스를 만들면, Color r:1 g:0 b:0 에서와 같이 색상을 빨강으로 만드는 메서드 r:g:b: 을 사용할 수 있습니다. :(콜론) 은 셀렉터의 일부임을 주의합니다.


자바 또는 C++에서, 스몰트크 메서드 불러오기. Color r: 1 g: 0 b: 0를 Color.rgb(1,0,0)로 작성할 수 있습니다.


1 to: 10                          (1 to: 10) "인터벌을 만듭니다"
Color r: 1 g: 0 b: 0              Color red "새 색상을 만듭니다"
12 between: 8 and: 15       true

nums := Array newFrom: (1 to: 5).
nums at: 1 put: 6.
nums                              #(6 2 3 4 5)


키워드 메시지는 한 개 이상의 인자를 요구합니다. 그 인자들의 선택자는 각각 콜론 (:) 으로 끝나는 한 개 또는 그 이상의 키워드들로 구성됩니다. 키워드 메시지는 다음의 문법구조로 되어있습니다:
receiver selectorWordOne: argument-One wordTwo: argumentTwo


Notes