SqueakByExample:2.3: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(몇가지 사소한 수정)
(번역수정)
(One intermediate revision by the same user not shown)
Line 1: Line 1:
==SBECell 클래스 정의하기==
==SBECell 클래스 정의하기==


물론 아직까지, 새로운 카테고리에 어떤 클래스도 들어있지 않습니다. 하지만, 새로운 클래스를 쉽게 만들 수 있도록 메인 편집 창<sup>the main editing pane</sup>이 탬플릿을 표시합니다. (그림 2.3을 보십시오)
물론 카테고리에 아직 클래스가 없습니다. 하지만 주 편집 창에서는 새 클래스를 쉽게 만들 수 있도록 템플릿을 보여줍니다(그림 2.3을 보십시오).


이 템플릿은 NameofSubClass라 불리는 하위 클래스를 만들기 위해 오브젝트라 불리는 클래스에 요청을 하여, 그 클래스에 메시지를 보내는 스몰토크 구문<sup>Smalltalk expression</sup>을 보여줍니다. 새로운 클래스는 아무 변수도 갖고 있지 않지만, 카테고리 ''SBE-Quinto''에 반드시 속해 있어야 합니다.
이 템플릿은 Object 클래스에 NameofSubClass라고 하는 하위 클래스를 만들어달라고 요청하는 메시지를 보내는 스몰토크 구문을 보여줍니다. 새 클래스에는 변수가 없으며, 카테고리 ''SBE-Quinto'' 카테고리에 들어갑니다.


이제부터 정말로 원하는 클래스를 만들기 위해서 템플릿을 간단히 수정해보겠습니다.
정말로 클래스를 만들어 보기 위해 템플릿을 간단히 수정해보겠습니다.




{{CommentSqueak|클래스 생성 템플릿<sup>the class creation template</sup>을 수정하기 위해 아래의 과정대로 진행하십시오}}
{{CommentSqueak|다음과 같이 클래스 생성 템플릿을 수정하십시오.}}
* 코드상에 보이는 Object를 SimpleSwitchMorph로 수정하십시오.
* Object를 SimpleSwitchMorph로 바꾸십시오.
* #NameOfSubClass로 되어있는 부분을 #SBECell로 수정하십시오.
* #NameOfSubClass를 #SBECell로 바꾸십시오.
* mouseAction을 코드상에 보이는 instanceVariableNames에 추가하십시오.
* mouseAction을 인스턴스 변수 목록에 추가하십시오.




Line 27: Line 27:




