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.

6.3 Logische Methoden 109<br />

ˆ Instanzen der Klasse “SmallInteger” (d.h. ganze Zahlen von “−32767” bis<br />

“32767”) und der Klasse “Character” sind Objekte, die im <strong>SMALLTALK</strong>-<br />

System nur einmal vorkommen (Unikate).<br />

Somit wird beim Einsatz von Instanzen dieser Klassen immer dasselbe Objekt<br />

angesprochen, so daß zwei in gleicher Weise geschriebene Literale stets<br />

identisch sind.<br />

Hinweis: Weitere Objekte, die im SMALLTALk-System ebenfalls nur einmal vorkommen,<br />

sind die Pseudovariablen “true” bzw. “false” (Instanzen der Klasse “True”<br />

bzw. “False” sowie die Pseudovariable “nil” (eine Instanz der Klasse “UndefinedObject”).<br />

Anders ist der Sachverhalt z.B. bei Strings. Stellen wir z.B. die Anforderungen<br />

Var1 := ’a’.<br />

Var2 := ’a’<br />

so verweisen beide Variablen auf Instanzen der Klasse “String”, deren Attributwerte<br />

gleich dem Zeichen “$a” sind.<br />

Da der Attributwert aus der 1. Zuweisung einen anderen Speicherbereich einnimmt<br />

als der Attributwert aus der 2. Zuweisung, resultiert aus der Prüfung<br />

Var1 == Var2<br />

die Pseudovariable “false” als Ergebnis-Objekt.<br />

Ist es notwendig, identische Strings zu verwenden, so müssen Instanzen der Klasse<br />

“Symbol” eingesetzt werden.<br />

Zum Beispiel liefert der Vergleich<br />

Var1 == Var2<br />

die Pseudovariable “true” als Ergebnis-Objekt, sofern diese Prüfung auf den Zuweisungen<br />

Var1 := ’abc’ asSymbol.<br />

Var2 := ’abc’ asSymbol<br />

basiert.<br />

Dabei hat die Message “asSymbol” die folgende Wirkung:<br />

ˆ “asSymbol”:<br />

Wird die Message “asSymbol” einer Instanziierung der Klasse “String” geschickt,<br />

so wird als Ergebnis-Objekt ein Symbol erhalten, d.h. eine Instanziierung<br />

der Basis-Klasse “Symbol”.<br />

Hinweis: Natürlich resultiert aus dem Vergleich<br />

’abc’ asSymbol == ’abc’ asSymbol<br />

ebenfalls die Pseudovariable “true”.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!