)
1. [A] (Zählen der repaint-Events) Die Methode paint wird immer dann aufgerufen, wenn bei einem Fenster der Ausgabebereich restauriert werden muß. Schreiben Sie ein Programm, daß die Aufrufe von paint zählt und den Zähler auf dem Bildschirm ausgibt.
2. [A] (Regenbogen) Schreiben Sie ein Programm, das einen Regenbogen auf hellblauem Hintergrund ausgibt.
3. [A] (Programm beenden) Schreiben Sie ein Programm, das ein ansonsten leeres Fenster mit einem roten Quadrat in der Mitte ausgibt. Nach Mausklick darauf soll das Programm beendet werden.
4. [A] (Unterstreichung)
Schreiben Sie eine Methode drawUnderlinedString, die eine
Zeichenkette mit Unterstreichung ausgibt. Die Methode soll die
selbe Parameterstruktur wie drawString haben.
Aufg1404.java
5. [A] (Fenstergröße anzeigen) Schreiben Sie ein Programm, daß die aktuelle Größe seines Hauptfensters in dessen Client-Area anzeigt. Nach jeder Größenänderung durch den Anwender soll die Bildschirmausgabe entsprechend angepaßt werden.
6. [A] (Fenstergröße ändern) Schreiben Sie ein Programm, daß die aktuelle Größe seines Hauptfensters nach einem Klick auf die linke Maustaste in Schritten von 10 Pixeln vergrößert. Bei einem Klick auf die rechte Maustaste soll das Fenster entsprechend verkleinert werden.
7. [A] (Mausposition anzeigen)
Schreiben Sie ein Programm, daß die aktuelle Position des
Mauszeigers in der linken oberen Ecke des Ausgabefensters anzeigt.
Aufg1407.java
8. [B] (processMouseEvent) Schreiben Sie ein Programm, dessen Hauptfenster genäß den Ausführungen in Kapitel 18 die Methode processMouseEvent überlagert, um nach einem Mausklick das Programm zu beenden.
9. [B] (Tortengraphik)
Schreiben Sie ein Programm, das ein Array von Ganzzahlen als
Tortengrafik darstellt. Die Tortenstücke sollen verschiedenfarbig
dargestellt werden und ihre Größe soll dem relativen Anteil des
jeweiligen Elements entsprechen.
Aufg1409.java
10. [B] (Schachbrett) Schreiben Sie ein Programm, das ein Schachbrett zeichnet. Fügen Sie auch die horizontale und vertikale Beschriftung ein.
11. [B] (Ein großes "E" zeichnen)
Schreiben Sie ein Programm, daß mit Hilfe der elementaren
Grafikroutinen ein großes "E" auf den Bildschirm zeichnet.
Benutzen Sie dazu keine Methode zur Ausgabe von Text, sondern
verwenden Sie die Linien- oder Polygon-Routinen. Das "E"
soll in roter Farbe auf weißem Hintergrund ausgegeben werden
und einen schwarzen Schatten haben.
Aufg1411.java
12. [B] (Ausdrucken einer Textdatei) Schreiben Sie ein Programm, das den Inhalt einer Textdatei, die über den Standard-Dateidialog ausgewählt wurde, auf den Drucker ausgibt.
13. [B] (Zufallszahlentest) Mit Hilfe hochauflösender Grafik kann ein einfacher und schneller Test für Zufallszahlen geschrieben werden. Dazu wird zunächst ein leeres Grafikfenster erzeugt in das anschließend viele tausend Pixel zufällig gesetzt werden. Ergibt sich eine gleichmäßige Verteilung, so kann der Generator in grober Näherung als brauchbar angesehen werden. Werden dagegen Häufungen oder regelmäßige Muster sichtbar oder bleiben sich gar Lücken stehen, so kann davon ausgegangen werden, daß der Zufallszahlengenerator nicht optimal arbeitet. Schreiben Sie ein Programm, das diesen Test implementiert und schätzen Sie auf diese Weise die Güte des eingebauten Zufallszahlengenerators ab.
14. [B] (Schraffur)
Schreiben Sie eine Methode, die ein Rechteck mit Schraffur
darstellen kann.
Aufg1414.java
15. [B] (Schriftskalierung) Schreiben Sie ein Programm, das ein großes "A" in der Schriftart "Serif" auf dem Bildschirm ausgibt. Mit Hilfe von Textmetriken soll der Buchstabe so groß sein, daß er bei zentrierter Ausgabe gerade noch in das Fenster paßt. Nach einer Größenänderung des Fensters durch den Anwender soll die Schriftausgabe geeignet angepaßt werden.
16. [B] (Clipping) Schreiben Sie ein Programm, das die Clipping-Routinen dazu verwendet, in einem Grafikfenster näherungsweise folgende Ausgabe zu erzeugen:
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz abcdefgh qrstuvwxyz abcdefgh qrstuvwxyz abcdefgh qrstuvwxyz abcdefgh opqrstuvwxyzabcdefghijk qrstuvwxyz abcdefgh opqrstuvwxyzabcdefghijk qrstuvwxyz abcdefgh opqrstuvwxyzabcdefghijk qrstuvwxyz abcdefgh opqrstuvwxyzabcdefghijk qrstuvwxyz abcdefgh opqrstuvwxyzabcdefghijk qrstuvwxyz abcdefgh opqrstuvwxyzabcdefghijk qrstuvwxyz abcdefgh opqrstuvwxyzabcdefghijk qrstuvwxyz abcdefgh opqrstuvwxyzabcdefghijk qrstuvwxyz abcdefgh qrstuvwxyz abcdefgh qrstuvwxyz abcdefgh qrstuvwxyz abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
Aufg1416.java
17. [B] (Rechteck mit Beschriftung) Schreiben Sie eine Methode drawTextRect, die ein Rechteck mit darin enthaltenem Text ausgibt. Die Größe des Rechtecks sowie die Punktgröße der Schrift sollen frei vorgegeben werden können. Benutzen Sie Textmetriken, um den Text innerhalb des Rechtecks sowohl horizontal als auch vertikal zu zentrieren.
18. [B] (3D-Rahmen) Ein hellgraues Rechteck mit 3D-Effekt entsteht, indem man auf der linken und oberen Seite eine weiße Randlinie zeichnet, während auf der rechten und unteren Seite dunkelgraue bzw. schwarze Linien verwendet werden. Schreiben Sie eine Methode draw3DRect, die ein Rechteck mit 3D-Rahmen zeichnen kann. Machen Sie die Breite des Rahmens konfigurierbar und erlauben Sie es, zwischen vertieften und erhabenen Darstellungen zu wählen.
19. [B] (Pfeil zeichnen) Schreiben Sie eine Methode drawArrow, die einen farbigen, flächigen Pfeil ausgeben kann. Die Drehrichtung (in 90-Grad-Schritten) und die Länge des Pfeils sollten veränderbar sein.
20. [B] (Splashscreen)
Verwenden Sie die Klasse Window, um mit Hilfe eines
rahmenlosen Fensters einen Splashscreen zu erzeugen, der nach dem
Starten Ihres Programmes für ca. 4 Sekunden angezeigt und
anschließend selbstständig wieder entfernt wird. Ein Splashscreen
wird üblicherweise verwendet, um nach dem Aufruf des Programmes
eine Startmeldung mit dem Namen des Programmes, der aktuellen
Version, Copyrighthinweisen, etc. anzuzeigen. Erstellen Sie ein
hellgraues Fenster mit einem eigenen 3D-Rahmen, das die o.g.
Informationen in ansprechender Form anzeigt.
Aufg1420.java
21. [B] (Wer das nicht kann...) Ein beliebtes Spiel ist es, vorgegebene Figuren zu zeichnen, ohne den Stift abzusetzen. Das bekannteste Beispiel ist sicher das Haus mit Dach, dessen Erstellung mit den Worten "Wer das nicht kann, kriegt keinen Mann" begleitet wird (eine Silbe je Linie). Schreiben Sie ein Programm, das dieses Haus zeichnet. Die Größe des Hauses soll sich an die aktuelle Größe des Fensters anpassen.
22. [B] (Farbverlauf)
Schreiben Sie eine Methode, die ein Rechteck mit einem horizontalen
Farbverlauf zeichnen kann. Die Größe des Rechtecks, sowie die
Anfangs- und Endfarbe sollen konfigurierbar sein.
Aufg1422.java
23. [B] (Gedrehtes Rechteck) Schreiben Sie eine Methode, die ein Rechteck zeichnet, das um einen beliebigen Winkel gedreht werden kann. Als Parameter sollen die linke obere Ecke, die Seitenlängen des Rechtecks und der Drehwinkel in Grad (gegen den Uhrzeigersinn) angegeben werden. Drehpunkt soll die linke obere Ecke sein.
24. [B] (Smileys) Erweitern Sie das Beispiel Example1903 so, daß die durch Mausklick gezeichneten Smileys nach einem repaint-Ereignis nicht verloren sind, sondern rekonstruiert und wieder auf dem Bildschirm angezeigt werden.
25. [B] (Polygone zeichnen mit Turtlegrafik) Verwenden Sie die Turtlegrafik, um eine Methode drawRegularPolygon zu entwickeln, die ein regelmäßiges Vieleck zeichnen kann. Die Anzahl der Ecken und die Länge jeder Seite soll dabei als Parameter übergeben werden können. Die folgende Abbildung zeigt das Ergebnis für regelmäßige Vielecke der Seitenlänge 60 mit drei, vier und fünf Ecken:
Falls Sie die Turtlegrafik noch nicht implementiert haben, finden Sie
weiter unten eine Aufgabe, die genau beschreibt, was zu tun ist.
Aufg1425.java
26. [B] (Kreis zeichnen mit Turtlegrafik) Verwenden Sie die Klasse TurtleGraphics, um näherungsweise einen Kreis von etwa 200 Pixeln Durchmesser zu zeichnen.
27. [B] (Spirale zeichnen mit Turtlegrafik) Mit Hilfe der Turtlegrafik läßt sich sehr leicht eine Spirale zeichnen. Dazu brauchen lediglich eine Reihe kleiner werdender Rechtecke aneinandergereiht und jedesmal um einen festen Winkel gedreht zu werden:
Schreiben Sie ein Programm, das in der Lage ist, diese Art von
Spiralen zu zeichnen.
Aufg1427.java
28. [B] (Verschieben eines Balls im Fenster) Schreiben Sie ein Programm, daß in einem Textfenster einen roten Ball anzeigt. Dieser soll per Drag- und Drop mit der Maus verschoben werden können. Verwenden Sie zur Darstellung eine Technik, wie sie in Kapitel 2 auf der Basis des XOR-Modus vorgestellt wurde.
29. [B] (Zeichenprogramm)
Schreiben Sie ein einfaches pixelorientiertes Zeichenprogramm,
das bei gedrückter Maustaste die Cursorbewegung nachzeichnet.
Überlegen Sie sich einen Mechanismus, wie die gezeichnete Information
auch nach einem repaint rekonstruiert werden kann.
Aufg1429.java
30. [B] (Eyes) Versuchen Sie, eine einfache Variante des X11-Maskottchens "Eyes" zu programmieren. Das Programm stellt ein paar Augen dar, deren Pupillenbewegung dem Mauscursor folgt, wenn er innerhalb des Fensters bewegt wird. Dadurch entsteht der Eindruck, daß die Augen dem Mauszeiger hinterhersehen.
31. [B] (Fraktales Dreieck) Manchmal ist es überraschend, wie mit Hilfe sehr einfacher Rechenregeln interessante Grafiken erzeugt werden können. Ein Beispiel dafür zeigt das Applet in folgender Abbildung:
Um die Grafik zu erzeugen, werden zunächst die drei Eckpunkte eines gleichseiten Dreiecks erzeugt und gezeichnet. Nun startet das Programm an einem beliebigen dieser Punkte und führt in einer Schleife folgende Schritte aus:
Aufg1431.java
32. [B] (Kochkurven) Wenn man Rekursion und Grafik kombiniert, erhält man oft sehr schöne, fraktale Gebilde. Ein Beispiel dafür sind Kochkurven, die aufgrund ihres besonderen Aussehens auch Koch-Schneeflocken genannt werden:
Betrachten Sie dazu zunächst ein gleichseitiges Dreieck. Stellen Sie sich nun vor, daß in jeder der drei Seiten das mittlere Drittel durch die zwei Seiten eines kleineren gleichseitigen Dreiecks ersetzt wird. Jedes dieser vier Teilstücke wird nun seinerseits nach derselben Konstruktionsvorschrift in vier kleinere Teilstücke unterteilt, usw.
Schreiben Sie ein Programm, das mit Hilfe rekursiver
Methodenaufrufe eine Kochkurve zeichnet. Brechen Sie die Rekursion
ab, wenn die Länge einer Strecke unterhalb eines festen
Minimalwertes liegt. Die Aufgabe ist einfacher zu lösen, wenn die
Turtlegrafik verwendet wird. Leider erzielt man dabei aufgrund
der Rundungsfehler durch die Drehungen und Bewegungen nur eine
begrenzte Genauigkeit. Die obige Abbildung wurde auf diese Weise
mit einer bei 10 Pixeln Seitenlänge abbrechen Rekursion erstellt
und man kann bereits deutliche Positionierfehler erkennen.
Aufg1432.java
33. [B] (Weicher Schatten) Bei der Darstellung von Images auf Web-Seiten ist es seit einiger Zeit modern, Grafikelemente mit weichen Schatten (Softshadows) auszustatten. Im Gegensatz zu harten Schatten werden diese dabei nicht komplett in vollschwarz gezeichnet, sondern schrittweise über mehrere Graustufen angenähert. Sehen Sie sich das genaue Verfahren an einem Beispiel an und schreiben Sie dann eine Methode fillShadowedPolygon, die in der Lage ist, ein beliebiges Polygon mit einem dahinterliegenden weichen Schatten zu zeichnen.
34. [C] (Diagramme von Abelson und diSessa) Versuchen Sie, die Konstruktionsvorschrift der Diagramme zu verstehen, die in den folgenden Abbildungen gezeigt werden:
Alle wurden auf der Basis ein- und desselben Algorithmus erstellt und
unterscheiden sich nur durch die Veränderung zweier Parameter
Winkel und Anzahl. Der Startpunkt wurde durch ein
schwarzes Kästchen markiert. Schreiben Sie eine Applikation, die
diese Figuren erstellen kann und geben Sie Beispiele für
Parametersätze, die weitere interessante Abbildungen produzieren.
Auch bei der Lösung dieser Aufgabe ist die Turtlegrafik eine große
Hilfe.
Aufg1434.java
35. [C] (Ausgabe einer Tabelle) Schreiben Sie ein Programm, das aus einem zweidimensionalen Array von Strings die grafische Darstellung einer Tabelle erzeugt. Die Tabelle soll mit einem Rahmen versehen und automatisch skaliert werden. Die Breite einer Spalte richtet sich dabei nach dem breitesten Element der Spalte. Gehen Sie davon aus, daß kein Element so breit ist, daß innerhalb eines Tabellenelements ein Zeilenumbruch erforderlich ist. Die erste Zeile des Arrays soll die Spaltenköpfe enthalten, die fett gedruckt werden sollen. Zur Erhöhung der Lesbarkeit sollen die einzelnen Zeilen der Tabelle einen farbigen Hintergrund haben. Dieser soll bei der Kopfzeile hellgrau und bei den anderen Zeilen abwechseln weiß und blaßgrün sein (in der Art von Tabellierpapier).
36. [C] (Linie zeichnen nach Bresenham) Die folgende Methode verwendet den Algorithmus von Bresenham, um eine gerade Linie zu zeichnen. Bresenham's Verfahren, das bereits 1965 publiziert wurde, verwendet nur Ganzzahlarithmetik ohne Multiplikationen und Divisionen (lediglich eine Multiplikation mit 2, die durch eine Schiebeoperation realisiert werden kann) und ist damit eines der schnellsten bekannten Verfahren zum Zeichnen einer Linie.
void drawLine(int x1, int y1, int x2, int y2)
{
int sum, curx, cury;
int dx, dy, i;
sum = x1 - x2;
dx = 2 * (x2 - x1);
dy = 2 * (y2 - y1);
curx = x1;
cury = y1;
for (i = 0; i <= -sum; ++i) {
setPixel(curx, cury);
++curx;
sum += dy;
if (sum >= 0) {
++cury;
sum -= dx;
}
}
}
Eine Eigenart des Bresenham-Algorithmus ist es, daß er in der
abgebildeten Form lediglich im ersten Quadranten funktioniert.
Erweitern Sie die vorgestellte Methode so, daß sie in allen vier
Quadranten funktioniert.
37. [C] (Textausgabe mit Zeilenumbruch) Schreiben Sie eine Methode drawFormattedText, die einen beliebigen Text innerhalb eines Rechtecks vorgegebener Größe ausgeben kann. Falls der Text nicht in eine Zeile paßt, soll er geeignet umbrochen und auf mehrere Zeilen verteilt werden. Der Umbruch soll dabei möglichst nur zwischen zwei Worten erfolgen. Die Methode soll die Standardfarbe und -schriftgröße des Fensters verwenden, in dem die Ausgabe erfolgt.
38. [C] (Hintergrund kacheln) Schreiben Sie ein Programm, das zwei Fenster besitzt. In einem der beiden Fenster kann ein 16 * 16 Pixel großes Icon mit der Maus editiert werden. Jeder Mausklick auf eines der Felder schaltet dieses abwechselnd zwischen schwarzer und weißer Darstellung um. In dem anderen Fenster wird das Icon in Originalgröße dargestellt. Dies erfolgt jedoch nicht nur einmal, sondern es werden soviele Icons neben- und übereinander ausgegeben (gekachelt), wie auf dem Fenster Platz finden. Mit diesem Programm besitzen Sie einen interaktiven Editor zum Entwurf gekachelter Hintergrundbilder.
39. [C] (Flächenfüllung) Pixelorientierte Malprogramme wie beispielsweise Paintbrush besitzen in der Regel eine Funktion, mit der sich zusammenhängende Farbflächen in einer beliebigen Farbe ausfüllen lassen. Dabei spielt es keine Rolle, ob die Fläche regelmäßig geformt ist oder nicht. Die Farbe erreicht alle Ecken, die vom Startpunkt über einen Weg von mindestens ein Pixel Breite zu erreichen sind. Schreiben Sie eine Methode fillWithColor, die eine einfarbige Fläche, die durch eine beliebig geformte andersfarbige Umrandung begrenzt wird, in einer weiteren Farbe einfärbt. Übergeben Sie die Füllfarbe und einen innerhalb der Füllfläche liegenden Punkt als Argument an die Methode.
Dieses Problem ist nicht so einfach zu lösen, wie es vielleicht scheinen mag. Die Schwierigkeit liegt darin, daß der Randbereich beliebig geformt sein kann und daher Teile der Fläche nicht direkt, sondern nur auf verschlungenen, engen Pfaden zugänglich sind. Ein mögliche Implementierung besteht darin, einen Stack zu verwenden, der eine Menge von waagerechten Linien enthält, die noch gezeichnet werden müssen und an deren oberem und unterem Rand jeweils weitere, potentiell zu füllende Bereiche anschließen. Jede Linie auf dem Stack wird durch ihren y-Wert sowie die beiden x-Werte für den Anfang und das Ende der Linie repräsentiert. Der Algorithmus kann grob wie folgt beschrieben werden:
40. [C] (Texturen) Texturen sind Strukturen, die auf vom Computer erzeugte Oberflächen projiziert werden, damit sie echter wirken und das Aussehen bestimmer Materialien nachahmen. Texturen können mit Hilfe von Images erzeugt werden, die man auf die Oberfläche kopiert, oder sie können mit Hilfe algorithmischer Verfahren errechnet werden. Ihre Aufgabe besteht nun darin, ein Fenster mit holzartiger Oberfläche zu konstruieren. Verwenden Sie dazu kein Image, sondern versuchen Sie, die Textur auf algorithmische Weise anzunähern. Die Güte Ihres Verfahrens bestimmt die Authenzität der Oberfläche.
41. [C] (Button) Versuchen Sie, einen Button nachzuprogrammieren. Schreiben Sie dazu ein Programm mit einem Fenster, das einen Button zeichnet und dessen optische Veränderungen beim Drücken oder Loslassen der Maustaste nachahmt. Versuchen Sie, das Standardverhalten eines Buttons so genau wie möglich nachzuahmen. Sehen Sie sich dazu genau an, wie ein Button reagiert, wenn man bei gedrückter Maustaste die Schaltfläche verläßt (und wieder betritt) oder was passiert, wenn die Maus mit gedrückter Taste auf den Button gezogen wird.
42. [C] (Turtlegrafik) In den 70er Jahren wurde das Prinzip der Turtlegrafik von Seymor Papert und seinen Kollegen am renommierten Massachusetts Institute of Technology entwickelt. Populär wurde die Turtlegrafik mit der Sprache LOGO, deren integraler Bestandteil sie ist.
Die Turtlegrafik dient dazu, Zeichnungen auf einem hochauflösenden Bildschirm oder Drucker auszugeben. Dazu besitzt sie einen imaginären Zeichenstift, der zu jedem Zeitpunkt an einer bestimmten Stelle der Ausgabefläche steht, in eine bestimmte Richtung zeigt und entweder die Ausgabefläche berührt oder über ihr schwebt. Der Zeichenstift kann nun folgende Aktionen ausführen:
Vorwärts 100 Rechts 90 Vorwärts 100 Rechts 90 Vorwärts 100 Rechts 90 Vorwärts 100 Rechts 90erzeugt. Der Vorteil gegenüber x-/y-achsenbezogener Grafikausgabe besteht darin, daß die gezeichnete Figur sehr leicht gedreht und verschoben werden kann. Dazu muß lediglich die Startposition oder der Anfangswinkel, den der Zeichenstift vor dem Zeichnen der gewünschten Figur hat, verändert werden. Die Ausgabekommandos bleiben dagegen unverändert. Fast alle Prrogramme, die aufwendige Turtlegrafiken erstellen, machen sich dieses Prinzip zu Nutze und verwenden leicht parmetrisierbare Primitive, die in verschiedenen Größen, Ausrichtungen und an verschiedenen Bildschirmpositionen wiederholt ausgegeben werden.
Implementieren Sie eine Klasse TurtleGraphics, die aus Graphics abgeleitet wird. Realisieren Sie folgende Methoden:
Der Schlüssel zur Implementierung der Methode movePen
liegt in der korrekten Anwendung der Winkelfunktionen sin
und cos. Betrachten Sie die zurückzulegende Strecke als
Hypothenuse eines rechtwinkligen Dreiecks, dessen Katheten parallel
zu den Achsen des Koordinatensystems verlaufen. Ihre
Länge bestimmt die Entfernung in x- und y-Richtung, die der
Zeichenstift bewegt werden muß, um seine Zielposition zu erreichen.
Aufg1442.java
TurtleGraphics.java
43. [C] (Baum des Phythagoras) Der Baum des Pythagoras ist eine sehr reizvolle Aufgabe aus dem Gebiet der fraktalen Grafiken. Er illustriert den Satz des Pythagoras und entsteht, indem über den Seiten eines rechtwinkligen Dreiecks fortlaufend Quadrate und über ihnen weitere rechtwinklige Dreiecke usw. gezeichnet werden:
Schreiben Sie ein Programm, das mit Hilfe der Turtlegrafik den
Baum des Pythagoras zeichnet. Ihr Programm soll die Lage und
Größe des Anfangsquadrats und das Seitenverhältnis des Dreiecks
abfragen. Experimentieren Sie mit unterschiedlichen Farbverläufen bei
zunehmender Rekursionstiefe und mit verschiedenen Startparametern
und geben Sie einige Beispiele für besonders hübsche Bäume.
Aufg1443.java
44. [C] (Histogramm zeichnen) In den Aufgaben zu Kapitel 4 bis 6 sollten Sie ein Programm entwickeln, das ein Histogramm zur pseudographischen Darstellung einer Menge von Ganzzahlen darstellt. Implementieren Sie nun eine GUI-basierte Variante, die das Histogramm in hochauflösender Grafik ausgibt.
45. [C] (Terminalfenster) Auch in Zeiten fortgeschrittener GUI-Programmierung bieten viele Entwicklungssysteme ein textorientiertes Fenster, in dem zeichenorientierte Ein- und Ausgaben vorgenommen werden können. Selbst Java stellt ein solches bei Zugriff auf System.out und System.in automatisch zur Verfügung. Ihre Aufgabe besteht nun darin, eine Klasse TerminalFrame zu entwickeln, die ein Terminalfenster mit einer Größe von 40 * 15 Zeichen (z.B. für die Simulation eines Palmtops) zur Verfügung stellt. Das Fenster soll alle Zeichen des ASCII-Zeichensatzes plus deutsche Umlaute anzeigen können. Sein Inhalt soll gepuffert werden, um nach einem repaint automatisch rekonstruiert werden zu können. Daneben sollen folgende Methoden zur Verfügung gestellt werden (als Remineszenz an Turbo Pascal 3.0, 1987):