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.

156 8 Klassen und Meta-Klassen<br />

Objekte nicht durch “new” instanziiert werden dürfen. Wie wir bereits im Abschnitt<br />

3.2 beschrieben haben, werden alle Literale wie z.B. Zahlen oder Zeichenketten<br />

(Strings) allein dadurch instanziiert, daß sie innerhalb von Messages als Empfänger-<br />

Objekte bzw. als Argumente durch “Hinschreiben” aufgeführt werden.<br />

Hinweis: Eine Anforderung der Form “Integer new” führt z.B. zur Anzeige des Walkback-<br />

Fensters (siehe Anhang A.3) mit der Fehlermeldung “inappropriate message for this object”.<br />

Diese Meldung erklärt sich daraus, daß innerhalb einer unmittelbaren Oberklasse<br />

(“Number”) der Klasse “Integer” die zugehörige Klassen-Methode “new” zur Verfügung<br />

gehalten wird, bei deren Ausführung die Ausgabe der Fehlermeldung durch die Ausführung<br />

der Methode “invalidMessage” der Klasse “Object” vorgenommen wird.<br />

8.2 Klassen-Variablen<br />

Vereinbarung von Klassen-Variablen<br />

Bei der Vereinbarung einer Klasse lassen sich nicht nur Klassen-Methoden, sondern<br />

auch klassen-spezifische Eigenschaften verabreden. Diese Eigenschaften sind durch<br />

Klassen-Attribute festgelegt, die auf sämtliche Instanzen der jeweiligen Klasse wirken.<br />

ˆ In jeder Klasse lassen sich eine oder mehrere Klassen-Variablen einrichten.<br />

Es handelt sich – ähnlich wie bei den globalen Variablen – um Variablen, die<br />

von allen Instanzen der jeweiligen Klasse gemeinsam benutzt werden können.<br />

Daher sind ihre Variablennamen nach denselben Regeln aufzubauen, wie sie<br />

für die Namen von globalen Variablen festgelegt sind.<br />

Hinweis: Im Unterschied zu den globalen Variablen, die wir bisher kennengelernt<br />

haben, sind Klassen-Variablen nur “global” bezüglich der Klasse, in der sie vereinbart<br />

sind, sowie allen dieser Klasse untergeordneten Klassen.<br />

Klassen-Variablen sind bei der Vereinbarung einer Klasse festzulegen. Dabei sind<br />

die Namen einer oder mehrerer Klassen-Variablen insgesamt in Hochkommata einzufassen<br />

und hinter den zu verabredenden Instanz-Variablen in der folgenden Form<br />

aufzuführen:<br />

instanceVariableNames: ’instanz-variablen’<br />

classVariableNames: ’klassen-variablen’<br />

ˆ Im Gegensatz zu den Instanz-Variablen sind Klassen-Variablen nicht Bestandteile<br />

einer Instanz.<br />

Da jede Instanz “weiß”, aus welcher Klasse sie instanziiert wurde, kann von jeder<br />

Instanz der Klasse, in der eine Klassen-Variable vereinbart ist – mittels einer<br />

Klassen- oder Instanz-Methode – auf das der Klassen-Variablen zugeordnete Objekt<br />

zugegriffen werden. Ferner kann jede Instanz einer untergeordneten Klasse auf die<br />

Klassen-Variablen der übergeordneten Klassen zugreifen.<br />

Hinweis: Es ist zu beachten, daß eine Klassen-Vereinbarung lediglich die Variablennamen<br />

der Attribute – in Form von Instanz-Variablen oder Klassen-Variablen – spezifiziert. Sie<br />

enthält keine Attributwerte. Um einer Klassen-Variablen ein Objekt zuzuordnen, kann<br />

eine Instanz- oder eine Klassen-Methode zur Ausführung gebracht werden. Bei unseren

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!