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.

160 8 Klassen und Meta-Klassen<br />

WerteErfassung subclass: #ZaehlerWerteErfassung<br />

instanceVariableNames: ’’<br />

classVariableNames: ’Zaehler’<br />

poolDictionaries: ’’<br />

Dabei haben wir den Namen der von uns vorgesehenen Klassen-Variablen “Zaehler”<br />

durch die folgende Angabe festgelegt:<br />

classVariableNames: ’Zaehler’<br />

Der Klassen-Variablen “Zaehler” soll bei der erstmaligen Instanziierung der Klasse<br />

“ZaehlerWerteErfassung” der Wert “0” zugeordnet werden. Dieser Wert ist jeweils<br />

dann, wenn ein Punktwert erfaßt wird, um den Wert “1” zu erhöhen.<br />

Die gewünschte Initialisierung läßt sich dadurch erreichen, daß wir die standardmäßig<br />

zur Verfügung stehende Basis-Methode “new” durch eine neue Klassen-Methode<br />

“new” überdecken und für diese Methode in der Klasse “ZaehlerWerteErfassung”<br />

die folgende Vereinbarung vorsehen:<br />

new<br />

|varWerteErfassung|<br />

varWerteErfassung := super new.<br />

varWerteErfassung initZaehler.<br />

∧ varWerteErfassung<br />

Hinweis: Fordern wir die Vereinbarung von “new” durch die Menü-Option “Save” des<br />

Menüs “File” im Klassen-Hierarchie-Browser-Fenster an, so erscheint die Meldung “You<br />

are redefining a superclass method”. Dies weist darauf hin, daß eine gleichnamige Methode<br />

namens “new” in einer übergeordneten Klasse (in diesem Fall “Behavior”) überdeckt wird.<br />

Da wir dies beabsichtigen, bestätigen wir diese Meldung.<br />

Durch den Einsatz der Pseudovariablen “super” erreichen wir, daß die Instanziierung<br />

in gewohnter Form durch die dafür standardmäßig zuständige, in einer übergeordneten<br />

Klasse vereinbarte Basis-Methode “new” ausgeführt wird. Die resultierende<br />

Instanz führt anschließend die Methode “initZaehler” aus, die sicherstellen<br />

soll, daß die Klassen-Variable “Zaehler” den Wert “0” erhält, sofern die allererste<br />

Instanziierung der Klasse “ZaehlerWerteErfassung” erfolgt.<br />

Hinweis: Setzen wir bei der Vereinbarung der Methode “new” statt der Pseudovariablen<br />

“super” die Pseudovariable “self” ein, so erhalten wir eine Endlosschleife und damit im<br />

Walkback-Fenster (siehe Anhang A.3) die Meldung “stack overflow” angezeigt.<br />

Damit die Anforderung<br />

ZaehlerWerteErfassung new sammelnWerte: ’Jahrgangsstufe 11’<br />

sinnvoll ist, muß das Ergebnis-Objekt von “ZaehlerWerteErfassung new” eine Instanz<br />

der Klasse “ZaehlerWerteErfassung” sein. Damit dies sichergestellt ist, lautet

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!