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.

15.1 Prüfung von Direktverbindungen 309<br />

verbindungIter: ankunft<br />

| nachfolgerSammler |<br />

nachfolgerSammler := OrderedCollection new.<br />

nachfolgerSammler add: self.<br />

self verbindung: nachfolgerSammler iter: ankunft<br />

bzw. wie folgt:<br />

verbindung: nachfolgerSammler iter: ankunft<br />

| varSammler erfolg |<br />

varSammler := nachfolgerSammler.<br />

erfolg := false.<br />

[ (erfolg == false) and: [varSammler isEmpty not] ]<br />

whileTrue: [(varSammler includes: ankunft)<br />

ifTrue: [erfolg := true]<br />

ifFalse:[varSammler := self alleNachfolger: varSammler]].<br />

erfolg ifTrue: [Transcript cr; show:’IC-Verb existiert’]<br />

ifFalse:[Transcript cr; show:’keine IC-Verb’]<br />

Hinweis: Da das Argument “nachfolgerSammler” der Methode “verbindung:iter:” nicht<br />

auf der linken Seite einer Zuweisung auftreten darf, müssen wir den jeweils aktuellen<br />

Nachfolger-Sammler der temporären Variablen “varSammler” zuweisen.<br />

Bei der Ausführung der Methode “verbindung:iter:” werden – solange der aktuelle<br />

Nachfolger-Sammler nicht leer ist – durch den Einsatz der Methode “whileFalse:”<br />

gleiche Anforderungen wiederholt ausgeführt.<br />

Dabei setzen wir zur Ermittlung des jeweils aktuellen Nachfolger-Sammlers die Message<br />

“alleNachfolger:” mit dem zuletzt ermittelten Nachfolger-Sammler als Argument<br />

ein und weisen das Ergebnis-Objekt dieser Message jeweils der temporären<br />

Variablen “varSammler” durch die Anforderung<br />

varSammler := self alleNachfolger: varSammler<br />

sukzessive zu.<br />

Im folgenden wollen wir eine elegantere Lösung vorstellen, bei der wir sowohl auf<br />

die Programmierung einer Schleife als auch auf die Zuweisung an die Variable “var-<br />

Sammler” verzichten. Dies läßt sich dadurch erreichen, daß der jeweils aktuelle<br />

Nachfolger-Sammler als Argument einer rekursiven Methode aufgeführt wird.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!