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.

104 6 Einsatz von Basis-Methoden<br />

collect: [:einObjekt|einObjekt asInteger]<br />

|answer|<br />

answer := self species new.<br />

self do: [:element|<br />

answer add:([:einObjekt|einObjekt asInteger] value: element)].<br />

∧ answer<br />

Durch die Ausführung der Anforderung<br />

answer := self species new.<br />

wird eine Instanz der Basis-Klasse “Bag” eingerichtet und der temporären Variablen<br />

“answer” zugeordnet.<br />

ˆ In dieser Situation bewirkt die Message “species”, daß als Ergebnis-Objekt<br />

diejenige Klasse erhalten wird, aus deren Instanziierung das Empfänger-Objekt<br />

von “collect:” hervorgegangen ist.<br />

Bei der anschließenden Ausführung der Message “do:” wird zunächst dem Block-<br />

Parameter “element” ein erstes Objekt von “VarBag” übergeben.<br />

Anschließend erfolgt die Auswertung der folgenden eingeklammerten Message:<br />

([:einObjekt|einObjekt asInteger] value: element)<br />

Dabei wird die Auswertung der Block-Anforderung “einObjekt asInteger” durch<br />

den Einsatz von “value:” veranlaßt. Dies führt dazu, daß dem Block-Parameter<br />

“einObjekt” ein erstes Objekt von “VarBag” übergeben und dann die Anforderung<br />

“einObjekt asInteger” ausgeführt wird.<br />

Daraufhin wird das Ergebnis-Objekt dieser Block-Anforderung durch den Einsatz<br />

von “add:” in den Sammler aufgenommen, auf den die Variable “answer” weist.<br />

In dieser Weise wird für alle weiteren Objekte von “VarBag” verfahren.<br />

Die Ausführung von “collect:” ist dann beendet, wenn alle in “VarBag” enthaltenen<br />

Objekte bearbeitet wurden.<br />

Da das Ergebnis-Objekt der Message “collect:” durch die zuletzt innerhalb der<br />

Methode “collection:” zur Ausführung gebrachte Anforderung<br />

∧ answer<br />

bestimmt ist, resultiert als Ergebnis-Objekt der Message “collect:” derjenige Sammler,<br />

auf den die temporäre Variable “answer” weist, d.h. in diesem Fall ein Bag.<br />

6.3 Logische Methoden<br />

6.3.1 Die Pseudovariablen “true” und “false”<br />

Um bestimmen zu können, daß eine oder mehrere Block-Anforderungen nur dann<br />

ausgeführt werden, wenn eine bestimmte Bedingung erfüllt ist, werden die Pseudovariablen<br />

“true” und “false” benötigt.<br />

ˆ Mit den Pseudovariablen “true” und “false” werden Wahrheitswerte von Bedingungen<br />

beschrieben. Ist eine Bedingung erfüllt, so wird dies durch die

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!