[Squeak-ev] Pakete in Squeak

Matthias Berth matthias.berth at googlemail.com
Die Jan 13 15:49:47 UTC 2009


Hallo Klaus,


was ist Dein Ziel?

Möchtest Du Smalltalk-Klassen und Methoden verwalten? Dann ist ein
Monticello-Package das richtige. Speicherst Du ein
.mcz file ab? Dokumentation zu Monticello ist in "Squeak by Example".

Oder möchtest Du auch selbstgemachte Morphs (zB ein BookMorph mit
einer Präsentation, eine Zeichnung o.ä.) abspeichern? Dann ist das
Speichern eines Projekts (.pr) OK.

Die "Rückfragen" beim Speichern als .pr kommen daher, daß nicht nur
Klassen sondern auch vollständige Objekte gespeichert werden.

2009/1/13 Klaus Füller <Klaus.Fueller at t-online.de>:
> Ich komme mit der Organisation von Softwareprojekten in Squeak schlecht
> zurecht.
> [...]
> Ich habe ein Morf-Projekt namens SQL. Alle meine Klassen landen in einer der
> Kategorien KlausF-Mysql oder KlausF-MysqlTest.
> ---> Ist das OK?

Ja.

> Ich kann alle Klassen unter KlausF-Mysql* mit Monticello auf einen Server
> laden. Das verstehe ich. OK. Kein Problem. Ich kann diese Kategorien auch in
> *.st-Dateien lokal speichern.

Du kannst / solltest Sie auch lokal als Monticello-Pakete speichern.
Dazu kannst Du ein lokales Monticello repository anlegen und dann
immer dorthin speichern.

> Ich kann das Projekt SQL in eine *.pr-Datei speichern. Tue ich das,
> erscheinen 2 Fragen, die ich nicht verstehe: "Would you like to include all
> the changes ..." und "Some blocks which reference instance-variables are
> included in this segment ..."
> ---> Was bedeutet das genau?

Wie gesagt, es werden Objekte (und nicht nur Klassen und Methoden)
abgespeichert.

> ---> Wo bekomme ich erklärt, was genau ein Change-Set ist und wie ich
> steuern kann, was in einem Change-Set erscheinen soll?

Ein Change set enthält eine Mitschrift von Änderungen im System.
Änderungen in Klassen und Methiden stehen drin, Änderungen an Objekten
werden nur unvollständig abgebildet (alle "Do-it's" sind drin). Dann
kann man mit einem change browser Änderungen von einem changeset ins
andere verschieben use..

> Wenn ich diese *.pr-Datei in ein frisches Image lade, kommt eine
> Fehlermeldung "Reading an Instance of ... Which modern class should it
> translate to?"
> ---> Was bedeutet das? Wie gehe ich damit um? wie verhindere ich das?


Die Klasse des gelesenen Objektes ist nicht im System,. Wahrscheinlich
muß noch ein anderes package geladen werden.

> Wenn ich meine *.st-Dateien in ein frisches Image lade, klappt das
> wunderbar. Aber, wenn ich die Tests durchführe, fehlen die Methoden
> Integer>>asByteArray und ByteArray>>bitXor. Diese Methoden habe ich nicht
> geschrieben, sie stammen offensichtlich aus einem anderen Monticello-Paket,
> das ich in der Zwischenzeit geladen habe.
> ---> Was tue ich nun?

nachsehen, in welchem Monticello-Paket diese Methoden sind: im alten
image im browser steht zu der Methode "In change set xyz" - bzw. das
Package der zugehörigen Klasse ist sowieso ein Monticello-paket.

> Ich weiß, dass ich diese Methoden in mein Monticello-Paket übernehmen kann,
> indem ich sie in die Message-Kategorie '*klausf-mysql' schreibe. Aber:
> ---> Landen diese Methoden dann auch beim lokalen Speichern in der
> *.st-Datei?

Tun sie nicht, aber ich bin nicht 100% sicher.

> ---> Was geschieht, wenn es Integer>>asByteArray bereits gibt, wenn mein
> Monticello-Paket geladen wird?
>        Überschreibt dann meine Methode die bereits installierte?

Ich glaube, ja. Es wird davon abgeraten, solche Methoden zu überschreiben.

Viele Grüße

Matthias