Sichern eines SketchMorphs

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Sichern eines SketchMorphs

Klaus Füller
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


Reply | Threaded
Open this post in threaded view
|

Re: Sichern eines SketchMorphs

Bert Freudenberg-2
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


Reply | Threaded
Open this post in threaded view
|

Re: Sichern eines SketchMorphs

Klaus Füller
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?


Reply | Threaded
Open this post in threaded view
|

Re: Sichern eines SketchMorphs

Bert Freudenberg-2
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


Reply | Threaded
Open this post in threaded view
|

Re: Sichern eines SketchMorphs

Klaus Füller
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.


Reply | Threaded
Open this post in threaded view
|

RE: Sichern eines SketchMorphs

Andreas.Raab
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.
>