SqueakByExample:11.1

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.

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 에서 찾을 수 있습니다.