2010-01-17 13 views
8

Tôi có giao diện sau:Đại diện một Generic Phương pháp C# trong một lớp UML Diagram

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

User là một lớp trừu tượng, và ICanLogin là giao diện khác.

Bây giờ, tôi muốn trình bày giao diện trên với phương thức của nó trong Sơ đồ lớp UML, trong Visio.

Làm cách nào tôi có thể trình bày phương pháp chung chung với các ràng buộc của nó trong Sơ đồ lớp?

Trả lời

3

UML không hỗ trợ loại phương pháp tham số trực tiếp. Giới thiệu về gần nhất bạn sẽ nhận được là xác định một lớp lồng nhau có các ràng buộc kiểu với một khuôn mẫu mà bạn sẽ hiểu nghĩa là một tham số kiểu, và xác định hoạt động Register về mặt đó.

+---------------------------------------------------+ 
|     «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

UML DOES hỗ trợ các loại tham số (những thứ khác có thể được parametrized là tốt, và những thứ khác hơn các loại có thể được sử dụng như các thông số cũng).

+1

Bạn có thể trích dẫn một số "nguồn đáng tin cậy" không? Tôi chỉ tò mò tìm hiểu thêm, đặc biệt là về cách sử dụng "những thứ khác ngoài loại [...] làm thông số" –

+0

Đối với các phương thức và không phải là lớp học? –

+0

Xem bài đăng trên blog này là "[Ghi chú Cliff] (https://blog.abstratt.com/2007/11/01/uml-101-the-templates-package/)", UML2 API javadoc (bắt đầu từ [TemplateableElement] (http://download.eclipse.org/modeling/mdt/uml2/javadoc/5.0.0/org/eclipse/uml2/uml/TemplateableElement.html)), và tìm kiếm [ Đặc tả UML] (http://www.omg.org/spec/UML/) cho các chuỗi TemplateableElement, TemplateSignature, TemplateParameter, ClassifierTemplateParameter, OperationTemplateParameter. –