Wie erstellt man ein erweitertes Klassendiagramm?

1 Antwort

Die Aufgabe verlangt von dir, dass du die Elemente des Klassendiagramms noch spezifischer beschreibst.

Du kannst z.B.:

  • Datentypen ergänzen
  • Sichtbarkeiten setzen (+/#/-/~) sowie weitere Modifkatoren (static, Konstanten, ...)
  • Den Typ der Klasse definieren (abstrakt oder nicht)
  • Rückgabetypen ergänzen

Es wird also etwas konkreter bzw. bezieht sich spezifischer auf die angedachte Programmiersprache.

Ein kleines Beispiel (wohlgemerkt nur plump textuell nachgezeichnet):

-----------------------------------
| Dog                             |
-----------------------------------
| - numberOfLegs: int {readOnly}  |
-----------------------------------
| + run()                         |
| + eat(food: Food)               |
| + bark(volume: int): Sound      |
-----------------------------------

Die Klassen Food und Sound müsste man normalerweise auch noch definieren, da sie nicht Teil des SE sind. Aber das erspare ich mir an der Stelle einmal.

Für die Umsetzung würde ich dir übrigens das Programm NClass empfehlen. Dies ist ein kleiner UML Editor für Objekt- und Klassendiagramme in Java/C#. Er sollte dir bei der formellen Schreibweise sehr behilflich sein.

Die Umsetzung in der jeweiligen Programmiersprache dürfte, zumindest in der Grundstruktur, danach nicht mehr sonderlich schwer sein.

Beispiel in Java zu obiger Klasse:

class Dog {
  private final int numberOfLegs;

  public Dog() {
    this.numberOfLegs = 4;
  }
        
  public void run() {
    // ...
  }

  public void eat(Food food) {
    // ...
  }

  public Sound bark(int volume) {
    // ...
  }

  // maybe: Getter for numberOfLegs ...
}

Überlege dir danach, wie die konkrete Logik aussehen muss. Bei dir wäre es wohl einfach nur das Setzen von Variablen und die darauffolgende Prüfung, inwiefern die Lampe an- oder ausgehen muss.

Beachte hinsichtlich des Diagramms noch, dass parameterlose Standardkonstruktoren (sowie Getter-/Setter-Methoden) üblicherweise aus dem Diagramm herausgelassen werden, denn sie blähen es sonst nur auf. Die Implementation dieser Elemente gilt also unterschwellig schon als gesetzt. Eine Ausnahme dessen gäbe es wenn nur, wenn die gedachte Umsetzung von der Standardimplementation abweicht. Ein privater Konstruktor wäre ein Beispiel hierfür.