Das Programmsystem ist unter Windows-7 entwickelt worden und besteht aus den folgenden Quelldateien:
Die zugehörigen class-Dateien befinden sich in ein und demselben Verzeichnis.
Zwischen den beiden Klassen TelefonbuchServer und Telefonbuch und der Benutzerin bzw. dem Benutzer wurde grob folgende Benutzungsbeziehung realisiert:
Die Klasse Telefonbuch enthält zentral eine ArrayList namens tBuch aus Strings der Form Name&Nummer. Gemäß der Aufgabenstellung können Aufbau und Plege der Liste im Programm unberücksichtigt bleiben. Deshalb werden bezüglich tBuch keinerlei Konsistenzuntersuchungen durchgeführt. Zum Telefonbuch gehören die beiden Methoden tBuchSuche() und tBuchAbfrage() sowie die zwei ArrayLists suErgNa und suErgNu für die gefundenen Suchergebnisse.
tBuchSuche() wird mit einem sogenannten partiellen, korrekt aufgebauten Query String (pkqs) parametrisiert. Steht * für einen nicht leeren zu suchenden Namen oder eine nicht leere zu suchende Nummer, dann hat pkqs entweder die Form *&, falls nach einem Namen gesucht werden soll oder die Form &* bei der Suche nach einer Nummer. Die Methode gibt eine partielle Trefferliste zurück. Partiell deshalb, weil nur nach einem Namen oder nach einer Nummer - aber nicht nach beiden - gesucht worden ist.
Die Methode tBuchAbfrage() ist die Schnittstelle zum Telefonbuchserver (TelefonbuchServer.class) und wird mit einem korrekt aufgebauten Query String (kqs) aufgerufen. Dieser hat die Form
Mit Hilfe einer inneren Klasse werden die Suchvorgänge als nebenläufig arbeitende Threads gestaltet. Die Suchthreads schreiben ihre Treffereinträge in jeweils eine eigene Ergebnisliste (suErgNa bzw. suErgNu). Zwei Listen werden verwendet, um Schreibkonflikte zu vermeiden, die bei der Nebenläufigkeit durch die Threads auftreten können.
Die Klasse Telefonbuch hat die folgende Grobstruktur:
Realisiert wird ein iterativer Server, der die Suchaufträge des Benutzers der Reihe nach abarbeitet. Er besteht aus einer auf die Rechnerkonsole zugeschnittenen Benutzerschnittstelle und einer Analysemethode. Die Benutzerschnittstelle besteht aus den beiden Methoden auswahl() und ausgabe(). Die Analysemethode heißt analyse(). Neben der Untersuchung der Benutzereingaben löst sie auch die erforderlichen Suchvorgänge im Telefonbuch aus, indem sie dessen Methode tBuchAbfrage() aufruft. Das Zusammenwirken der Programme des Telefonbuchservers wird durch den folgenden Pseudocode beschrieben:
auswahl() bietet dem Benutzer über ein Textmenü Eingabemöglichkeiten gemäß der Aufgabenstellung. Falsche Auswahlen werden sofort zurückgewiesen. Der Benutzer kann den Programmlauf hier beenden. Gibt er zu suchende Zeichenfolgen ein, dann liefert die Methode einen Query String (qs) zurück, der die Benutzereingaben bündelt. Er hat die Form *& oder &* oder *&*, wobei * jeweils für eine möglicherweise leere Benutzereingabe steht. Diese ist syntaktisch falsch, wenn sie das Zeichen & enthält. Der Benutzer wird vor der Eingabe darauf hingewiesen, dass dieses Zeichen nicht in Namen oder Nummern enthalten sein darf. Der Query String wird dann der Analysemethode übergeben. Diese untersucht den Query String und erkennt sowohl syntaktisch falsche, als auch leere Benutzereingaben. Analyseergebnisse sind:
Mit Query Strings, die syntaktisch falsch sind oder leere Eingaben enthalten, werden keine Suchvorgänge gestartet. Die anderen Query Strings heißen korrekt aufgebaut (kqs). Nur diese werden an tBuchAbfrage() im Telefonbuch weitergegeben. analyse() führt eine Ergebnisliste, die von tBuchAbfrage() gefüllt wird, falls die Suche im Telefonbuch zu Treffern geführt hat. Diese Liste wird von der Analysemethode um einen Eintrag für das Analyserergebnis erweitert und an die Methode ausgabe() der Benutzerschnittstelle übergeben.
ausgabe() schreibt die von den Suchvorgängen gefundenen tBuch-Einträge, versehen mit einer Angabe des Analyseergebnisses, auf die Konsole. Auf diese Weise werden auch syntaktisch falsche und leere Benutzereingaben charakterisiert und es wird auf erfolglose Suchvorgänge hingewiesen.
Die folgende Grafik zeigt die Struktur des Programmsystems:
An irgendeinem Rechner des Übungsraums wird ein lokales Login durchgeführt und die Programme werden bereitgestellt. Das Programm wird in einer Linux- oder Windows-Konsole mit
gestartet.