새로운 정의는 SBECell이라 불리는 하위 클래스를 만들도록 요청하는 메시지를 현존하는 클래스 SimpleSwitchMorph에 보내는 스몰토그 구문으로 구성되어 있습니다. (실제로, SBECell은 아직까지 존재하지 않으므로, 앞으로 만들 클래스의 이름을 나타내는 인수 심볼 #SBEcell을 전달하였습니다) 또한 마우스를 위에서 클릭할 때, 새로운 클래스의 인스턴스가, 셀이 어떤 동작을 해야할 지를 지정하기 위해 사용할 mouseAction 인스턴스 변수를 새로운 클래스가 갖도록 구문을 입력할 것입니다.
정의는 기존의 SimpleSwitchMorph 클래스에 SBECell 하위 클래스를 만들어 달라고 요청하기 위해 메시지를 보내는 스몰토그 구문이 있습니다. (실제로, SBECell은 아직 없기 때문에, 앞으로 만들 클래스의 이름인 #SBEcell 심볼을 인자로 전달했습니다.) 또한 마우스를 위에서 클릭할 때, 취해야 할 동작을 정의하려 사용하는 mouseAction 인스턴스 변수를 새 클래스의 인스턴스가 갖도록 언급하였습니다.


''지금까지, 여러분은 여전히 아무것도 만들지 않은 상태입니다.'' 클래스 탬플릿 패널의 경계가 빨강색으로 바뀌어 있는 것에 주목해 주십시오. (그림 2.4) 이 빨강색은 저장하지 않은 변경사항이 있다는 것을 의미합니다. 실제로 (수정된)메시지를 보내려면 여러분은 반드시 {{Template:HighlightGray|accept}} 를 클릭해야 합니다.
''이 시점에서 여전히 아무 것도 만들지 않았습니다.'' 참고로 클래스 템플릿 창의 테두리가가 빨강색으로 바뀌었습니다(그림 2.4). ''저장하지 않은 바뀐 내용''이 있음을 의미합니다. 이 메시지를 실제로 보내려면 {{Template:HighlightGray|accept}} 해야 합니다.




{{CommentSqueak|클래스 정의를 Accept하십시오.}}
[[image:AcceptClassDef.png|none|421px|thumb|그림 2.4: 클래스 생성 템플릿(The class-creation Template)]]




[[image:AcceptClassDef.png|none|421px|thumb|그림 2.4: 클래스 생성 탬플릿(The class-creation Template)]]
{{CommentSqueak|새 클래스 정의를 accept하십시오.}}




(저장을 위해) 노랑-클릭 또는 {{HighlightGray|accept}}를 선택하는 것 중 한가지를 실행하거나 바로가기 메뉴 CMD-s를 사용합니다. 메시지는 새로운 클래스가 컴파일 되도록 하는 SimpleSwitchMorph에 보낼 것입니다.
노랑-클릭을 하고 {{HighlightGray|accept}}를 선택하거나, (저장을 위해)  CMD-s 단축키를 사용하십시오. 새 클래스를 컴파일 하도록 SimpleSwitchMorph에 메시지를 보낼 것입니다.




일단 클래스 정의를 수락하면, 그 클래스가 만들어지고 브라우저의 클래스 패널(그림 2.5)에 나타납니다. 편집 패널은 클래스 정의를 보여주고, 그 밑의 작은 패널은 여러분이 클래스의 목적을 의미하는 약간의 단어를 적어줄 것을 요청할 것입니다. 이것을 클래스 주석이라 부르며, 다른 프로그래머들에게 클래스의 고급 개요<sup>high level overview</sup>를 제공하는 상당히 중요한 역할을 담당합니다. 스몰토크 사용자는 그들의 코드의 신뢰성에 매우 높은 가치를 부여하며, 메소드에 상세한 주석을 기입하는 것은 일상적이지 않습니다: 이러한 철학은 '코드는 그 자체로 그 역할을 증명한다' 는 것을 의미합니다.(만약 코드가 코드 자체로 그 역할을 증명하지 못 할 때에는, 여러분은 그 코드가 그러한 역할(코드 자체가 주석)을 수행할 때까지 다시 작성해야 합니다.) 클래스 주석은 그 클래스의 세부적인 설명을 포함할 필요가 없지만, 클래스의 전체적인 목적을 설명하는 몇 개의 단어는 필수로 사용해야 합니다. 그 이유는 여러분 뒤에 어떤 프로그래머가 클래스를 사용한다면, 그 클래스를 살펴보기 위해 시간을 소모해야 할 지의 여부를 알아야 할 필요가 있기 때문입니다.
클래스 정의를 accept 하면 클래스를 만들고 브라우저의 클래스 창에 나타납니다(그림 2.5). 편집 창에서는 이제 클래스 정의를 보여주면, 그 아래의 작은 창에서 클래스의 목적에 대한 설명을 간단하게 작성하도록 알릴 것입니다. 이를 ''클래스 주석''이라고 하며, 이 클래스의 고급 개요를 다른 프로그래머들에게 제공하기 위해 작성하는 상당히 중요한 역할을 담당합니다. 스몰토커는 코드의 가독성에 대한 가치를 매우 높게 쳐주며, 메서드에 자세한 주석을 달 필요는 없습니다: 코드의 내용은 코드 자신이 만들어야 한다는 철학입니다(만약 그렇지 못하면, 코드가 자신을 제대로 설명할 때까지 셰속 리팩토링해야 합니다!). 클래스 주석은 그 클래스에 대한 자세한 설명을 넣을 필요는 없지만, 여러분 다음에 따라오는 프로그래머가 클래스를 살펴보는데 시간을 소모할 것 같으면, 전체적인 목적에 대한 간단한 설명은 단연 필수입니다.




{{CommentSqueak|{{HighlightBold|SBEcell}}을 위한 클래스 주석을 입력하고, Accept를 선택 하십시오. 그 내용은 언제든지 다시 수정하여 개량할 수 있습니다.}}
{{CommentSqueak|{{HighlightBold|SBEcell}}에 대한 클래스 주석을 입력하고, accept it하시면 다음에도 계속 개선할 수 있습니다.}}


==Notes==
==Notes==

Revision as of 14:28, 20 March 2013

SBECell 클래스 정의하기

물론 새 카테고리에 아직 클래스가 없습니다. 하지만 주 편집 창에서는 새 클래스를 쉽게 만들 수 있도록 템플릿을 보여줍니다(그림 2.3을 보십시오).

이 템플릿은 Object 클래스에 NameofSubClass라고 하는 하위 클래스를 만들어달라고 요청하는 메시지를 보내는 스몰토크 구문을 보여줍니다. 새 클래스에는 변수가 없으며, 카테고리 SBE-Quinto 카테고리에 들어갑니다.

정말로 클래스를 만들어 보기 위해 템플릿을 간단히 수정해보겠습니다.


Squeak comment.png다음과 같이 클래스 생성 템플릿을 수정하십시오.

  • Object를 SimpleSwitchMorph로 바꾸십시오.
  • #NameOfSubClass를 #SBECell로 바꾸십시오.
  • mouseAction을 인스턴스 변수 목록에 추가하십시오.


결과는 클래스 2.1과 동일합니다.


클래스 2.1: 클래스 SBECell 정의하기

SimpleSwitchMorph subclass: #SBECell                                                                          
  instanceVariableNames: 'mouseAction'                                                                           
  classVariableNames: ''                                                                                         
  poolDictionaries: ''                                                                                            
  category: 'SBE-Quinto'


이 새 정의는 기존의 SimpleSwitchMorph 클래스에 SBECell 하위 클래스를 만들어 달라고 요청하기 위해 메시지를 보내는 스몰토그 구문이 있습니다. (실제로, SBECell은 아직 없기 때문에, 앞으로 만들 클래스의 이름인 #SBEcell 심볼을 인자로 전달했습니다.) 또한 마우스를 칸 위에서 클릭할 때, 취해야 할 동작을 정의하려 사용하는 mouseAction 인스턴스 변수를 새 클래스의 인스턴스가 갖도록 언급하였습니다.

이 시점에서 여전히 아무 것도 만들지 않았습니다. 참고로 클래스 템플릿 창의 테두리가가 빨강색으로 바뀌었습니다(그림 2.4). 저장하지 않은 바뀐 내용이 있음을 의미합니다. 이 메시지를 실제로 보내려면 accept 해야 합니다.


그림 2.4: 클래스 생성 템플릿(The class-creation Template)


Squeak comment.png새 클래스 정의를 accept하십시오.


노랑-클릭을 하고 accept를 선택하거나, (저장을 위해) CMD-s 단축키를 사용하십시오. 새 클래스를 컴파일 하도록 SimpleSwitchMorph에 메시지를 보낼 것입니다.


클래스 정의를 accept 하면 클래스를 만들고 브라우저의 클래스 창에 나타납니다(그림 2.5). 편집 창에서는 이제 클래스 정의를 보여주면, 그 아래의 작은 창에서 클래스의 목적에 대한 설명을 간단하게 작성하도록 알릴 것입니다. 이를 클래스 주석이라고 하며, 이 클래스의 고급 개요를 다른 프로그래머들에게 제공하기 위해 작성하는 상당히 중요한 역할을 담당합니다. 스몰토커는 코드의 가독성에 대한 가치를 매우 높게 쳐주며, 메서드에 자세한 주석을 달 필요는 없습니다: 코드의 내용은 코드 자신이 만들어야 한다는 철학입니다(만약 그렇지 못하면, 코드가 자신을 제대로 설명할 때까지 셰속 리팩토링해야 합니다!). 클래스 주석은 그 클래스에 대한 자세한 설명을 넣을 필요는 없지만, 여러분 다음에 따라오는 프로그래머가 이 클래스를 살펴보는데 시간을 소모할 것 같으면, 전체적인 목적에 대한 간단한 설명은 단연 필수입니다.


Squeak comment.pngSBEcell에 대한 클래스 주석을 입력하고, accept it하시면 다음에도 계속 개선할 수 있습니다.

Notes