SqueakByExample:2.3: Difference between revisions
Onionmixer (talk | contribs) (문단 수정) |
Onionmixer (talk | contribs) (형식 수정) |
||
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
==SBECell 클래스 정의하기== | ==SBECell 클래스 정의하기== | ||
물론 | 물론 새 카테고리에는 아직 클래스가 없습니다. 하지만 주 편집 패인에서는 새 클래스를 쉽게 만들 수 있도록 기본 템플릿을 보여줍니다(그림 2.3을 보십시오). | ||
이 템플릿은 | 이 템플릿은 Object 클래스에 NameofSubClass 라고 하는 하위클래스를 만들어달라고 요청하는 메시지를 보내는 스몰토크 구문을 보여줍니다. 새 클래스는 변수가 없으며, ''SBE-Quinto'' 카테고리에 들어갈 것입니다. | ||
정말로 클래스를 만들어 보기 위해 템플릿을 간단히 수정해보겠습니다. | |||
{{CommentSqueak|클래스 생성 | {{CommentSqueak|다음과 같이 클래스 생성 템플릿을 수정하십시오.}} | ||
* | * Object를 SimpleSwitchMorph로 바꾸십시오. | ||
* # | * #NameOfSubClass를 #SBECell로 바꾸십시오. | ||
* mouseAction을 | * mouseAction을 인스턴스 변수 목록에 추가하십시오. | ||
Line 23: | Line 23: | ||
classVariableNames: '' | classVariableNames: '' | ||
poolDictionaries: '' | poolDictionaries: '' | ||
category: 'SBE | category: 'SBE-Quinto' | ||
</syntaxhighlight> | </syntaxhighlight> | ||
이 | 이 새 정의는 기존의 SimpleSwitchMorph 클래스에 SBECell 하위클래스를 만들어 달라고 요청하기 위해 메시지를 보내는 스몰토그 구문이 있습니다. (실제로, SBECell은 아직 없기 때문에, 앞으로 만들 클래스의 이름인 #SBEcell 심볼을 인자로 전달했습니다.) 또한 마우스를 셀 위에서 클릭할 때, 취해야 할 동작을 정의하기 위해, 사용하는 mouseAction 인스턴스 변수를 새 클래스의 인스턴스가 가지도록 언급하였습니다. | ||
'' | ''이 시점에서는 여전히 아무 것도 만들지 않았습니다.'' 참고로 클래스 템플릿 창의 테두리가 빨강색으로 바뀌었을 겁니다(그림 2.4). ''저장하지 않은 바뀐 내용'' 이 있음을 의미합니다. 작성한 메시지를 실제로 보내려면 {{Template:HighlightGray|accept}} 해야 합니다. | ||
[[image:AcceptClassDef.png|none|421px|thumb|그림 2.4: 클래스 생성 템플릿(The class-creation Template)]] | |||
{{CommentSqueak|새 클래스 정의를 accept하십시오.}} | |||
노랑-클릭을 하고 {{HighlightGray|accept}}를 선택하거나, (저장을 위해) CMD-s 단축키를 사용하십시오. 새 클래스를 컴파일 하도록 SimpleSwitchMorph 에 메시지를 보내게 될 것입니다. | |||
클래스 정의를 accept 하면 클래스를 만들고 브라우저의 클래스 창에 나타냅니다(그림 2.5). 편집 패인에서는 이제 클래스 정의를 보여주면, 그 아래의 작은 패인에서 클래스의 목적에 대한 설명을 간단하게 작성하도록 알릴 것입니다. 이를 ''클래스 주석''이라고 하며, 이 클래스의 고급 개요를 다른 프로그래머들에게 제공하기 위해 작성하는 상당히 중요한 역할을 담당합니다. 스몰토커는 코드의 가독성에 대한 가치를 매우 높게 평가하며, 메서드에 자세한 주석을 서술할 필요는 없습니다: 코드의 내용은 코드 자신이 만들어야 한다는 철학입니다(만약 그렇지 못하면, 코드가 자신을 제대로 설명할 때까지 계속 리팩토링해야 합니다!). 클래스 주석은 그 클래스에 대한 자세한 설명을 넣을 필요는 없지만, 당신의 뒤에 따라오게될 프로그래머가 이 클래스를 살펴보는데 시간을 소모할 것 같으면, 전체적인 목적에 대한 간단한 설명은 꼭 기입해야 합니다. | |||
{{CommentSqueak|{{HighlightBold|SBEcell}} 에 대한 클래스 주석을 입력하고, accept it 하면 이후에도 계속 개선할 수 있습니다.}} | |||
==Notes== | ==Notes== |
Latest revision as of 14:57, 12 August 2017
SBECell 클래스 정의하기
물론 새 카테고리에는 아직 클래스가 없습니다. 하지만 주 편집 패인에서는 새 클래스를 쉽게 만들 수 있도록 기본 템플릿을 보여줍니다(그림 2.3을 보십시오).
이 템플릿은 Object 클래스에 NameofSubClass 라고 하는 하위클래스를 만들어달라고 요청하는 메시지를 보내는 스몰토크 구문을 보여줍니다. 새 클래스는 변수가 없으며, SBE-Quinto 카테고리에 들어갈 것입니다.
정말로 클래스를 만들어 보기 위해 템플릿을 간단히 수정해보겠습니다.
- 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 해야 합니다.
노랑-클릭을 하고 accept를 선택하거나, (저장을 위해) CMD-s 단축키를 사용하십시오. 새 클래스를 컴파일 하도록 SimpleSwitchMorph 에 메시지를 보내게 될 것입니다.
클래스 정의를 accept 하면 클래스를 만들고 브라우저의 클래스 창에 나타냅니다(그림 2.5). 편집 패인에서는 이제 클래스 정의를 보여주면, 그 아래의 작은 패인에서 클래스의 목적에 대한 설명을 간단하게 작성하도록 알릴 것입니다. 이를 클래스 주석이라고 하며, 이 클래스의 고급 개요를 다른 프로그래머들에게 제공하기 위해 작성하는 상당히 중요한 역할을 담당합니다. 스몰토커는 코드의 가독성에 대한 가치를 매우 높게 평가하며, 메서드에 자세한 주석을 서술할 필요는 없습니다: 코드의 내용은 코드 자신이 만들어야 한다는 철학입니다(만약 그렇지 못하면, 코드가 자신을 제대로 설명할 때까지 계속 리팩토링해야 합니다!). 클래스 주석은 그 클래스에 대한 자세한 설명을 넣을 필요는 없지만, 당신의 뒤에 따라오게될 프로그래머가 이 클래스를 살펴보는데 시간을 소모할 것 같으면, 전체적인 목적에 대한 간단한 설명은 꼭 기입해야 합니다.
SBEcell 에 대한 클래스 주석을 입력하고, accept it 하면 이후에도 계속 개선할 수 있습니다.