Etappe 2: Von der Analyse zum softwaretechnischen Modell
Wir kennen jetzt die Grundidee der Objektorientierung und wissen, dass UML uns dabei hilft, Objekte sichtbar zu machen. In dieser Lektion wenden wir das erstmals wirklich an. Dabei geht es noch nicht darum, ein perfektes UML-Klassendiagramm zu zeichnen – das folgt in aller Ausführlichkeit erst in Kapitel 3. Hier wollen wir vor allem lernen, wie man überhaupt zu einem ersten Modell gelangt.
Motchi möchte, dass Gäste künftig online reservieren können und dass sein Team jederzeit den Überblick über Tische, Reservierungen und Bestellungen behält. Genau diesen Auftrag modellieren wir jetzt Schritt für Schritt.
Lies die Anforderung noch einmal aufmerksam durch. Welche Begriffe fallen dir auf? Welche Dinge sind für Chez Motchi wichtig?
Bei der Analyse fallen schnell mehrere zentrale Begriffe auf:
Diese Begriffe beschreiben Dinge, die innerhalb des Systems eine Rolle spielen. In der Objektorientierung nennen wir solche Bestandteile Objekte oder – sobald wir sie allgemein betrachten – Klassen.
Sobald wir die wichtigsten Objekte gefunden haben, fragen wir uns: Welche Informationen müssen wir über sie speichern? Diese Informationen nennen wir Attribute.
| Klasse | Mögliche Attribute |
|---|---|
| Gast | Name, Telefonnummer, Anzahl bisheriger Besuche |
| Tisch | Tischnummer, Sitzplätze, Lage (z. B. Fenster) |
| Reservierung | Datum, Uhrzeit, Personenzahl |
| Mitarbeiter | Name, Rolle |
Objekte speichern nicht nur Informationen, sie besitzen auch Aufgaben. Diese nennen wir Methoden.
bestaetigen(), stornieren()reservierungAnlegen(), bestellungAufnehmen()Ein Softwaresystem entsteht erst dadurch, dass die einzelnen Objekte miteinander verbunden sind.
Ein erstes, noch grobes Skelett unseres Modells könnte so aussehen:
Gast ────────── Reservierung ────────── Tisch
│
Mitarbeiter
In unserer ersten Version des Systems könnte derselbe Tisch versehentlich für zwei Reservierungen zur gleichen Uhrzeit vergeben werden – schließlich haben wir bisher nur festgelegt, dass eine Reservierung irgendeinem Tisch zugeordnet ist, nicht aber, dass ein Tisch zu einer bestimmten Zeit nur einmal vergeben werden darf.
Genau dieses Problem kennen wir bereits aus der Praxis: „Zwei Gäste erhalten versehentlich denselben Tisch.“ Ein Modell, das diese Regel nicht abbildet, würde den Fehler in der Software einfach wiederholen, statt ihn zu lösen.
Überlege: Warum ist das ein Fehler im Modell, und wie würdest du die Struktur anpassen, um das Problem zu lösen?
Die Lösung besteht darin, die Beziehung zwischen Tisch und Reservierung genauer festzulegen: Ein Tisch darf zu einer bestimmten Uhrzeit nur mit genau einer Reservierung verbunden sein. Diese Art von Regel bezeichnet man in UML später als Kardinalität – ein Konzept, das wir in Kapitel 3 im Detail behandeln.
Ein Mitarbeiter von Chez Motchi fragt dich: „Wie lege ich eine neue Reservierung an und weise ihr einen Tisch zu?“ Dank unseres Modells lässt sich das klar beantworten:
Das Modell zeigt genau, warum diese Reihenfolge nötig ist: Eine Reservierung hängt an einem Gast und an einem Tisch – ohne diese beiden Angaben ist sie unvollständig.
Damit haben wir ein erstes, noch grobes Modell von Chez Motchi erstellt – ganz ohne formale UML-Notation. Genau dieses Skelett aus Gast, Tisch, Reservierung und Mitarbeiter wird uns in Kapitel 3 wieder begegnen, wo wir es Schritt für Schritt in ein vollständiges UML-Klassendiagramm mit Sichtbarkeiten, Vererbung und Kardinalitäten verwandeln.