SEP WS 2017/2018
Einführungsaufgabe “Chatsystem”

Hintergrund

Aus den zurückliegenden SEPs wurde immer wieder ersichtlich, dass der Kenntnisstand der verschiedenen Teilnehmenden sehr unterschiedlich ist. Das diesjährige SEP Projekt verlangt (unter anderem) eine graphische Oberfläche in Swing zu implementieren und zwischen einem Client und einem Server übers Netzwerk zu kommunizieren. Um sicherzustellen, dass sich jede Teilnehmerin und jeder Teilnehmer mit einer solchen Problemstellung zumindest einmal auseinandergesetzt hat, wird eine Einführungsaufgabe gestellt. Sie gibt die Gelegenheit, sich mit folgenden Themen auseinanderzusetzen:

Die Bearbeitung dieser Aufgabe ist als Einarbeitung für das SEP dringend angeraten. Unserer Meinung nach ist es für das Gelingen des SEP notwendig, dass jedes Mitglied eurer Gruppe in der Lage ist, diese Aufgabe zu bewältigen, bevor mit dem Pflichtenheft begonnen wird. Deshalb soll diese Aufgabe von jedem Teammitglied eigenständig bearbeitet werden und bei der jeweiligen Betreuungsperson als ausführbare JAR-Datei und als Quellcode per E-Mail abgegeben werden. Abgabetermin ist bereits der 05. Oktober 2017 um 10:00 Uhr. Damit bleibt vor Beginn des SEP noch Zeit für die Besprechung der Abgabe mit der Betreuungsperson und eventuelle Nachbesserungen.

Aufgabenstellung

Es soll ein (stark vereinfachter) Chatserver und -client implementiert werden. Die Aufgabe des Chatserver besteht einzig im Annehmen neuer Netzwerkverbindungen und ein Verteilen der gesendeten Nachrichten an alle verbundenen Clients. Es muss dabei kein kompliziertes Netzwerkprotokoll entworfen werden, es sollen lediglich String-Nachrichten über das Netzwerk ausgetauscht werden. Der Client darf sich beim Starten ohne weitere Nachfragen oder Benutzerinteraktionen direkt zum Chatserver verbinden (bitte über localhost verbinden) und soll 2 graphische Komponenten aufweisen. Zum einen soll eine JTextArea zur Anzeige der gesendeten Daten verwendet werden, zum anderen ein JTextField zur Eingabe von neuem Text. Durch Bestätigung der Enter-Taste oder eines optionalen Senden-Buttons soll der Text an den Server übertragen werden und von diesem an alle Clients verteilt werden.

Es bleibt freigestellt, welche Netzwerk-API aus der Standard-Library von Java verwendet wird. Das Programm muss mehrere Threads verwenden (z.B. für GUI und Netzwerk). Die Kommunikation zwischen diesen Threads muss auf korrekte Art und Weise erfolgen (keine Auftreten von Deadlocks und anderen Multithreading-Problemen). Erfahrungsgemäß ist dies einer schwierigsten Punkte während der Implementierungsphase im SEP, daher arbeitet euch bereits jetzt ein.

Hinweise

Die Aufgabe sollte innerhalb eines Tages lösbar sein (wenn man sich mit den entsprechenden Techniken schon auskennt). Zusätzliche Features wie Menüs, Buttons oder andere Verschönerungen sind nicht nötig. Als Literatur bieten sich die Kapitel zu Nebenläufigkeit und Swing des Vorlesungsskripts von Programmieren 2 an.

Weitere Literatur: