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. Ich habe den Igel in einer Klassenvariablen von IgelFenster, ich habe den Igel in einer Variablen des Workspace, ich habe den Igel als globale Variable --- nichts funktioniert. Ich habe beim Speichern des Projekts immer gesagt, ich will den gesamten "changeSet" speichern, obwohl ich nicht genau weiß, was das bedeutet. Kann mir jemand helfen? Klaus Füller |
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. > > Ich habe den Igel in einer Klassenvariablen von IgelFenster, ich habe > den Igel in einer Variablen des Workspace, ich habe den Igel als globale > Variable --- nichts funktioniert. > > Ich habe beim Speichern des Projekts immer gesagt, ich will den gesamten > "changeSet" speichern, obwohl ich nicht genau weiß, was das bedeutet. Das speichert den Smalltalk-Code des aktuellen Changeset (also das was man im Change Sorter sieht) mit ab - normalerweise werden nur die sichtbaren Objekte gesichert. Und das ist auch das Problem: Lass den Igel einfach auf dem Bildschirm, dann klappt das mit dem Abspeichern auch. -- Bert |
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. >> >> Ich habe den Igel in einer Klassenvariablen von IgelFenster, ich habe >> den Igel in einer Variablen des Workspace, ich habe den Igel als >> globale Variable --- nichts funktioniert. >> >> Ich habe beim Speichern des Projekts immer gesagt, ich will den >> gesamten "changeSet" speichern, obwohl ich nicht genau weiß, was das >> bedeutet. > > > Das speichert den Smalltalk-Code des aktuellen Changeset (also das was > man im Change Sorter sieht) mit ab - normalerweise werden nur die > sichtbaren Objekte gesichert. Und das ist auch das Problem: Lass den > Igel einfach auf dem Bildschirm, dann klappt das mit dem Abspeichern auch. > Bildschirm. Aber die Klassenvariable igelMorph ist nil. 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? |
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. >>> >>> Ich habe den Igel in einer Klassenvariablen von IgelFenster, ich habe >>> den Igel in einer Variablen des Workspace, ich habe den Igel als >>> globale Variable --- nichts funktioniert. >>> >>> Ich habe beim Speichern des Projekts immer gesagt, ich will den >>> gesamten "changeSet" speichern, obwohl ich nicht genau weiß, was das >>> bedeutet. >> >> >> >> Das speichert den Smalltalk-Code des aktuellen Changeset (also das was >> man im Change Sorter sieht) mit ab - normalerweise werden nur die >> sichtbaren Objekte gesichert. Und das ist auch das Problem: Lass den >> Igel einfach auf dem Bildschirm, dann klappt das mit dem Abspeichern >> auch. >> > Das ist leider nur ein Teilerfolg. Ich habe des Igel jetzt auf dem > Bildschirm. Aber die Klassenvariable igelMorph ist nil. > > 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). -- Bert |
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. |
Hallo Klaus,
> 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. Um das Programmieren zu lernen, ja. Das ist aber auch nicht das primäre Ziel hier, sondern (unter Zuhilfename eines Computers) Vorgänge aus der realen Welt zu verstehen und zu modellieren. Das E-Zeugs ist also sowas wie eine Experimentierstube (sowas wie ein Alchemie-Labor ;) indem man verschiedene Sachen ausprobieren kann, die u.U. nur schwer in der realen Welt zu machen sind, in der man Modelle für bestimmte Phänomene entwickeln kann die man irgendwo erfahren hat. Das man Computer dazu programmieren muss, ist ein (allerdings gewollter) Nebeneffekt, sowas wie ein erster Schritt in Richtung "Computer-Literacy" (und darunter verstehe ich _nicht_ das Verwenden von Maus und Tastatur oder die Bedienung von Microsoft Office - wir sagen ja auch nicht das jemand lesen kann, nur weil er weiss wie man ein Buch hält und umblättert). > 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. [...] > Nun gibt es einen Bereich, wo man manchmal interaktiv arbeiten kann: Hier muss ich Dir lauthals widersprechen ;-) Schon wenn Du den Computer einschaltest, arbeitest Du interaktiv. Gerade in Smalltalk, wo Änderungen sofortige Auswirkungen haben, gibt es gar nix anderes als "interaktiv" zu arbeiten. Ob etwas "konkret" oder "abstrakt" ist hängt ebenso von unserer Wahrnehmung ab. Für Dich mag' das Schreiben einer Methode etwas abstraktes sein, aber für den der den Editor oder den Compiler bastelt, sind das unglaublich konkrete, interaktive Dinge. Insofern unterstützt auch das E-Zeugs das Abstraktionsvermögen. Nur nicht auf dem spezifischen Gebiet auf dem Du Dich zur Zeit bewegst. Ciao, - Andreas > -----Original Message----- > From: [hidden email] > [mailto:[hidden email]] On > Behalf Of Klaus Füller > Sent: Saturday, November 15, 2003 6:37 PM > To: Squeak e.V. > Subject: Re: [Squeak-ev] Sichern eines SketchMorphs > > > 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. > |
Free forum by Nabble | Edit this page |