SqueakByExample:2.3
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 하면 이후에도 계속 개선할 수 있습니다.