Betrachten Sie folgende Systembeschreibung:
Es sollen die Übungsgruppen zu den Vorlesungen des Informatik-Grundstudiums verwaltet werden.
Dozenten sollen dazu Vorlesungen mit Name, Zeiträume und Orte, den zugehörigen Übungsgruppen
und Übungspunkte-Stufen für das Erreichen der Klausurzulassung und von Bonuspunkten anlegen
können. Zu den Übungsgruppen sollen der Übungsgruppenleiter, die Übungsgruppennummer,
Zeitraum und Ort, die Anzahl der Übungstermine (pro Übungsgruppe) und die maximale
Teilnehmerzahl gespeichert werden. Studenten sollen sich zur Übungsteilnahme anmelden können,
indem Sie jeder Übungsgruppe die Priorität 1 (bevorzugt), 2 (möglich) oder 3 (nicht möglich)
zuordnen. Nach Ende des Anmeldezeitraums soll basierend auf diesen Prioritäten automatisch eine
möglichst optimale Verteilung der Studenten auf die Übungsgruppen erfolgen. Den
Übungsgruppenleitern soll es möglich sein, für jeden Übungstermin die von den
Übungsgruppenteilnehmern erreichten Übungspunkte einzutragen. Für jeden Übungstermin soll
außerdem die maximal erreichbare Anzahl von Übungspunkten gespeichert werden.
Erstellen Sie ein Klassendiagramm des beschriebenen Systems nach folgenden Vorgaben (erstaml
bitte komplett durchlesen!):
Modellieren Sie zuerst detailliert jede Klasse für sich. Geben Sie alle Attribute so detailliert wie möglich
an (mit Datentyp, Multiplizität, Anfangswert und Einschränkungen). Zur Strukturierung der Daten können
Sie die Klassen Student, Vorlesung, Übungsgruppe und Übungstermin verwenden. Dies
ist als Hilfestellung zu verstehen. Ist Ihnen eine andere Strukturierung lieber oder verständlicher, so
dürfen Sie auch andere Klassen verwenden, sollten Ihre Wahl dann aber kurz begründen. In jedem
Fall müssen alle beschriebenen Daten entweder durch ein Attribut einer der Klassen oder durch eine
Assoziation zwischen den Klassen modelliert werden. Auf die Angabe von Operationen können Sie
komplett verzichten.
Modellieren Sie auch alle von Ihnen verwendeten Datentypen. Geben Sie dabei Attribute so detailliert
wie möglich an, auf die Angabe von Operationen können Sie verzichten. Wählen Sie Datentypen so
aus, dass Sie dabei die Daten so detailliert wie möglich strukturieren. Bitte machen Sie sich dazu
selbstständig mit dem UML-Aufzählungstyp vertraut (eigene Literatur- und/oder Internet-Recherche,
da nicht Teil des Skripts) – Sie werden feststellen, dass sich seine Anwendung hier mehrmals anbietet.
Als Hilfestellung schlagen wir Ihnen folgende Datentypen vor:
Termin: zur Modellierung von Vorlesungs- und Übungsterminen mit Angabe von Zeitraum, Raum,
Turnus, Datum und Wochentag.
Datum: zur Modellierung von Tag, Monat, Jahr.
Zeitraum: zur Modellierung von Anfang und Ende einer Veranstaltung, jeweils durch Angabe einer
Uhrzeit.
Uhrzeit: zur Modellierung von Stunde und Minute.
Raum: zur Modellierung von Gebäude und Raumnummer.
١
Wochentag: Montag, Dienstag, …
Turnus: einmalig, wöchentlich, …
Stufe: zur Modellierung einer Punktegrenze (für die Klausurzulassung oder das Erreichen einer Anzahl
von Bonuspunkten); kann relativ (in Prozent) oder absolut (Punkteanzahl) angegeben werden.
Semester: Wintersemester, Sommersemester
Priorität: bevorzugt, möglich, unmöglich
Konstruieren Sie schließlich das Klassendiagramm ohne die Angabe der Attribute und Operationen
der Klassen. Die Assoziationen sollen mit Multiplizitäten, Rollennamen und Namen angegeben werden
(Navigierbarkeit müssen Sie keine angeben). Verwenden Sie gegebenenfalls Assoziationsklassen
(bei diesen dürfen Sie auf die Angabe von Operationen verzichten). Beachten Sie schließlich, dass
Daten, die durch Assoziationen modelliert werden, nicht mehr als Attribute vorkommen.
Zuletzt noch zwei Überlegungen:
- Haben Sie schon Generalisierungsstrukturen benutzt? Falls nicht: Überlegen Sie, inwiefern
die Daten durch Bildung von Unterklassen und Oberklassen noch besser strukturiert und werden
könnten.
- Sie werden feststellen, dass nicht alle beschriebenen oder impliziten Informationen im Modell
ausgedrückt werden (können). Geben Sie 2-3 solche Informationen an.
Ich hab keinen Plan, wie das zu lösen ist.