# verbindungen Klassendiagramm?



## Guest (23. Mai 2007)

Hallo,

also ich habe mal eine Frage zu Klassendiagrammen.
Und zwar soll ich für eine Schnittstelle ein paar(ca. 30) Klassen schreiben. Die aber alle datenContainer sind(also nur konstruktur getter und setter methoden haben)
Die Klassen sind für eine schnittstelle bei der Daten8Objekte übers Netz geschickt werden. Für jede Anfrage sozusagen 2 Klassen eine welche die Request und eine welche die response Daten speichert.
Und ein Interface welche alle methoden mit Request und Response erhält.
Es gibt noch ein paar zusätzliche Klassen welche von mehrern Requste/Response Klassen verwendet werden.





So hier mal ein kleiner Ausschnitt, von einer Request und Response Klasse sowie einer verwendeten Klasse
Jetzt wollte ich halt wissen wie das mit den Verbindungen ist. Muss ich jedesmal wenn ich ein Attribut habe was als datentyp eine von mir definierte Klasse hat eine uses Vebingung machen oder eine assoziation. Und muss ich überhaupt jedesmal eine Verbindung machen weil es wiegesagt viele Klassen sind und z.b die Klasse User in vielen Klassen benötigt wird und ich es deswegen mit den ganzen Pfeilen ein bischen unübersichtlich finde. Und was mache ic mit meiner Interface Klasse. Die ja die anderen klassen nur als Methodenparameter hat 

Also z.b +printerState(printerStateRequest : PrinterStateRequest) : PrinterStateResponse 

Brauche ich da eine Verbuindung und wenn ja welche?


----------



## SnooP (23. Mai 2007)

Assoziationen (einfache Linien) - würde ich immer machen, sprich wenn du ein Attribut hast, was auf eine Klasse verweist welches irgendwie im Kontext deiner Anwendung liegt, sprich bei dir jetzt Printer...

uses (gestrichelte Linien mit Pfeil) - muss man nie machen... kann man aber dann machen, wenn z.B. eine Klasse innerhalb irgendeiner Methode eine andere Klasse benutzt, sprich bei dir per new Printer() aufruft und dann Methoden verwendet... dann ist die Beziehung zwischen den beiden indirekt...


----------



## Guest (23. Mai 2007)

Ok danke erstmal.

und was ist wenn eine methode als Parameter Parameter einer anderen klasse nutzt?


----------



## SnooP (27. Mai 2007)

das erste Parameter den Methodenparameter hab ich verstanden - das zweite Parameter nich  ...

Wenn du einen Methodenparameter meinst, der den Typ einer anderen Klasse deines Projekts hat, dann ist das "uses" - genau so wie wenn du per new in der Methode ein Objekt einer anderen Klasse erstellst... du hattest ja hier Printer erwähnt... wenn also die Methode heißt:
doSomeConfigurationWith(Printer myPrinter) - dann besteht zwischen der Klasse mit dieser Methode und der Printer-Klasse eine uses-Beziehung mit gestrichelter Linie... diese kann man aber wie gesagt immer weglassen, es sei denn man will genau das verdeutlichen  ...

Auch wenn du auf Attribute einer Klasse bzw. genauer  auf Attribute eines Objektes einer Klasse innerhalb der besagten Methode zugreifst, ist das ganze lediglich "uses"... eine durchgezogene Assoziationslinie entsteht immer nur dann, wenn eine Klasse direkt ein Attribut besitzt mit dem Typ einer anderen Klasse deines Projekts... sinnigerweise macht man bei Klassendiagrammen auch meist nur Beziehungen zwischen Klassen eines Packages deutlich... - über package-Grenzen hinweg würde ich erstmal nicht malen... Solche Beziehungen sollten auch nicht übermäßig oft auftreten - das riecht frei nach Fowler dann schon wieder schlecht


----------

