software - cualquier herramienta UML para Scala
programa para hacer diagramas uml (3)
¿Hay alguna herramienta UML disponible para Scala? El motivo de mi pregunta es que es una combinación de conceptos funcionales y de OO, por lo que me gustaría saber cómo dichas herramientas denotan funciones en los diagramas UML.
Acabo de probar el plugin Green UML Eclipse . Hace algunos meses no funcionó, pero con la versión nocturna de Scala IDE en abril de 2012, puede obtener algún tipo de diagrama de clase. Parece prometedor.
Este thread resume los obstáculos que enfrenta cualquier herramienta UML que quiera representar las clases de Scala:
- No hay representación oficial de mixins en UML.
- Es difícil de representar:
- cierres
- Miembros tipo Scala
- límites del parámetro constructor de la clase (también conocidos como límites / restricciones de "tipo de plantilla")
- Herencia covariante y constructor de clase contravariante.
- La relación entre una clase o rasgo y el objeto compañero.
Esta tesis (" Evaluación de las pruebas de Scala de Entlatura de Entorno para Android-Plattform ", pdf, alemán) agrega estereotipos para mixins de rasgos y otros elementos específicos de scala (pp. 146).
Lo que fue agregado por Meiko Rachimow en 2009:
atributos, getter y setter
Para todos los atributos publicados, existe un captador implícito (
attribute1
yattribute2
), excepto que la visibilidad se declaróprivate
(attribute3
). Si los atributos publicados están etiquetados con un estereotipoVar
, son variables, para las cuales existe un establecedor implícito (attribute2
). El estereotipolazy
marca las variables de instancia como flojas (attribute4
).
clases y genéricos
Al igual que en UML, las clases genéricas están marcadas con un tipo abstracto. Al utilizar la sintaxis del lenguaje Scala, se pueden declarar los límites superior e inferior para este tipo (
EineKlasse
). Es posible usar tipos estructurados como límites, cuyos atributos y métodos se abrazan con llaves (EineKlasse2
). Los parámetros de tipo genérico de los métodos se incluyen entre corchetes (operation
).
rasgos
Los rasgos se muestran como clases abstractas y se etiquetan con el
trait
estereotipo. Los atributos y métodos abstractos se muestran en cursiva (attribute2
,operation2
). Para atributos abstractos, la flecha de dependencia puede etiquetarse con el estereotiporequires
(Trait3
,attribute3
). Por otro lado, elself
estereotipo se utiliza para los tipos deTrait4
(Trait4
). Si un rasgo hereda otro rasgo, la herencia se muestra con una flecha de herencia (Trait2
). Este tipo de flecha también se usa, si una clase extiende un rasgo (Klasse
). Para enfatizar la "mezcla" de rasgos, la flecha de herencia se puede etiquetar con la mezcla de estereotipos (Klasse
).
objetos singleton
Los objetos singleton se muestran como clases y se etiquetan con el estereotipo
singleton
. Es posible que existan dos elementos de clase con el mismo nombre. De hecho, es un objeto singleton con la clase compañera perteneciente. En este caso, la flecha de dependencia se etiqueta con el estereotipohasA
.