03.11.2013 Aufrufe

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

11.6 Indirekte Kommunikation 239<br />

Diese Vereinbarung von “changed:” stimmt mit der Vereinbarung überein, die innerhalb<br />

der Klasse “Object” für die Methode “changed:” vorliegt.<br />

Hinweis: Die vorzunehmende Vereinbarung ist nicht redundant, da die in der Klasse<br />

“ViewManager” eingetragene Vereinbarung von “changed:” überdeckt werden muß.<br />

Damit die Methode “changed:” bei der Erfassung eines Wertes zur Ausführung gelangt,<br />

erweitern wir die Methode “erfassenWert:” durch die Anforderung<br />

self changed: self<br />

so daß diese Methode jetzt die folgende Form besitzt:<br />

erfassenWert: aPane<br />

werteBag add: (self paneNamed: ’eingabeFeld’) contents.<br />

(self paneNamed: ’eingabeFeld’) contents: ’’.<br />

(self paneNamed: ’eingabeFeld’) setFocus.<br />

self changed: self<br />

Hinweis: Indem wir “self” als Argument der Message “changed:” aufführen, erreichen<br />

wir, daß die jeweilige Instanziierung, die die Methode “changed:” ausführt, als Argument<br />

an die Message “update:” weitergereicht wird.<br />

Um den Zähler, der bei der Ausführung der Methode “erfassenWert:” um die Zahl<br />

“1” erhöht werden soll, zu sichern, sehen wir – als Unterklasse von “Object” – die<br />

Klasse “ZaehlerWerteErfassung” vor. In dieser Klasse vereinbaren wir – analog zu<br />

der Vereinbarung im Abschnitt 8.2 – die Klassen-Methode “new” in der Form<br />

new<br />

|varWerteErfassung|<br />

varWerteErfassung := super new.<br />

varWerteErfassung initZaehler.<br />

∧ varWerteErfassung<br />

und die Instanz-Methode “initZaehler” wie folgt:<br />

initZaehler<br />

Zaehler isNil ifTrue: [Zaehler := 0]<br />

Damit eine Zähler-Erhöhung durch die indirekte Kommunikation erfolgt, verabreden<br />

wir in der Klasse “ZaehlerWerteErfassung” die Instanz-Methode “update:”<br />

durch<br />

update: aParameter<br />

Zaehler := Zaehler + 1.<br />

self anzeigenZaehler: aParameter<br />

und die hierdurch auszulösende Anzeige des Zählerstandes in Form der Methode<br />

“anzeigenZaehler:” durch:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!