类图多重性和依赖实现

问题描述

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

  1. 多重性总是双面的吗?就像当我有这个类时,PP 类是买家类,而 Cart 是保存买家订单信息的类,我分配 1 - 1 多重性,因为 1 个买家总是有 1 个购物车,反之亦然,在 Cart 中有明确定义(在我的代码中)我有一个类型为 PP 的变量,但是在 PP 类内部根本没有购物车变量,所以多重性错误吗?我应该在 PP 中分配 1 边多重性而在购物车中没有吗?或者在类中拥有变量并不重要?我对理解这一点很困惑

enter image description here

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

enter image description here

非常感谢

解决方法

qwerty_so 已经提供了简洁准确的答案。不过,我想补充一些想法来完成这张图。


1

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

一个 n-ary association 中可以有 2 个以上的边:那么你将有 n 个多重性。

当图中的一侧没有表示多重性时,这并不意味着没有多重性,而是我们不知道多重性是什么(或者对于我们想要展示的内容并不重要)图中)。

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

(在我的代码中)清楚地定义了我有一个类型为 PP 的变量,但是在类 PP 中根本没有购物车变量,所以多重性错误吗?

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

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


2

如果您同时拥有依赖项和关联,您通常会显示关联。没有必要也显示依赖关系,因为它是由关联隐含的。但是,如果您想同时显示两者(但使用虚线和空心箭头)(例如,如果您想为每个都添加一些解释性注释),这并没有错。

现在,如果在 PP 实现中有一个 ShippingAddress,这不仅是可导航性的问题,也是关联端所有权的问题。因此您可以使用 ShippingAddress 旁边的 dot notation

如果您没有关联,而是使用另一个类作为操作的参数或返回类型,那么您可能需要显示 s simpe «use» dependency

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

  2. 依赖关系仅仅是一个弱的关系。如果仅在参数或传递用一些类使用依存关系。你的第二个画面是错误的,你应该吸取的依赖(开放箭头的虚线)向下,因为PP用途/取决于ShippingAddress,而不是周围的其他方式。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...