2016-05-11 1 views
9

Я хотел бы создать диаграмму UML с перечислениями Java (enum), которые имеют один или несколько атрибутов, но я смущен о том, как это сделать.Перечисление моделирования UML с атрибутами

Например перечисление может быть объявлен как это:

public enum Enumeration_type { 

    LITERAL_A("attr1_value", attr2_value, attr3_value), 
    LITERAL_B("attr1_value", attr2_value, attr3_value); 

    final String attr1; 
    final type_1 attr2 = initial_value_1; 
    final type_2 attr3; 

    Enumeration_type(String attr1, type_1 attr2, type_2 attr3) { 
     this.attr1_value = attr1; 
     this.attr2_value = attr2; 
     this.attr3_value = attr3; 
    } 
} 

без атрибутов, это легко:

+--------------------+ 
| <<enumeration> | 
| Enumeration_type | 
+--------------------+ 
| LITERAL_A   | 
| LITERAL_B   | 
+--------------------+ 

Но как смоделировать его с атрибутами элегантно? Должно быть так?

+-----------------------------------------------------+ 
| <<enumeration>>         | 
| Enumeration_type         | 
+-----------------------------------------------------+ 
| attr1: String          | 
| attr2: type_1 = initial_value_1     | 
| attr2: type_2          | 
+-----------------------------------------------------+ 
| LITERAL_A("attr1_value", attr2_value, attr3_value) | 
| LITERAL_B("attr1_value", attr2_value, attr3_value) | 
+-----------------------------------------------------+ 

я нашел только этот пример here, но использует класс строки атрибутов, имена перечислений. Я думаю, что это должно отличаться от использования public enum без указания типов данных имен перечислений.

+-----------------------------------------+ 
| <<enumeration>>      | 
|  CarType       | 
+-----------------------------------------+ 
| +sedan : String = SEDAN    | 
| +liftback : String = LIFTBACK   | 
| +stationWagon : String = STATION_WAGON | 
+-----------------------------------------+ 

Благодарим вас за ответы.

ответ

4

Я не думаю, что вы можете моделировать значения атрибутов для каждого из перечисляемых литералов в UML.
EA использует следующие обозначения для перечисления, который имеет атрибуты:

enter image description here

Вы можете либо документ значения атрибутов где-то в примечаниях каждого литерала, или вы можете использовать файл первенствовать или что-то подобное, чтобы управлять это данные.
Часто вы должны указать начальные значения во время разработки, поскольку они могут меняться во время выполнения. Поэтому не стоит использовать эти значения в своей модели, если вы не можете доверять им, чтобы они были правильными.

+0

Я думаю, что если конечные значения (константы), которые необходимы для строительства - по определению константы - перечисления, они будут как-то показаны на диаграмме классов. Но я доверяю твоему суждению об этом. Спасибо. – BBerry

-1

Вы можете использовать официальную документацию http://www.omg.org/spec/UML/2.5, чтобы описать свои классы формальным способом. В 11.4.4 разделе вы найдете несколько примеров, как это:

Example 1

+0

Я не вижу, что это перечисление с конечными атрибутами, которые автоматически используются в конструкторе enum для создания константы. Мой вопрос был весьма конкретным. – BBerry

 Смежные вопросы

  • Нет связанных вопросов^_^