Fortgeschrittene objektorientierte Programmierung
LVA 185.211, VL 2.0, 2005 S

3. Übungsaufgabe

Lernen Sie Smalltalk und entwickeln Sie ein Programm in Smalltalk (siehe unten). Ziel der Aufgabe ist das Sammeln von Erfahrungen mit Umfangreiche Informationen zur Programmiersprache Smalltalk (Tutorials, Bücher, Beispiele, etc.) finden Sie unter dem Cetus-Link zu Smalltalk. Zur Lösung der Übungsaufgabe steht Ihnen auf b3 das Smalltalk-System Squeak zur Verfügung. Es gibt mehrere frei verfügbare Smalltalk-Systeme (siehe Cetus-Link), die zur Lösung der Aufgabe genau so gut geeignet sind, jedoch nicht auf b3 vorinstalliert wurden. Wenn Sie Ihr Smalltalk-System selbst installieren, können Sie auch ein anderes System als Squeak wählen.

Squeak:

Squeak ist eine open source Implementierung von Smalltalk-80. Das vorinstallierte System kann auf b3 mittels squeak aufgerufen werden. Beim ersten Aufruf bekommen Sie vermutlich nur eine Fehlermeldung die besagt, dass die Datei squeak.image fehlt, welche Ihre lokale Version des Smalltalk-Systems enthält. Daneben benötigen Sie auch die Datei squeak.changes mit 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.image
Alle Ä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.

Aufgabe:

Lösen Sie im Wesentlichen dieselbe Problemstellung wie in der ersten Aufgabe. Jedoch sollen Sie dabei die im Smalltalk-System vorhandenen Fenster verwenden, und die Daten können auch im Smalltalk-System selbst (nicht in einer Datei) gespeichert werden. Die Größe der Zeichnungen kann auf die Maximalgröße der Fenster beschränkt sein. Die Fenster sollen die üblichen Operationen wie Verschieben, Ändern der Größe, etc. unterstützen. Sie müssen auch irgend eine Möglichkeit vorsehen, um Zeichnungen mit den Nummern 0 bis 9 zu laden (= Applikationen mit den entsprechenden Nummern zu starten).

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:
Speichert die Zeichnung im aktiven Fenster permanent.
q:
Speichert die Zeichnung im aktiven Fenster und beendet die Applikation, wobei das Fenster entfernt wird.
x:
Beendet die Applikation und entfernt das aktive Fenster, ohne die Zeichnung permanent zu speichern.
* und Leerzeichen:
Setzen den Fensterinhalt unter dem Cursor auf * 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.

Complang
Puntigam
   Kontakt
   Research
   Lehre
      OOP
      Typsysteme
      EP2
      FOOP
      Prog.spr.
      frühere Lehre
         LVAs 2017 W
         LVAs 2017 S
         LVAs 2016 W
         LVAs 2016 S
         LVAs 2015 W
         LVAs 2015 S
         LVAs 2014 W
         LVAs 2014 S
         LVAs 2013 W
         LVAs 2013 S
         LVAs 2012 W
         LVAs 2012 S
         LVAs 2011 W
         LVAs 2011 S
         LVAs 2010 W
         LVAs 2010 S
         LVAs 2009 W
         LVAs 2009 S
         LVAs 2008 W
         LVAs 2008 S
         LVAs 2007 W
         LVAs 2007 S
         LVAs 2006 W
         LVAs 2006 S
         LVAs 2005 W
         LVAs 2005 S
            Prog.spr.
            FOOP
               1. Aufgabe
               2. Aufgabe
               3. Aufgabe
         LVAs 2004 W
         LVAs 2004 S
         LVAs 2003 W
   Links
Sitemap
Kontakt
Schnellzugriff:
Smalltalk (Cetus-Link)
Squeak
vorige Aufgabe
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | Datenschutzerklärung | letzte Änderung: 2005-05-10 (Puntigam)