2016-05-09 8 views
0

Wie kann diese Situation in einem Klassendiagramm die elegantere (und professionellere) Art dargestellt werden (mit Erbschaften?)?UML-Modellierung - Wie wird eine Mehrwegevererbung in einem Klassendiagramm dargestellt?

Eine Schauspieler [Klasse] kann eine physische Person [Klasse] oder eine Unternehmen [Klasse], aber nicht beides.
Ein Schauspieler kann ein innerer Schauspieler sein [Klasse] ODER ein externer Schauspieler [Klasse], aber nicht beides.
Ein innerer Akteur kann eine physische Person ODER eine Firma sein, aber nicht beides.
Ein externer Akteur kann eine physische Person ODER eine Firma sein, aber nicht beides.

Natürlich hat jede dieser Klassen ihre spezifischen Attribute, Methoden und Beziehungen zu anderen Klassen im Diagramm.

+0

Kann die physische Person (und die Firma) etwas anderes sein als ein Schauspieler? – Xaelis

+0

@Oliver: Könnten Sie bitte Kommentare hinterlassen, wenn Sie nicht die Antworten gefunden haben, die Sie mögen? –

Antwort

0

hier eine elegante Weise ist darzustellen, was Sie mit den wenigsten Klassen in UML wollen: enter image description here

Aufgrund der {complete, disjoint} Zwänge erfordert dieses Modell eine Instanz zu sein, genau eine von Physical PersonoderCompany, während zur gleichen Zeit ist genau einer von Inner ActoroderExternal Actor. Die Instanzspezifikation unten zeigt, wie sie instanziiert wird.

UML kann dies ohne Probleme darstellen. Aber wie Sie es in eine Programmiersprache abbilden, ist eine andere Sache. (Und noch eine SO-Frage.) Viele Sprachen unterstützen keine Mehrfachklassifizierung von Instanzen, also musst du einen Vierkantstift in ein rundes Loch hämmern.

1

Wenn Sie nicht Multi-Vererbung nichts dagegen könnte man so etwas betrachten:

Multi-Inheritance

(. Der innere Schauspieler angezeigt Schlepptau mal das Diagramm zu vereinfachen, ist es die gleiche Klasse)

+0

Diese Antwort verfehlt die Anforderungen von "aber nicht beide" überall dort, wo diese Wörter vorkommen. Dafür brauchen Sie Überdeckungs- und Disjunktheitsaxiome. (Ie, {complete, disjoint}.) –

+0

Ja, genau. Jede Instanz kann eine physische Person oder eine Firma sein, aber nicht beides. Und jede Instanz könnte ein externer Akteur oder ein innerer Akteur sein, aber nicht beides. – Xaelis

+0

Dieses Modell ermöglicht die Erstellung einer "Company" -Instanz, die kein innerer oder äußerer Akteur ist. –

Verwandte Themen