Как я могу представить атрибут, который является многомерным массивом в UML? - PullRequest
0 голосов
/ 26 мая 2018

Я проектирую новый проект в UML, и мне нужен многомерный массив в качестве атрибута одного из моих классов (рисунок ниже)

Example of class with multidimensional array as attribute

RightТеперь я добавил Список, чтобы все поняли, какие у меня цели, но в стандартном UML это неверно.Что мне делать?

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Есть несколько способов сделать это, в зависимости от того, что вы хотите представить.Если вы хотите использовать шаблоны, то для этого есть синтаксис UML (пунктирная линия, перекрывающая верхний правый угол класса, позволяет вам представлять параметризацию шаблона).Таким образом, вы можете указать класс шаблона List таким образом, который затем можно параметризировать как тип для «действий» (в UML этот тип называется «связанным элементом»).Есть несколько способов представления связанных элементов, но UML допускает синтаксис c ++, используя Foo<T>, как у вас.Таким образом, что-то вроде actions: List<string>[0..*] будет означать несколько экземпляров атрибута 'actions', каждый из которых является List<string>.В качестве альтернативы вы можете указать действия так, как у вас есть actions: List<List<string>>, который является одним атрибутом «действий».Другим способом было бы определить обычный класс, который инкапсулирует структурную логику вашего массива, и напечатать «действия» с этим.Я не видел синтаксис типа actions: string[0..*][0..*], но я посмотрю его и выясню, поддерживает ли UML его.

0 голосов
/ 26 мая 2018

Это не противозаконно, хотя немного специфично для языка.Очевидно, это простой текст (поскольку в выражении есть лишние ")".Если вы хотите сделать этот язык независимым, вы можете создать его следующим образом:

enter image description here

Обратите внимание, что точка говорит, что роль является принадлежащим атрибутом в классена другой стороне.Поэтому я также вытащил conditions и связал его с String.

...