<<use>> 和 <<composition >> 同时需要吗?

<<use>> and <<composition >> at the same time required?

我有以下 UML 包含 class School 其中( 在我现在的示例中) 只能有一个TeacherRoom.

我现在的问题是这个 UML 的官方符号是什么,或者我应该删除 <> 关联,因为它很明显吗? 很明显,因为我在 School 实例中保存了 TeacherRoom 实例?

我会这样定义它:

根据我对 UML 2.5.1 规范第 10.4 节的理解,使用依赖性描述了给定组件需要接口或服务的事实。

所以我会删除它,因为这与 "School" 由 "TeacherRoom" 组成的事实无关。

我的第二点是你的 "teacherRoom" 属性 与你的作文或多或少具有相同的含义,因此我将删除其中一个(属性 或 Composition)。

您在 class School 中具有属性 teacherRoom : TeacherRoom 的事实意味着 School 正在使用 TeacherRoom,因此 > 依赖关系是不需要。

您还与 TeacherRoom 建立了作文关联。这意味着,除了属性之外,您还有与 TeacherRoom 的第二种关系。所以你可以删除任何一个。

因为你写了

can only have one [typo corrected by me] TeacherRoom.

您需要在关联的右侧添加一个多重性 1(并按照评论和回答删除菱形)。此外,您应该在关联中使用角色名称 teacherRoom,而不是 School 中的属性,并通过添加点使其成为拥有的 属性。


对组合的一些补充说明:组合(我个人的印象)是一种比它实际帮助构建模型更容易引起混淆的东西(只是寻找询问其语义的问题and/or注意它的错误用法).更糟糕的是导致(并导致)更多混乱的共享聚合。现在,经过许多版本,UML 2.5 将空洞的东西定义为它的本来面目:什么都没有。只需阅读第 1 页的方框。 110.所以回到填充的一个,复合聚合。基本上它是关于对象的生命周期,所以是否有一个对象的所有者负责它的生命周期。当你制造一辆由轮子组成的汽车时,这显然是不对的,因为轮子会在没有连接到汽车上的情况下继续存在。只有汽车不再是汽车。但这将通过将重数 4 附加到轮子来表达。任何不完全是 4 个轮子的汽车都不再是汽车。完全没有作文。

那么复合聚合在什么地方可以使用呢?我脑子里只有 2 个应用程序。一种用于存储管理。在计算的早期,当像我这样的恐龙与 20 兆字节的橱柜大小的硬盘一起战斗时,这很重要!只有少数边界情况仍然需要内存管理指示。第二种情况是安全。指示某些内容必须与其父项一起删除。这仍然有效。但这是复合聚合的唯一真正应用。