|
Computerorientierte Mathematik |
![]() |
|
Inhalt
|
- 5. Programmieraufgabe - In Vorbereitung auf die Socket Implementation eines einfachen
Servers sollt Ihr zunächst den Umgang mit Threads und den daraus
resultierenden Schwierigkeiten üben. Dazu wollen wir die Benutzung einer
gemeinsamen Datenstruktur von verschiedenen Nutzern simulieren. Jeder
Nutzer wird durch einen Eine Beschreiung von Threads findet Ihr auch nochmal im Java Tutorial von Sun. Oberfläche Das Hauptprogramm soll auf Anforderung einen neuen Nutzer
erstellen können, das heißt einen neuen Das Hauptprogramm soll sich nicht um die Einzelheiten der Threadorganisation eines Nutzers kümmern. Das muss alles in gekapselter Form Aufgabe einer eigenen Klasse sein. Ähnliche Datenstrukturen sollen in der folgenden Aufgabe zu Sockets ebenfalls verwendet werden. Ein Nutzer, also insbesondere sein Thread, soll sowohl vom Hauptprogramm als auch über sein Fenster ordentlich beendet werden können. Beachtet dazu die Hinweise in der Dokumentation zum Beenden von Threads. Funktionalität Das Hauptprogramm soll einen AVL-Baum besitzen, auf den die
verschiedenen Nutzer ( Parallelität Da die unterschiedlichen Nutzer nur über verschiedene Fenster und
somit nur durch einen Nutzer (Euch) realisiert sind, würden
direkte Anfragen nicht parallel sondern nur seriell erfolgen. Um Euren
neuen AVL-Baum trotzdem testen zu können, soll für jeden Nutzer
über sein Fenster eine Liste von Aktionen eingeben werden können
(zum Beispiel in einer Euer Hauptprogramm soll alle Zugriffe auf den Baum protokollieren.
Die Ausgaben sollen mittels einer Debug-Option in Eurer neuen AVL-Baum
Klasse erzeugt und dann vom Hauptprogramm an entsprechender Stelle
ausgegeben werden. Dazu läßt sich sicher eine Pipe und
Stream Konstruktion finden, so dass alle
/** A method for printing out a debug infomation string.
@param s string to be printed out
*/
public interface DebugPrinter {
public void debugPrintln(String s);
}
Die Fenster zu den Nutzern sollen natürlich ebenfalls Protokoll über die erfolgreichen oder nicht erfolgreichen Anfragen führen. Zur ErinnerungÜberlegt Euch wieder als erstes eine saubere Zerlegung des Problems in Klassen und ordnet diesen Aufgaben und die notwendigen Informationen zu. Dazu eignet sich bekanntlich UML (ein white paper dazu). Beim Programmieren überprüft immer wieder an Hand Eures Bildes ob Euer Konzept noch richtig ist oder verändert werden muss. Verändert immer erst dass Konzept, bevor Ihr das Programm dazu schreibt. Bekanntlich kann man in einem kurzen Programm (Methode) weniger Fehler machen als in einem langen. Ersetzt nicht einen Fehler durch ständiges hinzufügen von weiten Zeilen durch zehn Fehler. Vergesst die | |||||||||||||||||||||||
|
|
|