如何在 UML class 图中描述一个方法接受多种类型?

How to depict in a UML class diagram that a method accept multiple types?

我正在处理一个 PHP 项目,并且正在编写它的 UML 文档。 我需要指定一个方法接受多种数据类型,但我不知道该怎么做。

例如: 我想在 UML class 图中表示一个名为 'A' 的 PHP class:

<?php 

    class A{ 
        private $_data;  

        public function __construct() { 
            $this->_data = array(); 
        } 

        public function add( $key , $value){ 
            $this->_data[$key] = $value; 
        }                        
    } 

    $oA = new A(); 
    $oA->add( 1, 'John Doe' ); // key is an int and value is a string 
    $oA->add( "Fruits" , array("Apple", "Banana", "Kiwi") ); // string, array 
    $oA->add( "pi", 3.1415 ); 
    //and so on...       
?>

请注意,add() 函数可以接收不同类型数据的键和值。因此,我无法在我的 UML class 图中指定诸如“key:integer”或“value : string[]”之类的内容,因为它们的数据类型可能会根据调用方法时传递的数据类型而改变.

有没有办法用 UML 符号来描述这个事实?

我可以指定类似的内容吗:

+ add( key:mixed , value:mixed)

?

提前致谢!

这是解释语言的普遍问题,我想这里没有现成的东西。一种可能的方法是将参数声明为(抽象的)class Varying(或任何您想称呼的参数)。这可能只是您模型中的一个约定,您在全局位置描述这种类型意味着该方法接受不同的参数。所以你的 add 会显示为

+ add(Varying)

您可以(理论上)为此类参数引入一种形式上正确的方法。但这不值得付出努力(除非你会在大学的一些 UML class 中做到这一点)。

编辑 或者,可以使用标记值让模型读者了解此类结构。根据工具的不同,这些标记值可以控制可见表示以及代码生成。

另请参阅: