Fortgeschrittene objektorientierte Programmierung
LVA 185.211, VL 2.0, 2009 S
1. Übungsaufgabe
Entwickeln Sie in einer objektorientierten Sprache Ihrer Wahl einen Editor mit folgenden Eigenschaften:
- Der Editor öffnet ein Fenster, das den editierten Text darstellt.
Sie können entweder Fenster der von Ihrem System verwendeten Benutzeroberfläche oder auf einem ASCII-Terminal simulierte einfache Fenster (ähnlich denen aus der Aufgabenstellung aus dem letzten Jahr) verwenden.
- Das Fenster zeigt (falls nicht der ganze Text Platz hat) einen rechteckigen Ausschnitt aus dem Text an.
Um die Auswahl des Rechtecks zu erleichtern wird der Text stets in einer Schriftart dargestellt, bei der alle Zeichen gleich hoch und gleich breit sind.
- Es gibt mehrere Modi zur Auswahl des dargestellten Textfeldes:
- wrap around-Modus:
- Wenn eine Zeile länger als das Fenster breit ist, werden die Zeichen, die nicht mehr Platz haben, in der nächsten Zeile dargestellt.
- Umbruch-Modus:
- Ähnlich wie im wrap around-Modus werden lange Zeilen umgebrochen.
Allerdings erfolgen Umbrüche, wenn möglich, nur nach Leerzeichen (bzw. white space) und Bindestrichen, wobei Leerzeichen am rechten Fensterrand nicht dargestellt werden brauchen.
- Block-Modus:
- Zu lange Zeilen werden nicht umgebrochen, sondern der gewählte Textausschnitt kann nach links und rechts verschoben werden.
- Es gibt mehrere Editiermodi:
- insert-Modus:
- Eingetippter Text wird an der Cursor-Position eingefügt.
- overwrite-Modus:
- Eingetippter Text überschreibt den bereits vorhandenen Text.
Das Ende einer Zeile ist im Block-Modus nicht erkennbar;
der Textausschnitt kann beliebig weit nach rechts verschoben werden, an jeder Stelle sind Zeichen eingebbar, und die Zeile vor der aktuellen Cursor-Position wird, wenn nötig, mit Leerzeichen aufgefüllt.
Im wrap around und Umbruch-Modus wird die Zeile nicht automatisch mit Leerzeichen aufgefüllt.
- Lese-Modus:
- Der bestehende Text ist nicht änderbar.
- Sehen Sie geeignete Möglichkeiten zum Umschalten zwischen den Modi und zur Auswahl des dargestellten Textausschnitts vor.
- Sehen Sie eine Möglichkeit vor, zumindest die letzte Änderung des Textes wieder rückgängig zu machen.
- Die zu editierende Textdatei wird beim Aufruf des Editors festgelegt und geöffnet.
Änderungen werden gleich (mit höchstens kurzer Verzögerung) gespeichert, damit sich der Benutzer nicht um das Speichern kümmern muss.
- Wenn mehrere überlappte Aufrufe des Editors dieselbe Datei editieren, sorgen Sie dafür, dass Änderungen des Textes in einem Fenster sofort (mit höchstens kurzer Verzögerung) im anderen Fenster sichtbar werden.
Beachten Sie auch, dass in einigen Fällen (z.B. beim Auffüllen von Zeilen im overwrite- und Block-Modus) Synchronisation nötig ist, um zu garantieren, dass dabei kein währenddessen in einem anderen Fenster eingegebener Text verloren geht.
- Sie können davon ausgehen, dass nur ASCII-Text editiert wird, oder Sie wählen eine andere fixe Kodierung.
Sie brauchen sich jedenfalls nicht um länderspezifische Einstellungen und verschiedene Kodierungen kümmern.