SqueakByExample:2.3: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(SBE 클래스SBECell정의하기 페이지 추가)
 
(형식 수정)
 
(16 intermediate revisions by the same user not shown)
Line 1: Line 1:
==클래스 SBECell 정의하기==
==SBECell 클래스 정의하기==


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


이 템플릿은 NameofSubClass라 불리는 서브클래스를 만들기 위해 오브젝트라 불리는 클래스에 요청을 하여, 그 클래스에 메시지를 보내는 스몰토크 표현식(Smalltalk expression)을 우리에게 보여줍니다. 새로운 클래스는 아무 변수도 갖고 있지 않지만, 카테고리 SBE-Quinto에 반드시 소속되어 있어야 합니다. 우리는 단지 우리가 정말로 원하는 클래스를 만들기 위해 탬플릿을 수정합니다.  
이 템플릿은 Object 클래스에 NameofSubClass 라고 하는 하위클래스를 만들어달라고 요청하는 메시지를 보내는 스몰토크 구문을 보여줍니다. 클래스는 변수가 없으며, ''SBE-Quinto'' 카테고리에 들어갈 것입니다.


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


{{CommentSqueak|다음과 같이 클래스 생성 템플릿(the class creation template)을 수정합니다.}}


{{CommentSqueak|다음과 같이 클래스 생성 템플릿을 수정하십시오.}}
* Object를 SimpleSwitchMorph로 바꾸십시오.
* #NameOfSubClass를 #SBECell로 바꾸십시오.
* mouseAction을 인스턴스 변수 목록에 추가하십시오.


* SimpleSwitchMorph로 오브젝트를 교체합니다.
* SBECell로 NameOfSubClass를 교체합니다.
* mouseAction을 인스턴스 변수의 목록에 추가합니다.


 
결과는 클래스 2.1과 동일합니다.
결과는 반드시 클래스 2.1과 같아야 합니다.
   
   


Line 20: Line 20:
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
SimpleSwitchMorph subclass: #SBECell                                                                           
SimpleSwitchMorph subclass: #SBECell                                                                           
instanceVariableNames: 'mouseAction'                                                                           
  instanceVariableNames: 'mouseAction'                                                                           
classVariableNames: ''                                                                                         
  classVariableNames: ''                                                                                         
poolDictionaries: ''                                                                                             
  poolDictionaries: ''                                                                                             
category: 'SBE--Quinto'                                                                                       
  category: 'SBE-Quinto'                                                                                       
</syntaxhighlight>
</syntaxhighlight>




