Wie erstellt man ein erweitertes Klassendiagramm?
Ich habe eine Klasse gegeben zu der obigen Abbildung:
Die genaue Aufgabenstellung:
Schreibe in der Programmiersprache eine Klasse ODERSCHALTUNG entsprechend dem nebenstehenden Klassendiagramm. Erstelle vor der Umsetzung das erweiterte Klassendiagramm.
Ich will keine Lösung für die Aufgabe, aber mir würde es helfen wenn man mir sagt wie ich ein erweitertes Klassendiagramm erstelle und wie ich das dann in Programmiersprache schreibe.
Danke im Voraus!
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.