Bert Freudenberg schrieb:
Klaus Füller wrote:
Bert Freudenberg schrieb:
Klaus Füller wrote:
Ich habe einen SketchMorph (=Igel) gezeichnet, den ich per Methode aus einer anderen Klasse (=IgelFenster) auf dem Bildschirm auftauchen und herumlaufen lasse --- funktioniert wunderbar.
Aber wenn ich das Projekt sichere und anschließend in ein anderes Image lade, ist der SketchMorph nicht da.
[...]
Wenn ich einen Inspektor des SketchMorph aufrufe und dort sage 'IgelFenster igelMorph: self', dann habe ich den gewünschten Zustand wieder hergestellt (diese Methode setzt das Klassenattribut).
Ich frage mich, ob das auch automatisch geht? Wo ist diese Klassenvariable gespeichert?
Gar nicht. Es wird alles was sichtbar ist gespeichert, plus optional der Quelltext. Mehr nicht.
Du bewegst dich da an der Grenze zwischen zwei Welten - der Smalltalk-Welt mit Browser, Quelltext, etc., und der E-Zeug-Welt, die Projekte, Skripting etc. bietet. Was du willst ist einfach nicht vorgesehen.
Klassenvariablen initialisiert man üblicherweise beim Laden der Klasse in der #initialize Methode (schau dich einfach im Image um). Da kann man z.B. Bilder aus einer Datei laden. Die ganz Harten speichern ein Bild auch schon mal als Quelltext ab (siehe z.B. MenuItemMorph class >> initialize).
Genau das beginne ich langsam zu verstehen. Einstein soll einmal gesagt haben "make it as simple as possible, but not simpler". Ich habe (als Lehrer) den Eindruck, dass die "E-Zeug-Welt" eine zu sehr vereinfachte Welt ist. Ich finde, Programmieren ist sinnvoll in der Schule weil die Schüler - ähnlich wie in Mathe - Abstaktionsvorgänge lernen. Das Werkzeug muss diese Abstraktionsvorgänge einfach unterstützen - und da scheint mir Squeak (und zwar das klassische Squeak, ausdrücklich nicht Squeakland) einfach Klasse zu sein. Die E-Toys unterstützen mir die Abstraktion zu wenig.
[Beispiel: Die Schüler sollen eine Art von elektrischer Eisenbahn auf dem Bildschirm fahren lassen, sie sollen aber die Anweisungen dazu _als Programmtext_ eingeben. Jetzt könnte ich was zu den Lernzielen sagen und eine didaktische Analyse veranstalten - verkneife mir das aber.]
Nun gibt es einen Bereich, wo man manchmal interaktiv arbeiten kann: Beim Entwurf von Fenstern o.ä. Es hat nicht immer Sinn, ein Fenster mit Buttons und Eingabefeldern per Programm aufzubauen, es also umfangreich und detailliert (und mühsam) als Text zu beschreiben. Manchmal könnte man es "zusammenklicken", besorgt sich einen "Handle" und verwendet diese Struktur im Programm. Auch andere Teile der GUI eines Projekts könnte man interaktiv erstellen. Hoffentlich gibt es eine einfache Möglichkeit, derartige Projekte zu speichern und wieder zu laden.