我经常对UML感到困惑,这种情况也不例外.假设我有一个接口IAnimal,类Food和Cat:
interface IAnimal { void Feed(Food food); } class Cat : IAnimal { void Feed(Food food) { //code } }
我有3个关于为这3个元素绘制UML类图的问题:
我想我应该使用IAnimal和Food或Cat and Food之间的关联.在关联线的一侧是否应该有箭头,如果是,那么在哪一侧以及为什么存在?
如果我在图上将Feed作为IAnimal方法编写,我应该在类Cat中编写方法Feed还是仅编写其他Cat方法?
最重要的是:IAnimal和食物,猫和食物之间的联系,还是两者兼而有之?
toolkit.. 14
UML定义了许多关系类型.
关系有许多不同的符号:
关联关系具有可靠路径的基本符号
依赖关系具有虚线箭头的基本符号
泛化关系具有带三角形箭头的实心路径的基本符号
实现关系的基本符号是带有三角形箭头的虚线箭头(依赖和泛化的混合)
形象地
+---------------------------+ | <> | | IAnimal | +---------------------------+ +--------+ | + Feed(food: Food) : void |- - - - <
那是:
IAnimal
和之间的关系Food
是一种使用关系.这显示为与构造型«use»的依赖关系
IAnimal
和之间的关系Cat
是一种实现关系.
关联关系用于指示两个或更多个分类器之间的连接.这意味着至少有一个类具有另一种类型(或集合)的属性.实际上,属性和关联结束包含相同的信息并且可以互换.
所以,恕我直言,你描述的关系不应该被建模为关联.
UML定义了许多关系类型.
关系有许多不同的符号:
关联关系具有可靠路径的基本符号
依赖关系具有虚线箭头的基本符号
泛化关系具有带三角形箭头的实心路径的基本符号
实现关系的基本符号是带有三角形箭头的虚线箭头(依赖和泛化的混合)
形象地
+---------------------------+ | <> | | IAnimal | +---------------------------+ +--------+ | + Feed(food: Food) : void |- - - - <
那是:
IAnimal
和之间的关系Food
是一种使用关系.这显示为与构造型«use»的依赖关系
IAnimal
和之间的关系Cat
是一种实现关系.
关联关系用于指示两个或更多个分类器之间的连接.这意味着至少有一个类具有另一种类型(或集合)的属性.实际上,属性和关联结束包含相同的信息并且可以互换.
所以,恕我直言,你描述的关系不应该被建模为关联.