2017-11-26 1 views
4

Ich muss Java-Klassen basierend auf dieser UML diagram erstellen. Das Problem ist, dass ich nicht weiß, was die Beziehung innerhalb der roten Form ist. Ich habe alle anderen Beziehungen zwischen den A, B, C, D Klassen gemacht, aber dieses kann ich nicht verstehen.Erstellen Sie Java-Klassen aus UML-Diagramm

Kann mir jemand einen Tipp geben?

Bisher habe ich:

class A extends B 

class D extends C 

class C 
List<B> bElement; 

class D 
List<A> aElement; 

Dank.

enter image description here

+0

Sind Sie sicher, ob es sich um eine gültige UML handelt? – Vanguard

+0

Es scheint mit einem UML-Tool erstellt zu werden. Das Bild hier ist etwas modifiziert. Also, ich denke, es ist ein gültiger. –

Antwort

4

Dies bedeutet, dass der untere Verband von der oberen erbt. Genauso wie die unteren Klassen von den oberen Klassen erben.

Das Konzept der Konnektorvererbung wurde erst in einer neueren UML-Version eingeführt (gemäß der Antwort von Henriette ab 2.0). Jedenfalls ist weder die niedrigere Assoziation noch ihre Verallgemeinerung tatsächlich notwendig, da sie mit den beiden Verallgemeinerungen ohnehin vererbt wird.

Persönlich habe ich keine gute Verwendung für dieses Konzept gefunden, aber kenne Leute, die es benutzen (sie arbeiten auf sehr hohen Abstraktionsniveaus in der Ontologie).

P.S. Es gibt nicht viel zu lesen über das Konzept in den Spezifikationen außer p. 692:

Generalisierung Pfeile zwischen Assoziationslinien werden als UMLEdges mit Verallgemeinerungen als Modellelemente untereinander ausgetauscht, und die Quellen und Zielen, die mit UMLEdges Associations (einschließlich AssociationClasses als Linien dargestellt) als Modellelemente sind.

+0

Also, das bedeutet, dass es nur für die "Diagramm Schönheit" verwendet wird? Nichts hinzuzufügen zu Java-Klassen, um diese Beziehung zu übersetzen? –

+0

In diesem Fall ist es wahrscheinlich nur "Teil der Lektion" und Sie können es für eine Implementierung ignorieren. Wie gesagt, ich suche immer noch nach einer sinnvollen Anwendung dieses Konzepts. –

+0

Vielen Dank für die Erklärung. –

3

Vereinigung Vererbung in UML 2.0 im Jahr 2005 eingeführt wurde Obwohl UML wahrscheinlich am häufigsten in der objektorientierten Analyse und Design verwendet wird, ist es am Sein eine Allzweck Modellierungssprache richtet. Daher enthält es Funktionen wie Mehrfachvererbung, Attributspezialisierung/Verfeinerung und Assoziationsvererbung, die in Programmiersprachen nicht unbedingt unterstützt wird. In Ontologiesprachen wie OWL 2 können diese Begriffe jedoch natürlich ausgedrückt werden.

Für einige andere Zwecke habe ich eine Writ-up w.r.t. Assoziationsvererbung und äquivalente UML-Repräsentationen, die ich hier zur Verfügung stelle, falls sie für andere hilfreich ist.

Association inheritance equivalent representations

In Bezug auf Assoziationen und Attribute der UML-Spezifikation drei eng verwandte Begriffe nämlich association specialization, subsetting und redefinition definiert. Assoziationsspezialisierung wird auf der Ebene der vollständigen Assoziation angewendet, während Subset- und Neudefinition auf der Ebene von Assoziationsenden und Attributen angewendet werden.

Die Bedeutung der Assoziationsspezialisierung ähnelt der von Klassen. Das heißt, die Assoziation A2 ist eine Spezialisierung der Assoziation A1 in Figur (a). Daher ist jede Verbindung zwischen Instanzen der Klassen C3 und C4 notwendigerweise eine Verbindung zwischen Instanzen der Klassen C1 und C2.Jede Verknüpfung zwischen Instanzen der Klassen C1 und C2 ist jedoch nicht unbedingt eine Verknüpfung zwischen Instanzen der Klassen C3 und .

