uso software programa para online mejores libre herramientas herramienta hacer elementos ejemplos diagramas diagrama clases casos scala uml

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 y attribute2 ), excepto que la visibilidad se declaró private ( attribute3 ). Si los atributos publicados están etiquetados con un estereotipo Var , son variables, para las cuales existe un establecedor implícito ( attribute2 ). El estereotipo lazy 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 estereotipo requires ( Trait3 , attribute3 ). Por otro lado, el self estereotipo se utiliza para los tipos de Trait4 ( 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 estereotipo hasA .


Podrías probar la herramienta Dia2Scala (experimental). Notation utilizada por este generador de código se basa en una notación de la tesis de Meiko Rachimow (descrita en la answer de VonC).