【发布时间】:2013-03-23 14:04:53
【问题描述】:
当一个类具有指向另一个类的方法参数指针(或引用,或对象)时,在UML中它反映为关联或聚合,带有菱形,还是有一些特定的符号?
【问题讨论】:
标签: oop uml class-diagram
当一个类具有指向另一个类的方法参数指针(或引用,或对象)时,在UML中它反映为关联或聚合,带有菱形,还是有一些特定的符号?
【问题讨论】:
标签: oop uml class-diagram
正如其他人所解释的,您应该使用依赖而不是任何形式的关联(聚合和组合)。
依赖意味着源元素的规范或实现需要目标元素。
但是,有许多不同类型的依赖项。依赖的类型可以通过关键字和原型来指定。在您的情况下,您应该使用dependency 和关键字<<use>>:
为了解释<<use>>,我从第196页引用了本书UML 2 and The Unified Process的一部分:
这种依赖(使用)是由以下任何一种情况产生的:
1- A类的操作需要B类的参数
2- A 类的操作返回 B 类的值
3- A 类的操作在其实现的某处使用 B 类的对象,但不作为属性。
P.S:依赖项可以具有的其他关键字/原型是调用、创建、派生、实例化、允许、实现、细化和跟踪。
【讨论】:
<<use>> 的定义。请参阅我在 UML 2 和统一流程书的答案中添加的部分。
您需要的不是关联(也不是特定关联的聚合或组合),因为关联指的是 ClassA 的属性,属于 ClassB 类型。
在这里,对于方法参数,您可以在类之间使用依赖箭头(虚线箭头)。这是一个非常普遍的关系,应该符合您的目的。
请参见此处的示例以获得解释:http://martinfowler.com/bliki/DependencyAndAssociation.html
【讨论】:
Association 是一个类到另一个类的链接,因此指针/引用描述了一个关联。
Aggregation/Composition 描述关联的类型,因此实际上是它的详细说明(但有些关联类型不是聚合/组合)。
您是否要使用聚合或关联取决于您要在图表中显示的详细程度。
鉴于问题描述,连接是较弱的,因为它不是静态链接,而是临时链接。在这种情况下,更合适的是使用Dependency 关系而不是关联。
【讨论】:
“使用依赖项没有指定客户端如何使用供应商,除了供应商被客户的定义或实现使用。例如,它可能意味着(客户)中的某些方法) 类使用另一个(供应商)类的对象(例如参数)。”
【讨论】: