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

ment “self” – vom unabhängigen Objekt (einer Instanziierung der Klasse “WerteErfassung”)<br />

die automatische Zustellung der Message “update:” an das abhängige<br />

Objekt “ZaehlerAbhaengig” durchgeführt. Hierdurch wird die Ausführung der<br />

Methode “anzeigenZaehler:” bewirkt, durch die die aktuelle Anzahl der insgesamt<br />

bislang erfaßten Werte – sowie der Name der jeweiligen Instanziierung des Erfassungsprozesses<br />

– im Transcript-Fenster angezeigt wird.<br />

Hinweis: Dabei ist zu beachten, daß wir innerhalb der Methode “erfassenWert:” der Klasse<br />

“WerteErfassung” keine Angaben über die Instanz “ZaehlerAbhaengig”, die den Zähler<br />

erhöht und die Methode “anzeigenZaehler:” zur gewünschten Anzeige im Transcript-Fenster<br />

ausführt, gemacht haben.<br />

Geben wir in die beiden Erfassungsfenster z.B. jeweils einen Wert ein, so werden<br />

im Transcript-Fenster der Name des unabhängigen Objektes, der Text “– Anzahl<br />

der bislang erfaßten Werte:” und der aktuelle Wert des Attributs “Zaehler” des<br />

abhängigen Objekts z.B. in der folgenden Form angezeigt:<br />

WerteErfassung11 - Anzahl der bislang erfaßten Werte: 1<br />

WerteErfassung12 - Anzahl der bislang erfaßten Werte: 2<br />

Die zuvor beschriebene Lösung läßt sich zusammenfassend wie folgt skizzieren:<br />

Anforderungen zum<br />

Herstellen der<br />

Abhängigkeitsbeziehungen<br />

Anforderung zum<br />

Initiieren der indirekten<br />

Kommunikation<br />

Ausführen der indirekten<br />

Kommunikation<br />

mit der Methode<br />

"changed:"<br />

Ausführen der<br />

vereinbarten Methoden<br />

"update:" und<br />

"anzeigenZaehler:"<br />

WerteErfassung11 addDependent: ZaehlerAbhaengig.<br />

WerteErfassung12 addDependent: ZaehlerAbhaengig<br />

Methode "erfassenWert:" in der Klasse des unabhängigen Objektes:<br />

erfassenWert: aPane<br />

...<br />

self changed: self<br />

Methode "changed:" in der Klasse des unabhängigen Objektes:<br />

changed: aParameter<br />

(Dependents at: self ifAbsent: [#()])<br />

do: [:einObjekt | einObjekt update: aParameter]<br />

Methode "update:" in der Klasse der abhängigen Objekte:<br />

update: aParameter<br />

Zaehler := Zaehler + 1.<br />

self anzeigenZaehler: aParameter<br />

Abbildung 11.8: Indirekte Kommunikation

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!