SqueakByExample:2.3

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.

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