【问题标题】:Pointers in UML DiagramUML图中的指针
【发布时间】:2020-03-28 18:05:45
【问题描述】:

我正在用 C++ 创建一个基于文本的奇幻游戏。我使用了指针,以及武器和盔甲对象。我将如何将这些放在 UML 图中?

以下是我的尝试,但我认为它的格式不正确。

在我的 Player.h 文件中:

Item* item1; 
Item* item2; 
Weapon w; //Weapon object
Armor a; //Armor object

这是我在 UML 上格式化它们的方式(它们都是公开的):

+ Item* item1 
+ Item* item2 
+ Weapon w 
+ Armor a 

【问题讨论】:

  • 指针。好的。去哪里?
  • Item* 指向项目 1 和项目 2,因为允许用户拥有 2 个项目
  • 你能否展示实际的UML图而不是简单的一些列表(这与你的实际代码基本相同)
  • 我的玻璃碗不幸坏了。那么,Item 又是什么?

标签: c++ uml class-diagram


【解决方案1】:

您使用指针这一事实可能与给定的编程语言相关,但通常与 UML 无关。当然,这在 C++ 中是相关的(即使通过隐藏/共享/...指针),但在只有指针的 Java 中不相关。

无论如何,这在 UML 中不相关并不意味着您无法通过 UML 建模器生成您想要的代码。

在您的示例中,当您的类的实例消失时,由 wa 记住的实例消失,在 UML 中建模的正确方法是使用 作曲

相反,如果 item 的实例在类的实例消失时继续存在,则您必须使用简单的 associationaggregation 但不是作曲。在这种情况下,根据定义,这意味着您在 C++ 中使用指针(无论支持何种指针),例如:

【讨论】:

  • 你从哪里知道Item是一个类实例?它可以是任何东西:一个结构或通过别名(我猜 c++ 有这样的语法糖)一些整数或谁知道的数组。这就是我向 OP 询问“指针”的原因。
  • 当我说“if the instances ...”时,可以谈论实例的事实也是有条件的。从 OP 问题中,我只知道 C++ 源代码中的类型是 item 并且没有多重性指示(因此默认情况下是 1 个元素而不是数组)。如果 item 通过 typedef 对应于例如 int,则在 UML 中将完成 type 的定义通过一个类并且图表仍然相关;-) 我只是尝试向 OP 提供材料,而不仅仅是说谈论 UML 中的指针不相关
  • @qwerty_so 在 C++ 中,结构是一个所有成员都是公共的类。如果它是一个别名,那么后面会隐藏另一种类型,但在语义上,布鲁诺的图表仍然有效。该数组只会改变链接的多重性。但布鲁诺缺乏多重性与 OP 的代码一样开放。当然,我们不知道项目与其他类的关系,也不知道布鲁诺称之为 CI 的包含类是什么。我们只能像 OP 一样富有表现力,不能更多 ;-)
  • @Christophe 我总是不愿意回答一个本身并不清楚的问题。答案也会如此。其他人可能会被误导。所以我要求发帖者在给出答案之前先澄清一下。显然,OP 在一个问题之后就消失了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 2014-06-05
  • 1970-01-01
  • 2014-03-29
  • 2014-01-30
  • 1970-01-01
相关资源
最近更新 更多