Liebe Squeaker,
In den Halos von Morphen findet sich die Option, eine Unterklasse anzulegen. Kann die eigentlich mehr, als nur ein leeres Klassengerüst mit der einzigen Konkretisierung 'Ich bin eine Unterklasse von ...' erzeugen?
Konkret:
Bsp. 1
Ich hätte gerne eine Unterklasse #SchwererBall von EllipseMorph. Schwere Bälle sollen zum einen Instanzvariablen 'masse geschwindigkeit' besitzen, zum anderen aber vor allem Kreise mit einem fetzigen Farbverlauf als Füllung sein.
Was ich nun gern tun würde: Ich hole mir aus der Lager-Klappe eine Ellipse, passe ihr Aussehen über die Halos an (die Luxusfassung wäre evtl. noch die, ihr auch via Halos Variablen 'masse' und 'geschwindigkeit' zu verpassen - daß diese Variablen dem Player zugeschlagen werden und nicht dem Morph, habe ich schon entdeckt) und erzeuge nun (per 1-Klick) die gewünschte Unterklasse von EllipseMorph, bei der die Standardwerte (etwa die Farbfüllung) für neue Instanzen genau auf die aktuellen Werte meines gerade gebastelten Prototypen sind.
Bsp. 2
Auch wieder per eToys klicke ich mir z.B. mit Hilfe von Behältern ein strukturiertes Widget (etwa mit mehreren Knöpfen und Textfeldern) zusammen. Für genau so ein Widget hätte ich nun gerne eine Klasse, aus der ich weitere derartige Widgets instanzieren kann.
Gibt es für so etwas einen einfachen Weg? Stichworte, auf die ich bislang gestoßen bin, sind Object>>veryDeepCopy sowie MorphicModel>>class prototype:. Allerdings ist mir nicht ganz klar, wie man die Klasse MorphicModel wirklich benutzt. Ist sie überhaupt die richtige für mein Problem?
Hintergrund/Anlaß meiner Frage:
Meine Schüler sollen physikalische Simulationen programmieren und mir ihre Werke via Monticello zugänglich machen. Die Konstruktion von GUIs rein aus dem Quelltext heraus möchte ich ihnen gerne ersparen. Die Projekte sollten über ein MeineGenialeSimaulation>>new oder vergleichbares zu starten sein (sprich z.B. Erzeugung aller nötigen Widgets).
Geht das, was ich hier will, und auch im Prinzip so, wie ich es mir vorstelle?
Schöne Grüße
Markus
----------------------------------------------- Markus Schlager m.slg(at)gmx.de
squeak-ev@lists.squeakfoundation.org