# Problem mit UML-Klassendiagramm



## Moch (18. Jun 2011)

Hallo,
Ich hoffe ich bin hier im Unterforum richtig.
Wir sollen derzeit im Rahmen einer Vorbereitungsaufgabe für die Klausur (bedeutet: es gibt keine Lösung) u.a. ein UML-Klassendiagramm erstellen.

Thematisch geht es um Ampeln.

Eine Ampel selbst ist eine abstrakte Oberklasse, von der die Klassen "Fahrzeugampel", "FussgängerAmpel" und Ampelanlage erben.
Zwischen der Ampelanlage und der Ampel gibt es eine Komposition, die besagt, dass jeder Ampelanlage aus 2..* Ampeln besteht und dass eine Ampel entweder einer oder gar keiner Anlage angehört.

Wir sollen dieses Diagramm nun wie folgt erweitern:
- Eine Ampel kann die Zustände Rot, RotGeld, Gelb und Grün haben
- Eine Ampel kann einen oder mehrere Zustände haben
- Eine Ampel hat genau einen Anfangszustand
- Eine Ampel hat genau einen aktuellen Zustand
- Alle Zustände sollen eigene Klassen sein, die von der gemeinsamen, abstrakten Oberklasse "Zustand" erben.

Ich habe jetzt das Problem, dass ich die Sache mit dem Anfangszustand und dem aktuellen Zustand nicht hinbekomme.

Ich bin bisher so vorgegangen, dass ich die abstrakte Klasse Zustand "erstellt" habe und zwischen ihr und der abstrakten Klasse Ampel eine Komposition erstellt habe, die besagt (jeder Zustand kann zu 0..* Ampeln gehören und jeder Ampel kann 1..4 Zustände haben.
Weiterhin habe ich die erbenden Klassen Rot, RotGeld, Gelb und Grün "erstellt".

Jetzt weiß ich aber nicht weiter, wie ich den aktuellen Zustand bzw. die Anfangszustand modellieren soll.
- Kann ich hierfür wieder eine Klassen erstellen, die von Zustand {abstrakt} erben und von denen wieder die Klassen Rot, RotGeld, Gelb und Grün erben?
- Habe ich einfach nur totalen Mist gebaut?

Bisher erstelltes Diagramm im Anhang


----------



## eRaaaa (18. Jun 2011)

Moch hat gesagt.:


> Wir sollen dieses Diagramm nun wie folgt erweitern:
> [...]
> *- Alle Zustände sollen eigene Klassen sein, die von der gemeinsamen, abstrakten Oberklasse "Zustand" erben.*



Mhm, ich hätte da wohl eher eine Enumeration erwartet, aber okay 



> Ich habe jetzt das Problem, dass ich die Sache mit dem Anfangszustand und dem aktuellen Zustand nicht hinbekomme.



Naja die Ampelklasse könnte zwei Attribute haben vom Typ Zustand!
eben einmal 
	
	
	
	





```
Zustand aktuellerZustand;
```
 und einmal 
	
	
	
	





```
Zustand anfangsZustand;
```
 (evtl. direkt mit einem Zustands-Objekt initialisiert)


----------



## Gast2 (18. Jun 2011)

eRaaaa hat gesagt.:


> Mhm, ich hätte da wohl eher eine Enumeration erwartet, aber okay


bastelt der Java Compiler nicht aus einem Enum-Konstrukt entsprechende Klassen oder bin ich da auf einem alten Stand stehen geblieben ... sollte es nicht letzter Fall sein, dann geht das doch Erben & Enums


----------



## eRaaaa (19. Jun 2011)

mogel hat gesagt.:


> bastelt der Java Compiler nicht aus einem Enum-Konstrukt entsprechende Klassen oder bin ich da auf einem alten Stand stehen geblieben ... sollte es nicht letzter Fall sein, dann geht das doch Erben & Enums



Naja der Compiler bastelt aber eben nur *eine* Klasse daraus, aber was hat das jetzt genau mit dem UML zu tun, bzw. was wolltest du jetzt sagen? 
Ich wollte eig. sagen, dass ich nicht 4 Klassen sowohl als Java Code als auch im UML darstellen würde, sondern eben nur eine und das wäre das Enum (bzw. in UML glaube ich <<enumeration>>) _Zustand_. Oder anders gesagt, ich hätte dafür keine abstrakte Klasse _Zustand_ benutzt, sondern eben ein enum 
Aber ist ja auch egal, die Aufgabe gibt das so vor und dann muss das auch so im UML abgebildet werden, wollte nur meinen Senf dazu geben, hätte ich vlt lassen sollen, dann wäre es nicht so irritierend


----------



## Gast2 (19. Jun 2011)

Du wollteste ein Enum (was sinnvoller ist) - die Aufgabe aber Vererbung ... also bastle ich mir ein Vererbung mit Enum ... darauf wollte ich hinaus

ansonsten ... damit keiner mehr UML-Diagramme mit Paint zeichnet -> argouml.tigris.org (z.B.)


----------

