Class 图多重性和依赖性实现

Class Diagram Multiplicity and Dependency implementation

我目前正在学习创建 uml 图,尤其是 class 图,并且在理解过程中的某些概念时遇到一些困难,这里是问题

  1. 多重性总是双面的吗?就像我有这个 classes,PP class 是买家 Class,Cart 是 class 来保存买家订单信息,我分配 1 - 1 多重性因为1 个买家总是有 1 个购物车,反之亦然,在购物车中明确定义(在我的代码中)我有一个类型为 PP 的变量,但在 class PP 中根本没有购物车变量,多重性也是如此错误的?我应该只在 PP 中分配 1 面多重性并在购物车中有 none 吗?还是在 class 中包含变量并不重要?我对这个理解很困惑

  1. 关于依赖关系,如果我有这个 PP class,它在 class 中有变量 shippingAddress 并且在某些函数中使用数据类型 ShippingAddress 作为参数,我应该使用依赖关系还是关联

非常感谢

  1. 多重性在需要的地方定义。如果没有给出,那么它是未定义的,可以是从零到无穷大的任何值。这取决于你是否定义它。原因之一是简单,如果您只想显示“它是关联的”。对于完整的模型(如果需要),您必须在所有边缘指定多重性。

  2. 依赖只是一种弱关系。如果您仅在参数中使用一些 class 或作为传递,则您使用依赖关系。你的第二张图片是错误的,因为你应该从 PP uses/depends 开始向下绘制依赖关系(带空心箭头的虚线) ShippingAddress 而不是相反。

qwerty_so已经给出了简洁准确的答案。不过,我想补充一些想法来完成这幅画。


1

在一个关联中总是至少有 2 边,并且每边都有一个 多重性:第一个图说 PP 总是有 1 个购物车,而购物车总是1页。如果您的意思是“有时”而不是总是,请将其更改为 0..1

一个n-ary association可以有2个以上的面:那么你就有n个重数。

WHen在图中没有在一侧指示多重性,这并不意味着没有多重性,而是我们不知道多重性是什么(或者它对我们想要的不重要)显示在图表中)。

现在你关于多重性和如何实现它的问题引发了另一个话题:

it is clearly defined (in my code) that i have a variable with type PP, but inside class PP there is no cart variable at all, so does the multiplicity wrong?

这是 的问题:如果在 Cart 的实现中你有一个 PP 变量,这意味着你可以轻松地从给定的 Cart 到关联的 PP。如果在PP实现中没有Cart变量,很难找到对应的Cart,所以无法导航。导航性以空心箭头显示。

多重性和适航性是两个正交的概念。


2

如果您既有依赖关系又有关联关系,通常会显示关联关系。没有必要也显示依赖关系,因为关联暗示了它。然而,如果你想同时显示两者(但用虚线和空心箭头)也没有错(例如,如果你想为每个添加一些解释性注释)。

现在,如果在 PP 实现中有一个 ShippingAddress,这不仅是导航性问题,而且还是关联端所有权的问题。所以你可以在 ShippingAddress.

旁边使用 dot notation

如果您没有关联,但使用另一个 class 作为参数或 return 类型的操作,那么您可能想要显示 s simpe «use» dependency