Любые инструменты UML для Scala

Существуют ли какие-либо инструменты UML для Scala. причина моего вопроса заключается в том, что его сочетание функциональных и OO-концепций, следовательно, я хотел бы знать, как такие инструменты обозначают функции в диаграммах UML.

Ответы

Ответ 1

Этот поток описывает препятствия, с которыми сталкивается любой инструмент UML, желающий представлять классы Scala:

  • нет официального представления mixins в UML
  • Трудно представить:
    • закрытиеЭлементы
    • Scala
    • шаблон параметров конструктора класса (шаблон a.k.a.) тип "ограничения/ограничения)
    • ковариантное и контравариантное наследование конструктора классов
    • взаимосвязь между классом или признаком и объект-компаньон

Этот тезис ( " Evaluierung des Einsatzes von Scala bei der Entwicklung für die Android-Plattform", pdf, немецкий) добавляет стереотипы для основных миксинов и другие элементы Scala (стр. 146).

Что было добавлено Meiko Rachimow в 2009 году:

атрибуты, getter и setter

Scala attributes

Для всех опубликованных атрибутов существует неявный getter (attribute1 и attribute2), за исключением того, что видимость была объявлена ​​как private (attribute3). Если опубликованные атрибуты отмечены стереотипом Var, они являются переменными, для которых существует неявный сеттер (attribute2). Стереотип lazy отмечает переменные экземпляра как ленивые (attribute4).

классы и дженерики

Scala class and genericity

Как и в UML, общие классы помечены абстрактным типом. Используя синтаксис языка Scala, для этого типа могут быть объявлены верхняя и нижняя границы (EineKlasse). В качестве границ можно использовать структурированные типы, атрибуты и методы которых охватываются фигурными фигурными скобками (EineKlasse2). Общие параметры методов охватываются квадратными скобками (operation).

черты

Scala traits in UML

Черты отображаются как абстрактные классы и помечены стереотипом trait. Абстрактные атрибуты и методы отображаются курсивом (attribute2, operation2). Для абстрактных атрибутов стрелка зависимости может быть помечена стереотипом requires (Trait3, attribute3). С другой стороны, стереотип self используется для типов саморегуляции (Trait4). Если признак наследует другой признак, наследование отображается со стрелкой наследования (Trait2). Этот тип стрелки также используется, если класс расширяет черту (Klasse). Чтобы подчеркнуть "смешивание" признаков, стрелка наследования может быть помечена стереотипом mixin (Klasse).

объекты singleton

Scala singleton in UML

Объекты Singleton отображаются как классы и помечены стереотипом singleton. Возможно, что существуют два элемента класса с тем же именем. На самом деле это одноэлементный объект с принадлежащим ему классом компаньонов. В этом случае стрелка зависимости помечена стереотипом hasA.

Ответ 2

Вы можете попробовать (экспериментальный) Dia2Scala инструмент. Notation, используемый этим генератором кода, основан на записи из тезисов Meiko Rachimow (описанных в ответ от VonC).

Ответ 3

Только что протестировал плагин Green UML Eclipse. Несколько месяцев назад это не сработало, но с ночной версией Scala IDE, ноябрь 2012) вы можете получить диаграмму классов. Выглядит перспективно.

Ответ 4

Инструмент, который я использую, такой же для Java, UML-диаграмма (классы или зависимости) в Intellij, однако она доступна только для "конечных" пользователей

https://www.jetbrains.com/help/idea/class-diagram.html