SqueakByExample:11.1: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(SBE morphic의역사 페이지 추가)
 
(번역수정)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Morphic의 역사==
==Morphic 의 역사==


Morphic은 John Maloney와 Randy Smith가 1993년경 개발을 시작하여 자체 프로그래밍 언어(the self-programming language)완성하였습니다. Maloney는 나중에 스퀵을 위한 새로운 버전의 Morphic을 작성하였지만 자체 버전(the self- version)의 근간을 이루는 직접성(directiveness)활동성(liveness)와 같은 기본 아이디어는 여전히 살아 있으며 Squeak Morphic에 잘 반영되어 있습니다. 직접성은 화면에 있는 모양(shapes)을 직접 검사하고 변경할 수 있다는 것을 의미하며, 작업들은 마우스 포인터를 사용하여 수행할 수 있습니다. 활동성(liveness)는 유저 인터페이스는 항상 유저의 액션들에 반응할 수 있다는 것을 의미합니다: 화면의 정보는 변경사항들을 기술하는 world로서 지속적으로 업데이트 됩니다. 이것의 보다 단순한 예로서, 여러분은 메뉴 아이템을 떼어 분리할 수 있으며 버튼으로서 유지할 수 있습니다.
Morphic 은 John Maloney 와 Randy Smith 가 Self 라는 프로그래밍 언어<ref name="역자주1">Self programming Language 에 대한 내용은 http://en.wikipedia.org/wiki/Self_programming_language 에서 찾을 수 있습니다.</ref>1993 년경 개발을 시작하였습니다. Maloney 는 나중에 스퀵을 위한 새로운 버전의 Morphic 을 만들었습니다만 self 프로그래밍 언어버전에서 가지고있던 직접성<sup>directness</sup> 생동감<sup>liveness</sup> 등의 기본 아이디어는 여전히 살아 있으며, 스퀵 Morphic 에 잘 반영되어 있습니다. 직접성이란 화면에 있는 모양을 직접 검사하고 변경할 수 있다는 것을 의미하며, 이런 작업들은 마우스를 이용한 포인팅으로 가능합니다. 생동감이란 유저 인터페이스는 언제라도 유저의 조작에 반응할 수 있다는 것을 의미합니다: 즉 화면상의 정보는 정보를 보여주고 있는 world 가 변경될때마다 자동으로 갱신 됩니다. 간단한 예로서, 메뉴에서 항목을 떼어내서 버튼으로 사용할 수 있습니다.




{{CommentSqueak|월드 메뉴(the world menu)를 불러옵니다. Morphic halo를 불러내기 위해 월드 메뉴에서 한번 파랑 클릭을 하고, 여러분이 그 halo를 불러내기 위해, 여러분이 떼어 분리하기 원하는 메뉴 아이템을 다시 한번 파랑 클릭합니다. 이제 그림 11.1에 보이는 것 처럼 검정색 handle [[image:black_handle_button.png]] 붙잡아 화면 위의 원하는 장소에 드레그 합니다.}}
{{CommentSqueak|World 메뉴를 불러옵니다. Morphic 할로를 불러내기 위해 World 메뉴에서 한번 파랑 클릭을 하고, 할로를 불러내기 위해, 따로 분리하기 원하는 메뉴 아이템을 다시 한번 파랑 클릭하십시오. 이제 그림 11.1 에 보이는 것 처럼 검정색 손잡이[[image:black_handle_button.png]]붙잡아 화면 위의 원하는 장소에 끌어다 놓아주세요.}}




[[image:detachingMenu.png|none|240px|thumb|그림 11.1: 여기에 새로운 모프(morph) 메뉴 아이템이 있으며, 이 메뉴 아이템을 독립 버튼으로 만들 기 위해 morph 떼어 분리합니다.]]
[[image:detachingMenu.png|none|240px|thumb|그림 11.1: new morph 라는 메뉴 아이템을, 독립된 버튼으로 만들기 위해 morph 떼어 분리합니다.]]




