visio generic-list user-defined-types

visio - Cómo especificar una lista<MyCustomType> como un "Tipo de devolución" para una propiedad de interfaz UML



generic-list user-defined-types (2)

En mi documento UML de Visio 2007 no puedo descubrir cómo puedo agregar una operación a una interfaz que devuelve un tipo genérico de List<MyCustomType> .

Por ejemplo:

Digamos que tengo una clase llamada "MyClass" y una interfaz llamada "IFace". IFace tiene una firma de un método que devuelve una lista genérica de MyClass.

Para mayor claridad, aquí hay un ejemplo del código C #:

namespace StackO { public interface IFace { List<MyClass> SomeMethod(string data); } public class MyClass { } }

Aquí hay una captura de pantalla de donde estoy atrapado:

Parece que la única forma de especificar una List<MyClass> como mi Tipo de Devolución es crear otro tipo de datos definido por el usuario que esté escrito explícitamente como List<MyClass> . Si este es el caso, que así sea. Sin embargo, estoy publicando esto con la esperanza de que haya una forma mejor / adecuada de hacerlo.

¿Cómo puedo definir el tipo de retorno de una operación de una interfaz de Visio como una lista genérica de un tipo de datos definido por el usuario?


En las propiedades del diagrama de Clase> Ir a operaciones> seleccione el tipo de retorno que le interesa cambiar y haga clic en Propiedades.

En el siguiente cuadro de diálogo, tendrá la opción de configurar la List< prefijos List< y el sufijo > .

De esta manera puede especificar el tipo de retorno como List<> .

Veo esta opción en Visio 2010. Pero no estoy seguro si esta opción está disponible en Visio 2007.


No hay tal cosa como T1<T2> en los diagramas de clase UML .

Si desea especificar que el método devuelve varios valores, la notación correcta es:

SomeMethod(data: String) : MyClass [*]

Esta notación es mucho más poderosa que la utilizada por C #. List<MyClass> SomeMethod(string data) no proporciona información sobre el contrato del método. Con UML, sabes que en:

SomeMethod(data: String) : MyClass [*] SomethingElse() : String [1..*] LastExample(number: UnlimitedNatural) : Integer [0..1]

SomeMethod devuelve una secuencia que contiene cero o más elementos. SomethingElse devuelve una secuencia de uno o varios elementos: esta secuencia nunca está vacía. Finalmente, LastExample devuelve un valor opcional. Esto podría expresarse en C # como int? LastExample(uint number) int? LastExample(uint number) : vea, no IEnumerable aquí.

También tenga en cuenta que:

SomeMethod(data: String) : MyClass [0..*]

no debe utilizarse, ya que [*] significa lo mismo y es más corto. Como para:

SomeMethod(data: String) : MyClass [0..n]

Es incorrecto, a pesar de ser utilizado mucho en internet.