Представление универсального метода C # в диаграмме классов UML - PullRequest
9 голосов
/ 17 января 2010

У меня есть следующий интерфейс:

public interface IRegisterable
{
   T Register<T>(string username, string passw) where T : User, ICanLogin, new();
}

User - абстрактный класс, а ICanLogin - другой интерфейс.

Теперь я хочу представить вышеуказанный интерфейс с его методом на диаграмме классов UML в Visio.

Как я могу представить вышеуказанный универсальный метод с его ограничениями в диаграмме классов?

Ответы [ 3 ]

5 голосов
/ 17 января 2010

Универсальный класс - это шаблонный класс в UML см. Как правильно представлять классы шаблонов с помощью UML?

Так что вы не можете использовать свой параметризованный класс в Visio http://etutorials.org/Programming/UML/Chapter+6.+Class+Diagrams+Advanced+Concepts/Parameterized+Class/

3 голосов
/ 18 января 2010

UML не поддерживает параметрические методы типа напрямую.

Самое близкое, что вы получите, - это определить вложенный класс, который имеет ограничения типов со стереотипом, который вы будете интерпретировать как означающий, что это параметр типа, и определить операцию Register в этом отношении.

+---------------------------------------------------+
|                   «interface»                     |
|                  IRegisterable                    |
+---------------------------------------------------+
| + Register (string username, string passw) : T    |
+---------------------------------------------------+

    +---------------+           +---------------+
    |  «abstract»   |           |  «interface»  |
    |     User      |           |   ICanLogin   |
    +---------------+           +---------------+
            .                           .
           /_\                         /_\
            |                           .
            +-----------+   .............
                        |   .
                +-------------------+              
                |  «typeParameter»  |
                | IRegisterable::T  |
                +-------------------+           
                | + new()           |
                +-------------------+           

    note: T is a nested class within IRegisterable
1 голос
/ 27 декабря 2010

UML DOES поддерживает параметрические типы (можно параметризовать и другие вещи, и другие вещи, кроме типов, также можно использовать в качестве параметров).

...