GnuSmalltalkUsersGuide:AdditionalChapter1 20

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.
BLOX.BExtended

BLOX.BExtended

네임스페이스 BLOX에 정의됨

슈퍼클래스: BLOX.BWidget

범주: 그래픽-윈도우


Gui와 마찬가지로 나는 개별 프로토콜을 드러내는 복합(complex) 객체에 대한 기반(base)의 역할을 하지만 내부적으로는 그들의 사용자 인터페이스를 생성하기 위해 Blox 위젯을 사용한다. 하지만 Gui와 달리 내 서브클래스의 인스턴스들은 표준 위젯 프로토콜을 이해한다. 다른 위젯을 리턴하도록 나의 newPrimitive 메서드를 오버라이드하면 그 위젯과 (리스트 박스, 텍스트 박스 또는 심지어 라벨까지 가능) 같이 사용자와 상호작용하지만 다른 프로토콜을 드러내는 클래스를 얻게 될 것이다.


BLOX.BExtended: 접근하기

asPrimitiveWidget

수신자를 구현하는 프리미티브 위젯을 응답하라.


BLOX.BExtended: 맞춤설정(customization)

create

해당 메서드를 호출하고 나면 (호출은 자동으로 이루어짐) 수신자는 '프리미티브' 위젯에 붙을 것이다 (이는 다른 확장 위젯이 될 수 있다). 해당 메서드가 public한 이유는 당신이 그것을 호출할 수 있어서가 아니라 오버라이드가 유용하기 때문이고, 방금 생성한 프리미티브 위젯에 대해 일부 초기화를 실행하기 위해 super로 호출해야 함을 잊어버리지 않기 때문이다; 사실 #create를 오버라이드하는 것이 #newPrimitive를 오버라이드하는 것보다 더 일반적이다. 이와 관련된 예제는 BButtonLike의 구현을 살펴보라.

newPrimitive

수신자의 구현부가 기반으로 하는 새 위젯을 생성하고 응답하라. 해당 메서드는 직접 호출해선 안 된다; 대신 BExtended의 서브클래스에서 오버라이드해야 한다.


Notes