# Java-Code in UML 2.0



## Jayman (29. Apr 2007)

Hallo,
ich muss einen gegebenen Code in UML 2.0 umwandeln. Also mit dieser Blockstruktur.
Ich hoffe jemand kennt das, und kann mir sagen ob ich es richtig gemacht habe:





Ich habe folgendes raus:

Account
---------

- runningTotal : double
- accountHolder : String

----------

+Account ()
+Account (in accountHolder: String, in openingBalance : double) : double
+getRunningTotal (): double
+deposit (in amount : double) : double
+debit (in amount : double) : double
+getAccountHolder () : String
+setAccountHolder (in accountHolder : String) : String


-> Ist meine Ausflistung korrekt?
Danke im Vorraus.


----------



## Wildcard (29. Apr 2007)

Du kannst dir mit entsprechenden Tools auch einfach ein Diagramm aus bestehendem Code erzeugen lassen  :wink:


----------



## Jayman (29. Apr 2007)

Aha, wo finde ich das? und wie heißt das?


----------



## Wildcard (29. Apr 2007)

Zum Beispiel eUML
http://www.soyatec.com/main.php


----------



## Jayman (29. Apr 2007)

OK,
habe mir das installiert.
Weiß du, wie ich von Eclipse aus ein solches Programm in ein UML-Diagramm umwandeln kann?


----------



## Wildcard (29. Apr 2007)

Das ist doch ein Eclipse Plugin  :lol:


----------



## Jayman (29. Apr 2007)

Dann habe ich wohl etwas falsch gemacht. Dachte man kann ein Programm von Eclipse aus zu solch einem UML Diagramm machen.Hast Du denn das Programm?


----------



## Wildcard (29. Apr 2007)

eUML ist ein Eclipse Plugin. D.h. es integriert sich in Eclipse und damit kannst du dann Diagramme erzeugen.


----------



## Jayman (29. Apr 2007)

Wie kann ich dieses denn aufrufen zum Zeichen?


----------



## Wildcard (29. Apr 2007)

http://www.soyatec.com/euml2/com.soyatec.uml.doc/reverse/reverse/index.html


----------



## Jayman (29. Apr 2007)

Danke,
ich habe das ausgeführt und erhalte das:







-> mein Problem ist, dass ich nicht sehen kann was in zB Account() steht. wie kann ich 'alles' ausgeben?


----------



## Wildcard (29. Apr 2007)

Das ist mit Sicherheit eine Einstellungssache.
Wahrscheinlich werden die Parameter versteckt.
Klick dich mal durch die Einstellungsmöglichkeiten oder lese dich in die Hilfe/Dokumentation ein.


----------



## Jayman (29. Apr 2007)

Hmm, alles auf englisch...
Naja, ich sehe ja etwas mehr jetzt. Z.B. die 2. Klasse Account, kann dann meines richtig sein:

+Account (in accountHolder: String, in openingBalance : double) : double

ich meine vor allem das Ende, mit dem Doppelpunkt double. Ist das korrekt, dass die Klasse ein 'double' liefert?


----------



## Wildcard (29. Apr 2007)

Nein, das ist ein Konstruktor.
Was wird dir denn da angezeigt?  ???:L


----------



## Jayman (29. Apr 2007)

Stimmt denn das in meinem ersten Beitrag?
Ich denke, wir werden den Umgang demnächst gezeigt bekommen mit der Eclipse-UML-Bedienung.


----------



## Wildcard (29. Apr 2007)

Nein, ist es nicht. Weder der Konstruktor, noch void Methoden liefern einen Rückgabewert.


----------



## Jayman (29. Apr 2007)

Ok,
das hilft mir.
Also,




Liefert es das?!

Account
---------

- runningTotal : double
- accountHolder : String

----------

+Account ()
+Account (in accountHolder: String, in openingBalance : double)
+getRunningTotal (): double
+deposit (in amount : double)
+debit (in amount : double)
+getAccountHolder () : String
+setAccountHolder (in accountHolder : String)

Sieht schon besser aus, hoffe ich.


----------



## Wildcard (29. Apr 2007)

Ja, das sieht besser aus.


----------



## Jayman (29. Apr 2007)

Heißt besser jetzt ok?!


----------



## Wildcard (29. Apr 2007)

Ja. Auch wenn ich nicht weiß warum du vor jeden Parameter 'in' scheibst.


----------



## Jayman (29. Apr 2007)

Das stand in einem Beispiel.

Dann sollen wir auch noch zu dem folgenden Code ein UML-Objektdiagramm malen:


```
public class AccountApplication {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Account account = new Account("Hans Mustermann", 300.05);
		account.debit(100.00);
		account.deposit(200.00);

	}

}
```

Da schwimme ich.

Es müsste ja lauten:

AccountApplication
---------------------
+main(...)

-> wie soll ich die Klammer ausfüllen?!


----------



## Wildcard (29. Apr 2007)

args : String[]


----------



## Jayman (29. Apr 2007)

Ist das dann alles für ein UML-Objektdiagramm?!


----------



## Wildcard (29. Apr 2007)

Objektdiagramm? Soll das kein Klassendiagramm werden?  ???:L


----------



## Jayman (29. Apr 2007)

Also, das habe ich als Beispiel bei einer Aufgabe, die umgekehrt zu lösen ist:





