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

时间:2015-06-26 17:25:35

标签: php uml

我正在开发一个PHP项目,并且正在进行其UML文档。 我需要指定一个方法接受多种数据类型,我无法弄清楚如何去做。

例如: 我想代表一个叫做' A'的PHP类。在UML类图中:

<?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类图中指定类似“key:integer”或“value:string []”的东西,因为它们的数据类型可以根据调用方法时传递的数据类型而改变。 / p>

有没有办法用UML表示法来描述这个事实?

我可以指定类似的内容:

+ add( key:mixed , value:mixed)

提前致谢!

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

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

+ add(Varying)

您可以(理论上)为这些参数引入正式的正确方法。但这不值得努力(除非你在大学的某些UML课程中这样做)。

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