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.

154 8 Klassen und Meta-Klassen<br />

OrderedCollection(ViewManager Object)<br />

Hinweis: Entsprechend lassen sich z.B. sämtliche Instanzen einer Klasse mittels der Methode<br />

“allInstances” und alle Unterklassen einer Klasse mittels der Methode “allSubclasses”<br />

anzeigen.<br />

Unter Einsatz der Methode “implementorsOf:” können die Klassen ermittelt werden, in<br />

denen eine bestimmte Methode vereinbart ist.<br />

Zum Beispiel läßt sich durch die Message “Smalltalk implementorsOf: #size” die Gesamtheit<br />

der Klassen feststellen, in denen eine Methode namens “size” vereinbart ist (siehe<br />

Abschnitt 9.4.2).<br />

Entsprechend können durch den Einsatz der Methode “sendersOf:” sämtliche Methoden<br />

(sowie die Klassen, in denen diese Methoden vereinbart sind) ermittelt werden, in denen<br />

eine bestimmte Methode verwendet wird.<br />

Zum Beispiel läßt sich durch die Message “Smalltalk sendersOf: #size” die Gesamtheit der<br />

vereinbarten Methoden feststellen, in deren Methoden-Vereinbarung eine Methode namens<br />

“size” verwendet wird.<br />

Sofern eine Instanz-Methode von “Behavior” – wie z.B. “new” – nicht als Klassen-<br />

Methode auf eine Klasse – wie z.B. “Bag” – vererbt werden soll, besteht die Möglichkeit,<br />

die in “Behavior” vereinbarte Methode dadurch zu “überdecken”, daß eine<br />

Instanz-Methode gleichen Namens (“new”) in der Meta-Klasse “Bag class”, d.h. als<br />

Klassen-Methode in der Klasse “Bag”, vereinbart wird.<br />

Davon wird beim <strong>SMALLTALK</strong>-System bei der Einrichtung eines Bags Gebrauch<br />

gemacht, da eine Klassen-Methode namens “new” innerhalb der Klasse “Bag” existiert.<br />

Da die Meta-Klasse “Bag class” eine Unterklasse von “Collection class”, “Collection<br />

class” eine Unterklasse von “Object class”, “Object class” eine Unterklasse der<br />

Basis-Klasse “Class” und diese wiederum eine Unterklasse von “Behavior” ist, überdeckt<br />

die in der Klasse “Bag” definierte Klassen-Methode “new” die gleichnamige<br />

Instanz-Methode in “Behavior”.<br />

Hinweis: Die Methode “new” der Basis-Klasse “Behavior” kommt bei der Instanziierung<br />

einer Klasse immer dann zum Einsatz, wenn – im Rahmen der Klassen-Hierarchie –<br />

innerhalb der zugehörigen Meta-Klasse und unterhalb der Basis-Klasse “Behavior” keine<br />

gleichnamige Methode vereinbart ist.<br />

Grundsätzlich läßt sich feststellen:<br />

ˆ Soll das spezifische Verhalten einer Klasse festgelegt werden, so kann dies<br />

dadurch geschehen, daß geeignete Klassen-Methoden als Instanz-Methoden<br />

der zugehörigen Meta-Klasse vereinbart werden.<br />

ˆ Indem eine Klassen-Methode namens “new” für eine Klasse festgelegt wird,<br />

ist es möglich, für jede Klasse eine spezielle Methode zum Einrichten einer<br />

Instanz zu verabreden.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!