GnuSmalltalkUsersGuide:AdditionalChapter1 20

From 흡혈양파의 번역工房
Jump to navigation Jump to search
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