10

私は次のインターフェースを持っています:

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

Userは抽象クラスであり、ICanLogin別のインターフェースです。

ここで、VisioのUMLクラス図で、上記のインターフェイスをそのメソッドで表現したいと思います。

上記のジェネリックメソッドをクラス図で制約付きで表すにはどうすればよいですか?

4

3 に答える 3

7

ジェネリッククラスはUMLのテンプレートクラスです。UMLでテンプレートクラスを表す正しい方法は何ですか?を参照してください。

したがって、Visioでパラメータ化されたクラスを使用することはできませんhttp://etutorials.org/Programming/UML/Chapter+6.+Class+Diagrams+Advanced+Concepts/Parameterized+Class/

于 2010-01-17T13:51:05.280 に答える
4

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
于 2010-01-18T13:19:48.347 に答える
2

UMLはパラメトリック型をサポートします(他のものもパラメーター化でき、型以外のものもパラメーターとして使用できます)。

于 2010-12-27T20:09:42.580 に答える