새로운 정의는 SBECell이라 불리는 서브 클래스를 만들도록 요청하는 메시지를 현존하는 클래스 SimpleSwitchMorph에 보내는 스몰토그 표현식으로 구성되어 있습니다. (실제로, SBECell은 아직까지 존재하지 않으므로, 우리는 앞으로 만들 클래스의 이름을 나타내는 인수 심볼 #SBEcell을 전달(pass)하였습니다) 우리는 또한 마우스가 셀 위에서 클릭 될 때, 새로운 클래스의 인스턴스가, 셀이 어떤 동작을 해야할 지를 지정하기 위해 사용할 mouseAction 인스턴스 변수를 새로운 클래스가 갖도록 표현식을 입력할 것입니다.
정의는 기존의 SimpleSwitchMorph 클래스에 SBECell 하위클래스를 만들어 달라고 요청하기 위해 메시지를 보내는 스몰토그 구문이 있습니다. (실제로, SBECell은 아직 없기 때문에, 앞으로 만들 클래스의 이름인 #SBEcell 심볼을 인자로 전달했습니다.) 또한 마우스를 셀 위에서 클릭할 때, 취해야 할 동작을 정의하기 위해, 사용하는 mouseAction 인스턴스 변수를 새 클래스의 인스턴스가 가지도록 언급하였습니다.
 
''이 시점에서는 여전히 아무 것도 만들지 않았습니다.'' 참고로 클래스 템플릿 창의 테두리가 빨강색으로 바뀌었을 겁니다(그림 2.4). ''저장하지 않은 바뀐 내용'' 이 있음을 의미합니다. 작성한 메시지를 실제로 보내려면 {{Template:HighlightGray|accept}} 해야 합니다.
 
 
[[image:AcceptClassDef.png|none|421px|thumb|그림 2.4: 클래스 생성 템플릿(The class-creation Template)]]


''지금까지, 여러분은 여전히 아무것도 만들지 않았습니다.'' 클래스 탬플릿 패널의 경계가 빨강색으로 변경되어 있는 것에 주목해 주십시오. (그림 2.4) 이 빨강색은  저장되지 않은 변경사항이 있다는 것을 뜻합니다. 실제로 이 메시지를 보내려면 여러분은 반드시 {{Template:HighlightGray|accept}} 를 클릭해야 합니다.


{{CommentSqueak|새 클래스 정의를 accept하십시오.}}


{{CommentSqueak|클래스 정의를 수락(accept)합니다.}}


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


[[image:AcceptClassDef.png|none|421px|thumb|그림 2.4: 클래스 생성 탬플릿(The class-creation Template)]]


노랑-클릭 또는 accept 선택 중 한가지를 실행하거나 바로가기 메뉴 CMD-S를 사용합니다. [“save”(저장)을 위해] 메시지는 새로운 클래스가 컴파일 되도록 원인을 제공하는 SimpleSwitchMorph에 보내질 것입니다.
클래스 정의를 accept 하면 클래스를 만들고 브라우저의 클래스 창에 나타냅니다(그림 2.5). 편집 패인에서는 이제 클래스 정의를 보여주면, 그 아래의 작은 패인에서 클래스의 목적에 대한 설명을 간단하게 작성하도록 알릴 것입니다. 이를 ''클래스 주석''이라고 하며, 이 클래스의 고급 개요를 다른 프로그래머들에게 제공하기 위해 작성하는 상당히 중요한 역할을 담당합니다. 스몰토커는 코드의 가독성에 대한 가치를 매우 높게 평가하며, 메서드에 자세한 주석을 서술할 필요는 없습니다: 코드의 내용은 코드 자신이 만들어야 한다는 철학입니다(만약 그렇지 못하면, 코드가 자신을 제대로 설명할 때까지 계속 리팩토링해야 합니다!). 클래스 주석은 그 클래스에 대한 자세한 설명을 넣을 필요는 없지만, 당신의 뒤에 따라오게될 프로그래머가 이 클래스를 살펴보는데 시간을 소모할 것 같으면, 전체적인 목적에 대한 간단한 설명은 꼭 기입해야 합니다.
일단 클래스 정의가 수락되면, 그 클래스는 제작되고 브라우저의 클래스 패널(그림 2.5)에 나타납니다. 편집 패널은 클래스 정의를 보여주고, 그 밑의 작은 패널은 여러분이 클래스의 목적을 기술하는 약간의 단어를 기록하실 것을 요청할 것입니다.


이것은 클래스 주석(class comment)라 불리며, 다른 프로그래머들에게 클래스의 고급 개요(high level overview)를 제공하는 상당히 중요한 역할을 감당합니다. 스몰토크 사용자는 그들의 코드의 신뢰성(readability)에 매우 높은 가치를 부여하며, 메소드에 상세한 주석을 기입하는 것은 일상적이지 않습니다: 이러한 철학은 ‘코드는 그 자체로 그 역할을 증명한다’는 것을 함의합니다(만약 코드가 코드 자체로 그 역할을 증명하지 못할 때에는, 여러분은 그 코드가 그러한 역할을 수행할 때까지 다시 작성해야 합니다.)


클래스 주석(class comment)는 그 클래스의 세부적인 설명을 포함할 필요가 없지만, 그것의 전체적인 목적을 설명하는 몇 개의 단어는 필수적입니다. 그 이유는 여러분 뒤에 어떤 프로그래머가 그 클래스를 사용한다면, 그 클래스를 들여다 보기 위해 시간을 소모해야 할 지의 여부를 알아야 할 필요가 있기 때문입니다.  
{{CommentSqueak|{{HighlightBold|SBEcell}} 에 대한 클래스 주석을 입력하고, accept it 하면 이후에도 계속 개선할 수 있습니다.}}




{{CommentSqueak|SBEcell을 위한 클래스 주석(class comment)를 타이핑하고, 그것을 수락(accept)합니다. 그 내용은 언제든지 다시 수정하여 개선시킬 수 있습니다.}}


==Notes==
==Notes==

Latest revision as of 14:57, 12 August 2017

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