여러분이 스퀵을 실행할 때 화면에서 볼 수 있는 모든 오브젝트들은 Morph 들이며, 그 Morph들은 클래스 Morph의 서브클래스들의 인스턴스들 입니다. Morph 자체는 많은 메소드를 가진 클래스(large class)이며, 이것은 적은 코드로 서브클래스로 하여금 흥미로운 동작을 실행하는 것을 가능하게 만듭니다. 비록 좋은 모양은 얻는 것은 오브젝트에 달려있지만 모든 오브젝트를 나타내기 위해 morph를 만들 수 있습니다.
스퀵을 실행한 후 화면에 보이는 모든 객체는 Morph 이며, 이런 객체들은 Morph 클래스의 인스턴스입니다. Morph 클래스는 많은 메서드를 가지고있는 클래스이며, 작은 코드로도 재미있는 동작을 하는 서브클래스를 만들 수 있십니다. 모든 객체는 moprh 로 만들 수 있습니다만, 어느정도 좋은모양을 가지는지는 객체 자체에 달렸습니다.


{{CommentSqueak|String 객체를 표시하기 위해 Morph 를 만드려면, 워크스페이스에서 한번에 한 줄씩 다음 코드를 실행하십시오.}}


{{CommentSqueak|문자열 오브젝트(string object)를 표시하기 위해 morph를 만듭니다. 워크스페이스에서 한번에 한개의 라인씩 다음 코드를 실행합니다.}}
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
s := 'Morph' asMorph openInWorld.
s := 'Morph' asMorph openInWorld.
Line 20: Line 20:
   
   


첫 번째 라인은 문자열 ‘Morph’를 나타내기 위해 Morph를 만들고, 그 다음 화면에 스퀵이 부여하는 이름인 “world”에서 그 Morph를 엽니다(그 말은 morph를 디스플레이 한다는 것입니다). 여러분은 파랑 클릭으로 조작할 수 있는 그래픽 구성요소 –Morph-를 얻을 수 있으셔야만 합니다. 두 번째 라인은 화면에서 Morph의 x와 y 좌표와 같은 이 Morph의 속을 보여주는 “viewer”를 엽니다. 노랑 느낌표중의 하나를 클릭하면 메시지를 Morph에 발송하며, 이 발송은 적합한 반응을 나타냅니다.  
첫 번째 줄은, 문자열 'Morph' 를 world 에 나타내가 위해 Morph 를 만들고, 스퀵에서 부르는 이름인 "world" 라는 객체에서 만들어진 Morph 를 엽니다(만들어진 morph 를 표시한다는 거죠). 사용자는 파랑 클릭으로 조작이 가능한 그래픽 구성요소-Morph-를 얻을 수 있어야만 합니다. 두 번째 라인은 화면에서 Morph 의 x와 y 좌표와 같은 이 Morph의 내부를 보여주는 "viewer" 를 엽니다. 노랑 느낌표중 하나를 클릭하면 메시지를 Morph 에 전송하며, 전송한 메시지에 알맞는 결과를 얻을 수 있십니다.


물론, 여러분이 방금 본 그래픽 표현 보다 좀더 흥미로운 그래픽 표현을 가진 Morphs로 정의하는 작업이 가능합니다. 메소드 asMorph는 단지 StringMorph를 만드는, 클래스 Object class에서 디폴트 실행(default implementation)을 갖고 있습니다. 그러므로 예컨데 Color tan asMorph는 Color tan printString의 결과로 라벨을 붙인 StringMorph를 리턴합니다. 이것을 변경하면, 대신에 우리가 색깔이 칠해진 직사각형을 얻게 됩니다.


물론, 지금 확인한 그래픽 표현보다 좀 더 재미있는 그래픽 표현을 가지는 Morph 를 정의하는것도 가능합니다. class Object 클래스에 있는 asMorph 메서드의 기본값은 단지 StringMorph 를 만들기만 합니다. 예를 들어 Color tan asMorph, 단지 Color tan printString 의 실행결과를 라벨로 가지는 StringMorph 를 반환합니다. 그러면 이것을 변경해서 색상이 지정되는 직사각형이 반환되도록 해보겠습니다.


{{CommentSqueak|Color class에서 브라우저를 열고 다음 메소드를 추가합니다:}}


{{CommentSqueak|Color class에서 브라우저를 열고 다음 메서드를 추가하십시오:}}
메서드 11.1: Color 의 인스턴스를 위해 morph 얻기


메소드 11.1: Color의 인스턴스를 위해 morph 얻기
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
Color»asMorph
Color>>asMorph
   ↑ Morph new color: self
   ↑ Morph new color: self
</syntaxhighlight>
</syntaxhighlight>




이제 워크스페이스에서 Color orange asMorph openInWorld를 실행합니다. 여러분은 문자열과 같은 morph 대신에 오렌지색 직사각형을 얻을 수 있습니다.
워크스페이스에서 Color orange asMorph openInWorld 를 실행합니다. String 의 Morph 대신에 오렌지색 직사각형을 얻을 수 있습니다!
 
 


