FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Praktische Informatik (HS)

Hilfe bei Klassendiagramm

Hilfe bei Klassendiagramm 2006-01-30 23:37
Anonymer User
hallo,

sagt mal, ich muss ein Klassendiagramm erstellen. was füge ich unter die Klasse ein, wenn da steht

private final Map<Buch, Bewertungsliste> buch2blist = new HashMap();

und bei private final List<BuchBewertung> _list=new ArrayList() ??

und kann es sein, dass bei eingen Diagrammen nur der Klassenname steht. (methoden habe ich ausgelassen)

vielen dank (für die hoffentliche schnelle) Hilfe ! ;)

gruß

(edit fal: Topictitel)

Re: Hilfe bei Klassendiagramm 2006-01-30 23:55
Tzwoenn
Instanzvariablen gehören doch auch dazu. gehören über den Block mit den Methoden.

Sieht in etwa so aus: http://www.altova.com/de/features_class_diagram.html

An die genaue Notation kann ich mich aber auch nicht erinnern.

Re: Hilfe bei Klassendiagramm 2006-01-31 13:11
Anonymer User

sonst kann niemand was dazu sagen ? :(

ach kommt schon…

Re: Hilfe bei Klassendiagramm 2006-01-31 13:21
Anonymer User
ich muss ein Klassendiagramm erstellen.

Wofür? Klassendiagramme macht man zu einem bestimmten Zweck und dieser bestimmt sehr stark, was man in das Diagramm schreibt. Welche Klassen mit welchen Details. So würde ich die internen Strukturen der Klassen nicht angeben, wenn dies nicht nötig ist. Auch ob man solche Dinge wie die Sichtbarkeit und einen Initialwert für ein Attribut angibt, hängt davon ab, wozu man ein Diagramm erstellt.

Verwendest Du ein bestimmtes Werkzeug zur Erstellung der Diagramme?

kann es sein, dass bei eingen Diagrammen nur der Klassenname steht.
Ja, z.B. weil man gerade nur die grobe Klassenstruktur ohne Methoden und Attribute zeigen will?

LEIFer

Re: Hilfe bei Klassendiagramm 2006-01-31 13:30
Anonymer User
wir sollten in STE klassendiagramme für das bibliothekssystem erstellen. und nun fehlt mir eigentlich nur noch die beiden.

also in der implementierung steht

private final Map<Buch, Bewertungsliste> buch2blist = new HashMap();

und bei andereren
private final List<BuchBewertung> _list=new ArrayList() ??

um diese in das klassendiagramm einzufügen, muss ich was hinschreiben?

etwas chaotisch vielleicht sorry….

Re: Hilfe bei Klassendiagramm 2006-01-31 13:42
Fred
private final Map<Buch, Bewertungsliste> buch2blist = new HashMap();
Das sieht aber nicht besonders typsicher aus…

Ich würde von dieser Klasse einfach zwei "Benutzt"-Pfeile zu den Klassen Buch und Bewertungsliste zeichnen (damit ist der Zusammenhang zwischen den Klassen hergestellt). Wenn Du die Exemplarvariable unbedingt hinschreiben willst, dann mach das doch einfach… Typ und Name weisst Du ja.

Re: Hilfe bei Klassendiagramm 2006-01-31 15:00
Brokkoli
Typsicherheit ist sowieso nicht gegeben…
HashSet<Integer> s1 = new HashSet<Integer>(); s1.add(2); s1.add(3); HashSet s2 = s1; HashSet<String> s3 = s2; s3.add("huhu"); Iterator it = s1.iterator(); while(it.hasNext()) System.out.println(it.next());
gibt nichtmal einen fehler beim ausführen…
Iterator<Integer> it = s1.iterator(); while(it.hasNext()) System.out.println(it.next());gibt erst beim Iterator einen Fehler (ClassCastException)
also irgendwie scheinen die Templates so gut wie garnichts zu bringen… - Zumindest keine Typsicherheit. Man spart nur einige explizite Casts

Re: Hilfe bei Klassendiagramm 2006-01-31 15:13
Slater
wieso so umständlich mit den drei HashSets?
kann man in das HashSet<Integer> nicht direkt einen String einfügen?
wenn nein dann ist das doch immerhin ein bisschen Typsicherheit (als Programmierhilfe)

dass man das mit dieser Spezialkonstruktion aushebeln kann klingt für mich zumindest wenig relevant

Re: Hilfe bei Klassendiagramm 2006-01-31 15:30
Brokkoli
es ist ein hashset. nur über 3 variablen zugreifbar (mit 2 wäre es auch möglich)

ei diesem Beispiel ists klar, dass man sowasn icht machen sollte, aber es ist ja z.b. möglich, dass es eine methode gibt, die ein HashSet<Blabla> nur als HashSet zurückgibt. Da kann man dann alles einfügen, ohne den Fehler zu bemerken. Der Fehler tritt erst beim Auslesen auf.
Und Typsicherheit wäre es doch nur, wenn der Fehler direkt beim Einfügen von Objekten (oder noch besser beim Cast von HashSet<Integer> auf HashSet<String> auftritt.)

kann man in das HashSet<Integer> nicht direkt einen String einfügen?
nein kann man nicht. und klar ein wenig programmierhilfe ists schon - aber typsicherheit eher nicht…

Re: Hilfe bei Klassendiagramm 2006-01-31 16:04
Anonymer User
Ja, die Java-Generics sind nicht das gelbe vom Ei, keine Frage. Das liegt auch an der Umsetzung mittels "type erasure", weswegen zur Laufzeit keine Information mehr darüber vorliegen, mit welchen Typen das Exemplar einer Klasse parametriesiert wurden. Bruce Eckel hat sich in seinem Blog damit auch sehr kritisch auseinandergesetzt und auch sonst findet man dazu viel im Web.

In Deinem Codeblock sollte allerdings auch eine Warnung kommen dass die Zuweisung gefährlich ist (oder hast Du die Warnung ausgeschaltet?). Und wenn man anfängt parametrisierte Typen zu benutzen und sich auf diese verlassen will, so sollte man sich im klaren sein, dass es gefährlich ist, wieder auf einen unparametriesierten Typen zurückzufallen. Dir wird auch klar sein, dass man sich mit solchem Code selber ins Knie schießt, selbst wenn es erst zur Laufzeit passiert und zwischen diesen Zeilen etliche Methodenaufrufen liegen mögen:
String[] s = new String[1[b][/b]]; Object[] o = s; Integer[] i = (Integer[]) o;Ein deutlicher Unterschied ist natürlich, das man hier den Fehler zur Laufzeit schon bei der Zuweisung erhält (was bei generics wegen type erasure nicht geht) und nicht erst, wenn man etwas falsch in die Collection gestopft hat und dieses dann später verwenden will.

LEIFer