Vom Text zum Diagramm
- Substantive:Kandidaten für Klassen — aber nur, wenn sie eigene Eigenschaften oder eigenes Verhalten haben.
- Einfache Werte:Farbe, Name, Grad werden Attribute mit Datentyp.
- Verben:Tätigkeiten werden Methoden der Klasse, die sie ausführt.
- „hat“, „kennt“:Assoziation; Mengenwörter liefern die Kardinalität — „genau ein“
1, „höchstens ein“0..1, „beliebig viele“, „alle“*. - „ist ein“:Vererbung — die speziellere Klasse erbt von der allgemeineren.
- Streichen:Synonyme, die Software selbst und Personen, die nur bedienen, aber keine Daten haben.
Ziehe die Papierrolle unten nach rechts (oder → auf der Rolle, ▶ spielt ab): Satz für Satz wickelt sich der Auftragstext ab, und das Klassendiagramm wächst mit. Gelb markiert ist, was der aktuelle Satz neu beiträgt.
- Die Kletterhalle verwaltet beliebig viele Routen und Mitglieder.
- Jede Route hat eine Farbe und einen Schwierigkeitsgrad.
- Ein Mitglied hat einen Namen und kann eine Route als geschafft eintragen.
- Jedes Mitglied kennt alle Routen, die es geschafft hat.
- Ein Trainer ist ein Mitglied, das zusätzlich eine Lizenznummer hat.
- Jede Route wird von genau einem Trainer geschraubt.
Halte fest: Jeder Satz liefert ein Stück Diagramm — Substantive mit Eigenschaften werden Klassen, Werte werden Attribute, Verben Methoden, „kennt“ wird Assoziation und „ist ein“ Vererbung. Kein Satz darf ohne Spur im Diagramm bleiben.
Den Entwurf prüfen
- Attribut oder Klasse?Hat das Ding eigene Daten, wird es eine Klasse mit Assoziation; ist es nur ein Wert, bleibt es Attribut.
- Referenz statt Name:nicht
- trainerName: Zeichenkette, sondern- schrauber: Trainer— das Objekt selbst kennen. - Doppeltes:gleiche Attribute in mehreren Klassen → Oberklasse prüfen (ist-ein-Test).
- Richtung:nur so viele Pfeile, wie die Methoden zum Navigieren brauchen.
- Probelauf:jede Anforderung als kleines Objektdiagramm durchspielen — geht alles, ist der Entwurf vollständig.
Herleitung:
Route zu Trainer.Route ——schrauber——> 1 Trainer1 an der Trainer-Seite; die Rolle heißt schrauber.- schrauber: Trainernull sein darf.private Trainer schrauber; + Parameter im Konstruktorpublic class Route {
private String farbe;
private int grad;
private Trainer schrauber; // Kardinalität 1
public Route(String farbe, int grad, Trainer schrauber) {
this.farbe = farbe;
this.grad = grad;
this.schrauber = schrauber; // nie null
}
public Trainer getSchrauber() {
return schrauber;
}
}
Trainer t = new Trainer("Mo", "DAV-4711");
Route gelb = new Route("gelb", 5, t);
t.eintragen(gelb); // ein Trainer ist auch ein Mitglied
System.out.println(t.getAnzahlGeschafft()); // 1
System.out.println(gelb.getSchrauber() == t); // true
Entwurf in vier Schritten: Klassen finden → Attribute und Methoden zuordnen → Beziehungen festlegen („kennt“ → Assoziation mit Kardinalität, „ist ein“ → Vererbung) → mit den Anforderungen prüfen.
Allgemeine Hinweise
Nicht jedes Substantiv ist eine Klasse
„Farbe“ und „Schwierigkeitsgrad“ sind Werte, „Software“ oder „App“ ist das System selbst. Wer alles zur Klasse macht, bekommt Klassen ohne Methoden.
Keine Schlüssel wie in der Datenbank
Eine Nummer als Verweis (- trainerNr: Ganzzahl) ist Datenbank-Denken. Im Klassendiagramm kennt ein Objekt das andere direkt über eine Referenz.
Jeden Satz abhaken
Nummeriere die Sätze des Auftrags und notiere am Diagramm, woher jedes Element stammt. So fällt sofort auf, welcher Satz noch keine Spur hinterlassen hat.