==Notes==
==Notes==

Latest revision as of 14:44, 14 September 2013

Morphic 의 역사

Morphic 은 John Maloney 와 Randy Smith 가 Self 라는 프로그래밍 언어[1]로 1993 년경 개발을 시작하였습니다. Maloney 는 나중에 스퀵을 위한 새로운 버전의 Morphic 을 만들었습니다만 self 프로그래밍 언어버전에서 가지고있던 직접성directness 과 생동감liveness 등의 기본 아이디어는 여전히 살아 있으며, 스퀵 Morphic 에 잘 반영되어 있습니다. 직접성이란 화면에 있는 모양을 직접 검사하고 변경할 수 있다는 것을 의미하며, 이런 작업들은 마우스를 이용한 포인팅으로 가능합니다. 생동감이란 유저 인터페이스는 언제라도 유저의 조작에 반응할 수 있다는 것을 의미합니다: 즉 화면상의 정보는 정보를 보여주고 있는 world 가 변경될때마다 자동으로 갱신 됩니다. 간단한 예로서, 메뉴에서 항목을 떼어내서 버튼으로 사용할 수 있습니다.


Squeak comment.pngWorld 메뉴를 불러옵니다. Morphic 할로를 불러내기 위해 World 메뉴에서 한번 파랑 클릭을 하고, 할로를 불러내기 위해, 따로 분리하기 원하는 메뉴 아이템을 다시 한번 파랑 클릭하십시오. 이제 그림 11.1 에 보이는 것 처럼 검정색 손잡이Black handle button.png를 붙잡아 화면 위의 원하는 장소에 끌어다 놓아주세요.


그림 11.1: new morph 라는 메뉴 아이템을, 독립된 버튼으로 만들기 위해 morph 를 떼어 분리합니다.


스퀵을 실행한 후 화면에 보이는 모든 객체는 Morph 이며, 이런 객체들은 Morph 클래스의 인스턴스입니다. Morph 클래스는 많은 메서드를 가지고있는 큰 클래스이며, 작은 코드로도 재미있는 동작을 하는 서브클래스를 만들 수 있십니다. 모든 객체는 moprh 로 만들 수 있습니다만, 어느정도 좋은모양을 가지는지는 객체 자체에 달렸습니다.

Squeak comment.pngString 객체를 표시하기 위해 Morph 를 만드려면, 워크스페이스에서 한번에 한 줄씩 다음 코드를 실행하십시오.

s := 'Morph' asMorph openInWorld.
s openViewerForArgument


첫 번째 줄은, 문자열 'Morph' 를 world 에 나타내가 위해 Morph 를 만들고, 스퀵에서 부르는 이름인 "world" 라는 객체에서 만들어진 Morph 를 엽니다(만들어진 morph 를 표시한다는 거죠). 사용자는 파랑 클릭으로 조작이 가능한 그래픽 구성요소-Morph-를 얻을 수 있어야만 합니다. 두 번째 라인은 화면에서 Morph 의 x와 y 좌표와 같은 이 Morph의 내부를 보여주는 "viewer" 를 엽니다. 노랑 느낌표중 하나를 클릭하면 메시지를 Morph 에 전송하며, 전송한 메시지에 알맞는 결과를 얻을 수 있십니다.


물론, 지금 확인한 그래픽 표현보다 좀 더 재미있는 그래픽 표현을 가지는 Morph 를 정의하는것도 가능합니다. class Object 클래스에 있는 asMorph 메서드의 기본값은 단지 StringMorph 를 만들기만 합니다. 예를 들어 Color tan asMorph, 단지 Color tan printString 의 실행결과를 라벨로 가지는 StringMorph 를 반환합니다. 그러면 이것을 변경해서 색상이 지정되는 직사각형이 반환되도록 해보겠습니다.


Squeak comment.pngColor class에서 브라우저를 열고 다음 메서드를 추가하십시오:

메서드 11.1: Color 의 인스턴스를 위해 morph 얻기

Color>>asMorph
   Morph new color: self


워크스페이스에서 Color orange asMorph openInWorld 를 실행합니다. String 의 Morph 대신에 오렌지색 직사각형을 얻을 수 있습니다!


Notes

  1. Self programming Language 에 대한 내용은 http://en.wikipedia.org/wiki/Self_programming_language 에서 찾을 수 있습니다.