Zu meiner Aufgabe mit dem Code wollen sie:
Zeichnen Sie für folgenden Code ein UML 2.0 Objektdiagramm, welches den Zustand des Objektes
account nach Zeile7 wiedergibt.
Wird so ähnlich aussehen...

account : AccountApplication
--------------------------------

// Hier schwimme ich :autsch:


----------



## Wildcard (29. Apr 2007)

Also ein Objektdiagramm ist etwas anderes.
Du hast nur von UML 2.0 geredet und die meisten meinen damit ein Klassendiagramm.
Da musst du nochmal ran.


----------



## Jayman (29. Apr 2007)

Ja, die eine Aufgabe war ein ´Klassendiagramm & die andere eben ein Objektdiagramm.
Gut, danke bislang werde mich daran versuchen.


----------



## Jayman (29. Apr 2007)

Womit ich am meisten meine Probleme habe kann ich viell an dem gegebenen 'Beispiel' erläutern:





also:
Klasse ist ja SquareApplication, aber dann existiert ein Objekt der Klasse Square. (das ist ja das kleine square), aber weshalb sind es auf einmal 2 Klassen?!


----------



## Wildcard (29. Apr 2007)

Du sollst den Code schreiben der ein Objekt von Square erzeugt das zum Objektdiagramm passt.
Die Klasse Square ist vermutlich irgendwo gegeben?


----------



## Jayman (29. Apr 2007)

OK,
ich meinte das auch in Bezug auf meine Aufgabe:
Zeichnen Sie für folgenden Code ein UML 2.0 Objektdiagramm, welches den Zustand des Objektes 
account nach Zeile7 wiedergibt.



```
public class AccountApplication { 


   public static void main(String[] args) { 
      Account account = new Account("Hans Mustermann", 300.05); 
      account.debit(100.00); 
      account.deposit(200.00); 

   } 

}
```

Also:
account ist das Objekt.
Die Klasse ist AccountApplication.
Aber was ist dann das Account (Anfangsbuchstabe groß)?


----------



## Wildcard (29. Apr 2007)

[quoteJ
Also:
account ist das Objekt.
Die Klasse ist AccountApplication.
Aber was ist dann das Account (Anfangsbuchstabe groß)?[/quote]
Der Typ von account.


----------



## Jayman (29. Apr 2007)

Gut,
müsste es dann so aussehen:

account : AccountApplication
---------------------------
????
debit : double = 100.00
deposit : double = 200.00


für mein UML-Objekdiagramm?
Über die Fragezeichen muss ich noch denken.


----------



## Wildcard (29. Apr 2007)

nein:
account: Account


----------



## Jayman (29. Apr 2007)

also auch?!
account : Account 
--------------------------- 
???? 
debit : Account = 100.00 
deposit : Account = 200.00

oder bleibt es beim double?!


----------



## SnooP (30. Apr 2007)

"Nein es stimmt nicht kurz gesagt - eine Klasse hat kein Rückgabetyp, wie auch... ein Objekt besitzt immer einen konkreten Zustand - da muss dann nix mehr zurückgegeben werden... normale Methoden besitzen Rückgabetypen, Konstruktoren sind noch nicht einmal implizit void, sie erzeugen ja mehr oder weniger ein Objekt der Klasse mittels new-Operator, daher wird bei uml dort auch nix angegeben mit :"

edit:
oh mann... ich hab etwas gelagged  - sorry...


----------



## SnooP (30. Apr 2007)

Du hast da zwei Klassen - einmal AccountApplication und Account. Account ist das interessantere - in der Application wird nur ein Account-Objekt erstellt und darauf zugegriffen. Dementsprechend sind die Methoden von Account so wie von dir angegeben - ob sie allerdings was zurückgeben, kann man in dem Beispiel gar nicht sehen.
In dem Objektdiagramm malt man aber eigentlich auch anders als im Klassendiagramm nicht die Methoden der Klasse... die Methoden gehören ja halt der Klasse und kennzeichnen nicht den Zustand eines beliebigen Objekts dieser Klasse... wenn du die Methoden debit und deposit aufrufst, dann kannst du im Prinzip nur raten und behaupten, dass ein Feld namens amount nach den Methodenaufrufen auf 400.05 steht. Es sei denn, du hast den Code für die Methoden auch vor dir liegen.


----------



## Jayman (30. Apr 2007)

Nein, wie gesagt ich habe nur das gegeben:

Zeichnen Sie für folgenden Code ein UML 2.0 Objektdiagramm, welches den Zustand des Objektes 
account nach Zeile7 wiedergibt.



```
public class AccountApplication { 


   public static void main(String[] args) { 
      Account account = new Account("Hans Mustermann", 300.05); 
      account.debit(100.00); 
      account.deposit(200.00); 

   } 

}
```

mehr nicht.
Wie sieht dann das Objektdiagramm aus?


----------



## SnooP (30. Apr 2007)

Naja du kannst nur Aussagen über den Zustand von Account machen und eigentlich nur raten, weil du die Implementierung von debit und deposit nicht kennst - daher evtl. so:

account : Account
---------------------
name = "Hans Mustermann"
amount = 400.05


Ich glaub die Angabe des jeweiligen Typs im OD ist optional...


----------



## Jayman (30. Apr 2007)

Dankeschön!
Zum Glück ist es aber nur eine 1-Punkt-Aufgabe...


----------

