[UML] Assoziation mit mehreren Rollennamen

Design Patterns, Erklärungen zu Algorithmen, Optimierung, Softwarearchitektur
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Antworten
reddox
Beiträge: 3
Registriert: 18.03.2003, 22:44
Kontaktdaten:

[UML] Assoziation mit mehreren Rollennamen

Beitrag von reddox »

...ist sowas in UML möglich, wenn ja, wie?

Um das Problem mal zu verdeutlichen, hier ein simples, aus der vereinfachten Sicht schon fast sinnloses Beispiel:

Code: Alles auswählen

public class Param {
	public int position;
	public int dataTypeID;
	public int value;
	public Service itsService;
}

public class Service {
	public List<Param> requestParams;
	public List<Param> responseParams;
}
Nun möchte ich dieses Stück Code und passende Accessoren von Rhapsody erzeugen lassen (navigierbar jeweils in beide Richtungen). Dazu müsste ich diese Beziehung erst einmal modellieren. Nun weiss ich aber nicht wie und ob das überhaupt geht - dazu müsste ein Assoziationsende 2 verschiedene Rollennamen haben - oder gibt es eine andere Möglichkeit?

Die einzige die mir einfällt wäre es, dies wie folgt zu gestalten:

Code: Alles auswählen

public class Param {
	public int position;
	public int dataTypeID;
	public int value;
}

public class RqParam extends Param {
	public Service itsService;
}

public class RspParam extends Param {
	public Service itsService;
}

public class Service {
	public List<RqParam> requestParams;
	public List<RspParam> responseParams;
}
Aber so richtg befriedigen will mich diese Lösung auch nicht.

Kennt jemand eine bessere Lösung?

Edit: Codebeispiele etwas angepasst um das eigentliche Problem etwas mehr zu verdeutlichen (ein Assoziatsende 1 Rollenname, das andere 2 verschiedene Rollennamen)
Zuletzt geändert von reddox am 19.08.2011, 07:19, insgesamt 1-mal geändert.
LaBerg
Beiträge: 22
Registriert: 09.05.2002, 22:53

Re: [UML] Assoziation mit mehreren Rollennamen

Beitrag von LaBerg »

Hmm also das Tool das du verwendest kenn ich nicht. Da kann ich dir nicht helfen, wie man das dort dann einpflegt.
Bezüglich der Modellierung ist es in UML jedoch so, dass es mehrer Assoziationen zwischen den selben Klassen geben kann. Das sind dann eben einfach zwei Linien zwischen den selben Klassen. Die können dann auch unterschiedliche Multiplizitäten haben. Kommt vom Prinzip her auch recht häufig vor.
Da ich zu Faul zum Malen bin verweise ich mal hier drauf: http://de.wikipedia.org/wiki/Assoziation_%28UML%29
Am Ende des Abschnitts "Assoziationsenden" sieht man wie das im Diagramm aussieht.

Ich hoffe das beantwortet deine Frage und ich habe sie nicht völlig falsch verstanden.
reddox
Beiträge: 3
Registriert: 18.03.2003, 22:44
Kontaktdaten:

Re: [UML] Assoziation mit mehreren Rollennamen

Beitrag von reddox »

Im Prinzip hast du mich richtig verstanden. Allerdings hab ich mich hier vllt etwas unklar ausgedrückt.
Das Problem daran 2 Assoziationen zu nutzen ist, dass ich gerne das Assoziationsende von Param auf Service nur einmal möchte (im angehängtem Beispiel: itsService)
2 Mal den gleichen Rollennamen (wie im Beispiel angedeutet) nehmen geht nicht, da dann die Zugriffsfunktionen und Attributname doppelt vorhanden wären, was der Codegenerator nicht mag.

Ich sehe hier momentan nur 2 Lösungen:
- das Assoziationsende itsService nicht navigierbar gestalten und händisch implementieren (was allerdings den Dokumentationswert des UML Diagramms vermindert)
- die bereits erwähnten Wrapperklassen (was mich aber in späterer Instanz mit zusätzlichem Typecasts belasten wird...)
problem.png
problem.png (4.55 KiB) 2145 mal betrachtet
LaBerg
Beiträge: 22
Registriert: 09.05.2002, 22:53

Re: [UML] Assoziation mit mehreren Rollennamen

Beitrag von LaBerg »

Achso du willst im Prinzip für die Navigation der Richtung Param ---> Service immer den gleichen Namen verwenden. Unabhängig davon ob Request oder Response.
Ich würde in dem Fall die beiden Assoziationen Service ---> Param nur in diese Richtung navigierbar machen und eine weitere hinzufügen. Die dann in die Richtung Param ---> Service navigierbar ist.
Ich habe es einfach mal in deine Vorlage mit reingeschmiert, wie ich es denke:
problem.png
problem.png (6.26 KiB) 2109 mal betrachtet
reddox
Beiträge: 3
Registriert: 18.03.2003, 22:44
Kontaktdaten:

Re: [UML] Assoziation mit mehreren Rollennamen

Beitrag von reddox »

Klar, darauf hätte ich auch kommen können, danke ;-) Irgendwie war ich zu sehr auf beidseitige Assoziationen fixiert...
Antworten