2016-07-31 25 views
0

Ich erstelle eine Darstellung von Java-Projekten in Ruby, um einige Metriken zu berechnen. Ich erstelle Ruby-Klassen für die in Java verfügbaren Sprachelemente (, JavaInterface, JavaMethod usw.). Ich zeichne ein UML-Klassendiagramm der Ruby-Klassen und ihrer Beziehungen (JavaClass contains 0..* JavaMethods).UML-Klassendiagramm mit festem Wert im geerbten Feld

Ich weiß nicht, wie die folgenden in UML darstellen:

  • A JavaFile enthält genau einen MainClass den Namen mit dem sich JavaFile teilen.
  • Die MainClassJavaClass erstreckt, die ein Feld enthält 'visibility' des Typs Visibility, deren Wert 'public', 'protected', 'default' oder 'private' sein.

Obwohl JavaClass eine der vier Sichtbarkeitswerte aufweisen kann, wird die MainClass zu den Modifikatoren 'public' und 'default' beschränkt. Gibt es eine Möglichkeit, die Tatsache darzustellen, dass nur zwei der Visibility-Werte in der MainClass in UML gültig sind?

Antwort

0

Nicht wirklich. Sie fragen nach einer Kontextinformation Ihres Modells, die durch eine Meta-Constraint ausgedrückt werden kann. Dies muss dem Metamodell (Modellierungsregeln) Ihres Modells entsprechen und kann dazu verwendet werden, "etwas" in Ihrem Modellierungswerkzeug zu implementieren, um dieser Einschränkung zu folgen. Das "Etwas" könnte eine Integritätsprüfung sein, die regelmäßig ausgeführt wird, oder ein JIT-Code, um die Beschränkung zu überprüfen.

+0

Vielen Dank für die schnelle Antwort :) Ich werde dann die Einschränkungen als zusätzliche Informationen im UML-Diagramm hinzufügen. Ich denke, [OCL] (https://en.wikipedia.org/wiki/Object_Constraint_Language) wäre der richtige Weg, dies zu tun. – seiferms

0

Sie können eine spezialisierte Enumeration LimitedVisibility erstellen, bei der es sich um eine Spezialisierung der Sichtbarkeit handelt, die nur öffentliche und Standardwerte enthält. Da MainClass eine Spezialisierung von JavaClass ist, können Sie die Attributsichtbarkeit neu definieren und zeigen, dass sie mit LimitedVisibility typisiert ist.

Ihre Mainclass Sichtbarkeitsattribut wird so aussehen:

visibility:LimitedVisibility {redefines visibility} 

Die Semantik zeigt, dass die Funktion (zum Beispiel Attribute) redefinierbaren ist, ist in Figur 9.9 gezeigt. in der UML-Spezifikation (es ist eine Unterklasse von RedefinableElement) und Details dazu in Abbildung 9.10. Semantik wird in Abschnitt 9.5.3 beschrieben, Details zur Notation sind im Abschnitt 9.5.4 und Beispiel in 9.5.5, insbesondere in Abbildung 9.11, beschrieben.