03.11.2013 Aufrufe

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

200 9 Einrichtung und Verarbeitung von Sammlern<br />

Instanzen von “SortedCollection” ausgeschlossen. Dies wird in der Klasse “SortedCollection”<br />

innerhalb der Methode “at:put:” durch den Einsatz der Methode “invalidMessage”<br />

in der Form<br />

at: anInteger put: anObject<br />

∧ self invalidMessage<br />

erreicht.<br />

9.6 Indirekte Message-Zustellung<br />

Neben der bislang vorgestellten Möglichkeit, ein Objekt durch die ihm zugestellte<br />

Message direkt zur Ausführung einer Methode zu veranlassen, kann eine Message<br />

auch indirekt zugestellt werden.<br />

Hierzu lassen sich die beiden Basis-Methoden “perform:” und “perform:with:” verwenden.<br />

ˆ “perform:”:<br />

Durch den Einsatz der Message “perform:” wird dem Empfänger-Objekt diejenige<br />

unäre Message zugestellt, deren Message-Selektor – eingeleitet durch<br />

das Symbolzeichen “#” – als Argument von “perform:” aufgeführt ist.<br />

ˆ “perform:with:”:<br />

Durch die Keyword-Message “perform:with:” läßt sich dem Empfänger-Objekt<br />

eine binäre Message oder eine Keyword-Message mit einem Argument zustellen.<br />

Dabei ist der zugehörige Message-Selektor – eingeleitet durch das Symbolzeichen<br />

“#” – als Argument hinter dem Selektor “perform:” und das zu<br />

diesem Message-Selektor zugehörige Argument hinter dem Selektor “with:”<br />

als Argument aufzuführen.<br />

Hinweis: Ist es notwendig, eine Keyword-Message mit zwei oder drei Argumenten<br />

indirekt zustellen zu lassen, so können die Messages “perform:with:with:” bzw.<br />

“perform:with:with:with:” verwendet werden. Sollen mehr als drei Argumente mitgeteilt<br />

werden, so können die Argumente z.B. innerhalb einer Instanz der Klasse<br />

“Array” gesammelt und diese Instanz als Argument des Selektors “with:” innerhalb<br />

der Message “perform:with:” übermittelt werden.<br />

Vereinbaren wir z.B. in der Klasse “WerteErfassung” eine Methode namens “aendernBag:wert:”<br />

in der Form<br />

aendernBag: einSelektor wert: einString<br />

werteBag perform: einSelektor with: einString<br />

so können wir eine Anforderung der Form<br />

WerteErfassung11 aendernBag: #add: wert: ’37’<br />

an die durch die globale Variable “WerteErfassung11” gekennzeichnete Instanz der<br />

Klasse “WerteErfassung” richten.<br />

Durch diese Anforderung wird “WerteErfassung11” die Message “add:” mit dem<br />

Argument “37” zugestellt, so daß der Instanz-Variablen “werteBag” der Wert “37”<br />

hinzugefügt wird.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!