Praktikum aus Programmierung
JAVA – Projekt (WS 2004/2005)
Martina Maida (Mat.nr.:
9625308)
Problembeschreibung
Das Ziel dieses Projekts ist die Implementierung eines Prototyps eines Terminverwaltungssystems um Besprechungen zu koordinieren, wobei das Augenmerk darauf liegt, zu überprüfen ob bei an den Terminen teilnehmenden Personen eine zeitliche Überschneidung stattfindet. Als Anwendungsfall aus der Realität könnte etwa die Organisation von Meetings oder Seminaren in einer Firma hergenommen werden.
Die Ausgangslage ist, dass gewisse Daten (z.B. Teilnehmer, Räumlichkeiten und Objekte zur Ausstattung) bereits im System registriert sein sollten bzw. bei der ersten Inbetriebnahme des Programms übertragen werden können. Dieser Datensatz ist über Menüpunkte erweiterbar und stellt auch die Grundlage für die Auswahl etwa bei der Initiierung eines neuen Termins dar.
Außerdem wird angenommen, dass das Programm permanent läuft und dadurch die Daten immer zur Verfügung stehen.
Es soll eben möglich sein, Meetings im System anzulegen.
Zu jedem Meeting gehören dann gewisse Attribute, wie etwa ein Thema, ein Datum
bzw. eine Uhrzeit, eine Räumlichkeit, ein eventuelles Hilfsmittel für
Präsentationen und die teilnehmenden Personen. Der Benutzer sucht sich aus
angelegten Listen gewisse entsprechende Attribute aus.
Weiters gibt es einen Menüpunkt um Termine zu löschen. Dies erfolgt über die Angabe der Indexnummer des betroffenen Meetings.
Bei diesen beiden Vorgängen wird immer überprüft, ob es zu Terminkollisionen bei den teilnehmenden Personen kommt bzw. ob diese durch Löschungen von Terminen aufgehoben werden. Ich denke, aus der Praxis gesehen, ist es sinnvoll nicht gleich das ganze Meeting zu streichen, wenn etwa ein Teilnehmer eine zeitliche Überschneidung mit einem anderen Termin hat, sondern es ist besser im System kenntlich zu machen, dass der Termin nicht 100% für alle fixierbar ist.
Außerdem gibt es auch noch einen Menüpunkt um sich alle angelegten Besprechungstermine anzeigen zu lassen.
Falls das Programm tatsächlich beendet werden soll, gibt es schließlich auch hierfür einen Menüpunkt.
Das Projekt ist nach dem objektorientierten Konzept, in der Programmiersprache JAVA und unter der Benutzung des „Singleton-Patterns“ implementiert.

USE-CASE DIAGRAMM
Klassendiagramm

Sequenzdiagramm für den Vorgang „Ausstattung in System einfügen“

Sequenzdiagramm für den Vorgang „Person in System einfügen“

Sequenzdiagramm für den Vorgang „Raum in System
einfügen“
Sequenzdiagramm
für den Vorgang „Besprechung neu anlegen“

Sequenzdiagramm für den Vorgang „Besprechung löschen“

Sequenzdiagramm für den Vorgang „Besprechungen anzeigen“
Beschreibung der Klassen
public class Person
Diese Klasse beinhaltet
den Namen der Person und alle dessen Termine (Vector meetings). Es stehen hier
Methoden zur Verfügung um entsprechende Einträge anzulegen bzw. zu löschen.
Weiters findet hier
die Überprüfung statt, ob es bei den Meetings einer Person zu zeitlichen
Kollisionen kommt.
public class Room
Diese Klasse vertritt
den Raum, wo Meetings stattfinden und weist einen Namen zu.
public class
Resource
Diese Klasse
repräsentiert eine Ausstattung bzw. ein Hilfsmittel, welches bei Besprechungen
verwendet werden kann und weist einen Namen zu.
public class
TimeFrame
Mit Hilfe der Klasse java.util.GregorianCalendar
wird hier der zeitliche Rahmen des Meetings festgelegt, also das Beginn- und
Enddatum und die Beginn- und Enduhrzeit.
Weiters findet hier in
der Methode „public boolean checkIfTimeframesOverlap(TimeFrame tFrame)“ die
Überprüfung auf zeitliche Kollisionen statt, welche über die Klasse Person in „public
boolean checkMeetings(Meeting meeting)“ aufgerufen wird.
public class
Meeting
Diese Klasse vertritt
ein Meeting bzw. einen Termin. Jedes Meeting hat ein Thema, einen Zeitrahmen,
einen Raum, wenn gewünscht eine Ausstattung und hat mindestens 2 Teilnehmer.
Außerdem wird dem Meeting ein Status zugewiesen, an dem ersichtlich ist, ob der
Termin von allen Teilnehmern wirklich wahrnehmbar ist oder ob jemand eine
zeitliche Kollision hat.
public class
MeetingControl
Hier werden die
Personen, Räume, Ausstattungsobjekte und schließlich die Meetings (mit Hilfe
von Vectoren) verwaltet. Die Implementierung des Singleton-Patterns soll
sicherstellen, dass nur eine Instanz dieser Klasse erzeugt wird.
public class
UserInterface
Diese Klasse stellt
die eigentliche Schnittstelle zum User dar. Es wird ein Menü ausgegeben,
worüber die Interaktion erfolgt und der Benutzer entsprechende Aktionen wählen
kann. Nach deren Ausführung wird automatisch wieder das Menü angezeigt.
Die hierüber
eingegebenen Daten werden dann in der Klasse MeetingControl verarbeitet.
Anleitung
für den Benutzer
Die Bedienung des
Programms erfolgt über das textbasierte Menü, welches nach jeder
abgeschlossenen Aktion wiederkehrt. Die gewünschten Vorgänge sind über die
Indexnummern des Menüs zu wählen und danach werden die nächsten Schritte
durchgeführt.
Grundsätzlich ist
gedacht, dass das Programm einmal gestartet wird und dann immer im Hintergrund
läuft.
Für eine nähere
Beschreibung der Menüpunkte, siehe Abschnitt „Problembeschreibung“
Wartung
Wartungsarbeiten
sollten prinzipiell nicht notwendig sein. Allerdings ist eine mögliche,
zukünftige Erweiterung der Programmfunktionen zu überdenken.