Форум Сообщества Аналитиков

Общий раздел => Теория моделирования и нотации => UML SysML и пр. => Тема начата: azallay от 14 Октября 2009, 10:37:50

Название: Как описать JSON-нотацию в UML
Отправлено: azallay от 14 Октября 2009, 10:37:50
Мне в проектируемой системе нужно использовать JSON-объекты (используются в JavaScript). Это такие объекты, в которых имена атрибутов и их количество заранее не известны. Их может быть от 0 до *
Каждый атрибут может быть любого типа, в т.ч. JSON-объектом.
Например,

car = {
   color : "white",
   engine : {
      type : "1G",
      kolichestvo_cilindrov : 6
   },
   kolichestvo_sideniy : 4
}


в такой объект в любой момент времени исполнения я могу добавить атрибут с любым именем. Напимер

car["name"] = "Машина"; и объект станет таким:

car = {
   color : "white",
   engine : {
      type : "1G",
      kolichestvo_cilindrov : 6
   },
   kolichestvo_sideniy : 4,
   name : "Машина"
}


Как подобный динамический объект описать с помощью UML? Может быть использовать какие-то шаблоны или метаклассы  ???
Название: Re: Как описать JSON-нотацию в UML
Отправлено: bas от 14 Октября 2009, 11:41:57
ИМХО это можно только стереотипом у класса обозначить, т.е. класс со стереотипом <<JSON>>.
Название: Re: Как описать JSON-нотацию в UML
Отправлено: Galogen от 14 Октября 2009, 11:55:46
Боюсь, это чисто аспекты реализации. Поскольку Вы можете добавлять нужные артибуты в желаемое время, то как можно отобразить в UML не существующий еще атрибут, я не представляю

Указание стереотипа тоже мало, что дает на мой взгляд
Название: Re: Как описать JSON-нотацию в UML
Отправлено: azallay от 15 Октября 2009, 18:37:29
Вобщем копался в документации и пришел к выводу что можно сделать так (диаграмма во вложении):
Вся фишка в использовании структурного класса.
1) В  структурном классе вместо обычного атрибута указываем часть (вложенный прямоугольник),
2) задаем для этой части множественность *, что означает возможность наличия от 0 до бесконечности экземпляров этой части в экземпляре класса
3) задаем множество возможных дескрипторов (типов) для этой части
4) оставляем имя части незаполненным.

 8)
Все, неже приведен возможный экземпляр этого класса. Добавление новых атрибутов к объекту отображается, при необходимости, на динамических диаграммах.

Такая диаграмма не должна быть противоречимой, все делал по стандарту