Fortgeschrittene objektorientierte Programmierung
LVA 185.211, VL 2.0, 2005 S
squeakaufgerufen werden. Beim ersten Aufruf bekommen Sie vermutlich nur eine Fehlermeldung die besagt, dass die Datei
squeak.imagefehlt, welche Ihre lokale Version des Smalltalk-Systems enthält. Daneben benötigen Sie auch die Datei
squeak.changesmit dem Source-Code aller Änderungen, die am ursprünglichen System vorgenommen wurden. Sie erhalten diese beiden (ziemlich großen) Dateien durch Ausführung folgender Befehle in Ihrem Home-Directory:
cp /usr/local/lib/squeak/3.6-3/Squeak3.7-5989-full.changes squeak.changes cp /usr/local/lib/squeak/3.6-3/Squeak3.7-5989-full.image squeak.imageAlle Änderungen, die Sie vornehmen, werden in diesen beiden Dateien gespeichert. Auch alle Ihre Programme sind darin enthalten.
Squeak unterstützt zwei grundsätzlich verschiedene Subsysteme zur Programmierung grafischer Oberflächen: MVC (wie in Smalltalk-80) und Morphic. Sie können eines der beiden Subsysteme wählen. Vermeiden Sie nach Möglichkeit die gemischte Verwendung.
Wie in der ersten Aufgabe gilt folgendes für das kleine Zeichenprogramm:
An jeder Position (= Cursor-Position) der Zeichnung steht entweder ein
Leerzeichen oder *
. Zeichnungen haben undefinierte Größe
und bestehen zu Beginn nur aus Leerzeichen. Den Applikationsnummern 0 bis 9
soll das Zeichenprogramm mit unterschiedlichen Zeichnungen zugeordnet sein.
Beim Start einer Applikation wird die Zeichnung mit der entsprechende Nummer
geladen und in einem neuen Fenster angezeigt. Zeichnungen sollen nicht
nochmals geladen werden, wenn sie bereits geladen sind; statt dessen soll kurz
ein nur aus #
-Zeichen bestehendes Fenster entsprechender
Größe und Position eingeblendet werden, das gleich wieder
verschwindet.
Folgende Tastatureingaben sollen von der Applikation verarbeitet werden:
s:
q:
x:
*und Leerzeichen:
*bzw. Leerzeichen. Die Tastatureingabe ist nicht erlaubt, wenn der Cursor auf dem Fensterrand steht.
Versuchen Sie, Smalltalk-Code aus dem System wiederzuverwenden und die Aufgabe so einfach wie möglich zu lösen.
Ein Problem bei dieser Aufgabe besteht darin, dass die Zeichen *
und
Leerzeichen nicht gleich groß sind und die einfache Ausgabe als String
daher vermutlich nicht funktioniert. Falls Sie dafür nicht gleich eine
einfache Lösung finden, können Sie *
und Leerzeichen durch
andere, gleich große Zeichen ersetzen.