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.

9.4 Sammler mit direktem Zugriff 181<br />

9.4 Sammler mit direktem Zugriff<br />

Sofern die gesammelten Objekte direkt zugreifbar sein sollen, dürfen es keine Instanziierungen<br />

der Klassen “Bag” und “Set” sein. In diesem Fall müssen sie in<br />

Abhängigkeit vom jeweiligen Lösungsplan aus Instanziierungen der Klasse “Dictionary”,<br />

der Unterklassen der abstrakten Klasse “FixedSizeCollection” oder der<br />

Klassen “OrderedCollection” bzw. “SortedCollection” resultieren.<br />

9.4.1 Die Basis-Klasse “Dictionary”<br />

Die Basis-Klasse “Dictionary” ist eine direkte Unterklasse der Klasse “Set”. Eine<br />

Instanz dieser Klasse wird als Dictionary bezeichnet. Über die Eigenschaften eines<br />

Dictionarys haben wir im Abschnitt 8.3 folgendes festgestellt:<br />

ˆ Ein Dictionary ist eine Sammlung von Key-Value-Paaren, bei denen ein Key<br />

– als Zugriffsschlüssel – eindeutig auf einen Value weist, bei dem es sich um<br />

ein beliebiges Objekt handeln kann.<br />

Hinweis: Key-Value-Paare sind Instanzen der Basis-Klasse “Association”.<br />

Wird eine Variable an der Position eines Keys innerhalb einer Message eingetragen, so<br />

wird dasjenige Objekt als Key verwendet, auf das diese Variable verweist.<br />

Dictionarys werden z.B. dann eingesetzt, wenn in Lösungsplänen festgelegt ist, daß<br />

Objekte über einen Schlüssel assoziativ zugreifbar sein sollen – wie es z.B. bei einem<br />

Lexikon der Fall ist, bei dem Texte über einzelne Wörter auffindbar sind.<br />

Key-Value-Paare lassen sich durch die Basis-Methode “at:put:” in ein Dictionary<br />

eintragen.<br />

ˆ “at:put:”:<br />

In dem Dictionary, das als Empfänger-Objekt der Message “at:put:” aufgeführt<br />

ist, wird ein neues Key-Value-Paar als Objekt eingetragen. Dabei wird<br />

das Argument von “at:” als Key und das Argument von “put:” als Value verwendet.<br />

Als Ergebnis-Objekt resultiert dasjenige Objekt, das dem Key zugeordnet<br />

wird. Es ist zu beachten, daß ein Key nicht mehrfach auftreten kann.<br />

Hinweis: Ist ein hinter “at:” angegebener Key bereits vorhanden, so wird der zugehörige<br />

Value durch das als Argument von “put:” aufgeführte Objekt ersetzt.<br />

Zum Beispiel bewirken die Anforderungen<br />

VarDic := Dictionary new.<br />

VarDic at: ’eins’ put: ’one’; at: ’zwei’ put: ’two’<br />

die Einrichtung einer Instanz der Klasse “Dictionary”, in der zwei Key-Value-Paare<br />

gesammelt sind. Dabei ist dem Key ’eins’ der Value ’one’ und dem Key ’zwei’ der<br />

Value ’two’ zugeordnet.<br />

Hinweis: Sind wir nicht am Ergebnis-Objekt der Message “at:put:”, sondern an der<br />

Anzeige des resultierenden Empfänger-Objektes interessiert, so können wir die Message<br />

“yourself” oder aber eine primäre Message durch die alleinige Angabe des Dictionarys

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!