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 237<br />

ˆ “addDependent:”: Durch den Einsatz der Message “addDependent:” wird<br />

das Empfänger-Objekt als unabhängiges Objekt und das als Argument aufgeführte<br />

Objekt als das diesem Objekt zugeordnete abhängige Objekt vereinbart.<br />

Diese Zuordnung wird in einem Dictionary festgehalten, auf das die<br />

globale Variable “Dependents” verweist.<br />

Hinweis: Beim Einsatz der Message “addDependent:” ist es möglich, einem unabhängigen<br />

Objekt mehrere abhängige Objekte zuzuordnen.<br />

Um sämtliche Abhängigkeitsbeziehungen wieder aufzuheben, kann die Anforderung<br />

Dependents := Dictionary new<br />

gestellt werden.<br />

Sind Abhängigkeiten zwischen Objekten festgelegt worden, so lassen sich den abhängigen<br />

Objekten automatisch spezielle Messages – namens “update:” – zustellen,<br />

sofern eine besondere Message – namens “changed:” – einem unabhängigen Objekt<br />

zugestellt wird.<br />

ˆ “changed:”:<br />

Sämtlichen dem Empfänger-Objekt als abhängige Objekte zugeordneten Objekten<br />

wird automatisch die Message “update:” zugestellt. Das aufgeführte<br />

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

Hinweis: Als Argument der Message “changed:” kann z.B. unter Einsatz der Pseudovariablen<br />

“self” das unabhängige Objekt oder z.B. ein Methoden-Selektor in Form<br />

eines Symbols aufgeführt werden.<br />

ˆ “update:”:<br />

Die zu dieser Message gehörige Methode muß geeignet – als Redefinition<br />

der Basis-Methode “update:” – vereinbart werden, so daß sie den Instanzen<br />

der Klasse der abhängigen Objekte bekannt ist. Bei dieser Methoden-<br />

Vereinbarung sind diejenigen Anforderungen festzulegen, die von den abhängigen<br />

Objekten ausgeführt werden sollen, falls dem zugehörigen unabhängigen<br />

Objekt die Message “changed:” geschickt wird. Dabei wird das Argument der<br />

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

Hinweis: Es ist zu beachten, daß die Message-Selektoren “changed:” und “update:” vom<br />

<strong>SMALLTALK</strong>-System fest vorgegeben sind. Zur Übergabe zweier bzw. dreier Argumente<br />

sind die Methode “changed:with:” und die korrespondierende Methode “update:with:”<br />

bzw. “changed:with:with:” und die korrespondierende Methode “update:with:with:” zu<br />

verwenden.<br />

Um ein einfaches Beispiel für die indirekte Kommunikation zu geben, betrachten<br />

wir die folgende Problemstellung:<br />

ˆ PROB-8:<br />

Während eines oder mehrerer paralleler Erfassungsprozesse soll die Anzahl<br />

der insgesamt erfaßten Punktwerte gezählt und bei jedem erfaßten Punktwert<br />

die Anzahl der bislang erfaßten Werte sowie der Name der Instanziierung des<br />

jeweiligen Erfassungsprozesses im Transcript-Fenster protokolliert werden.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!