Aufgrund C3/C4 spezialisiert C1/C2 in Abbildung (a), so folgt daraus, dass alle Verbindungen zwischen C1 und C2 werden von C3 und C4 vererbt werden. Darüber hinaus sind alle ererbten Assoziationen zwischen C3 und C4 notwendigerweise Teilmengen der Assoziationen zwischen C1 und C2. Abbildung (a) geht jedoch weiter als das: nicht nur ist die Assoziation A1 geerbt von C3 und C4, es führt auch eine neue Assoziation A2. Da A2 eine neue Assoziation ist, kann ohne die Assoziationsspezialisierung nichts darüber abgeleitet werden, wie sich A1 auf A2 bezieht. Daher ist in Abbildung (a) der Zweck der Assoziationsvererbung, eine neue Assoziation A2 einzuführen und anzugeben, wie sie sich auf die bestehende Assoziation bezieht A1.

In Abbildung (b) ist angegeben, dass c4 {subsets c2}. Dies bedeutet, dass die Sammlung von Instanzen, die durch die Assoziationsstelle c4 repräsentiert wird, eine Teilmenge der Sammlung von Instanzen ist, die durch das Assoziationsende c2 dargestellt werden. Dasselbe gilt für die Assoziationsenden c3 und c1. Subsetting unterscheidet sich von Association Spezialisierung in dieser Teilmenge berücksichtigt Set-Mitgliedschaft nur, während Association Spezialisierung spezialisiert die Merkmale, die Link-Mitgliedschaft bestimmen.

Neudefinition wird verwendet, um die Definition eines Features zu ändern. Als ein Beispiel definiert die Assoziationsstelle c4c2 in Abbildung (c) neu. Die Neudefinition unterscheidet sich von der Assoziationsspezialisierung dadurch, dass die Neudefinition für ein Assoziationsende und nicht für die vollständige Assoziation definiert ist.

Obwohl die ursprüngliche Frage die Assoziationsvererbung in Vererbungshierarchien betrifft, kann es aufschlussreich sein zu beachten, dass Assoziationsvererbung auch in Abwesenheit von Vererbungshierarchien verwendet werden kann. In Abbildung (d) ist die gesamte Frau, von der ein Mann geschieden wurde, eine Untergruppe der Frauen, mit denen er verheiratet war.

enter image description here

In den Figuren (a) und (d) die Assoziationen sind Bürger erster Klasse des Modells. Sie können daher durch Assoziationsklassen (A1/A2 und MarriedTo/DivorceFrom) mit einer Vererbungsbeziehung zwischen den jeweiligen Assoziationsklassen repräsentiert werden, obwohl die Verwendung der Assoziationsspezialisierung kürzer Ihre Absicht angeben kann, Vereinigungen als Spezialisierung zwischen Assoziationsklassen zu spezialisieren.

Zusammenfassend: Die Spezialisierung einer Assoziation ist äquivalent zu der Teilmenge von (einem von) ihren Enden und die Neudefinition kann als ein Unterkonzept der Teilmenge behandelt werden.

+0

Obwohl ich einen Grund habe, welche Teilmenge/redef verwendet werden kann, bin ich immer noch verloren, warum man (a) braucht. Erbt C3/4 nicht die Assoziation von C1/2, wenn Sie es so verallgemeinern? Oder wäge ich Stecker anders und baue sie zu Bürgern zweiter Klasse? –

+0

Vielen Dank für Ihren Kommentar @ThomasKilian. Sie machen einen guten Punkt gegenüber Anschlüssen als 1. gegen 2. Klasse Bürger. Ich habe meine Antwort aktualisiert, um Ihre Kommentare zu berücksichtigen. –

+0

Vielen Dank für die ausführliche Erklärung. Ich kann jetzt ein bisschen klarer sehen. Es gibt mehr Fragen, aber diese würden diesen Kommentarabschnitt sprengen und ich werde sie schließlich als neue Fragen stellen. Ich würde deine Antwort mehr als einmal auffrischen, wenn das möglich wäre :-) –

Verwandte Themen