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.3 Sammler ohne direkten Zugriff 179<br />

Ungeordnete Sammler<br />

Bag<br />

Set<br />

Dictionary<br />

Geordnete Sammler<br />

Sammler mit direktem<br />

Zugriff über Index−<br />

Position oder Key<br />

Array<br />

Interval<br />

String<br />

OrderedCollection<br />

SortedCollection<br />

Abbildung 9.3: Einteilung der Unterklassen von “Collection”<br />

9.3 Sammler ohne direkten Zugriff<br />

9.3.1 Die Basis-Klasse “Bag”<br />

Als unmittelbare Unterklasse der abstrakten Klasse “Collection” ist die Basis-Klasse<br />

“Bag” in der Klassen-Hierarchie eingetragen.<br />

Ein Bag stellt die allgemeinste Form eines Sammlers dar.<br />

ˆ Bei einem Bag ist die Anzahl der sammelbaren Objekte variabel, so daß sie<br />

nicht bei der Instanziierung festgelegt werden muß.<br />

ˆ Es können beliebige Objekte gesammelt werden. Die Sammlung der Objekte<br />

erfolgt ungeordnet, so daß die Objekte nicht gemäß einer Reihenfolge gespeichert<br />

werden. Ferner ist auch kein direkter Zugriff auf ein einzelnes Objekt<br />

über einen Zugriffsschlüssel möglich.<br />

ˆ Die gesammelten Objekte müssen nicht eindeutig sein, so daß gleiche Objekte<br />

mehrfach auftreten dürfen.<br />

In der Klasse “Bag” stehen Basis-Methoden zur Verfügung, mit denen sich Instanzen<br />

der Klasse “Bag” erweitern, prüfen oder iterativ bearbeiten lassen. In dieser Hinsicht<br />

sind uns unter anderem die Methoden “add:”, “remove:”, “occurrencesOf:”, “size”<br />

und “do:” bekannt.<br />

Hinweis: Neben der Methode “remove:” steht z.B. die Basis-Methode “remove:ifAbsent:”<br />

zur Verfügung. Mit dieser Methode kann in dem Fall, in dem ein Objekt aus einem Bag<br />

gelöscht werden soll, das nicht vorhanden ist, eine qualifizierte Meldung im Transcript-<br />

Fenster angezeigt werden – z.B. ist die Anforderung<br />

VarBag remove:99 ifAbsent:[Transcript cr; show: ’ungültiger Wert’]<br />

möglich.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!