gpt4 book ai didi

UML 组合多重性

转载 作者:行者123 更新时间:2023-12-04 10:07:35 24 4
gpt4 key购买 nike

我有一个关于在 UML 图中指示多重性的问题。

我有一个 SpriteObject 类,它有一个动画列表。 SpriteObject 可以有 0..* 个动画。所有动画都是在 SpriteObject 内部创建的,它们本身并不存在。

我不是 100% 确定我应该如何用多样性来表示这一点。在网上搜索后,我发现了以下 3 个选项:

选项 1:多重性应该这样表示,因为每个 SpriteObject 都有 0 个或多个 Animations。由于动画不知道 SpriteObject 的存在,因此 SpriteObject 一侧没有指示多重性。
enter image description here

选项2: 应该像这样在两边标明多重性,因为我们需要标明两个类之间的局部关系,所以1个SpriteObject有0个或多个Animations。
enter image description here

选项3:多样性应该在双方都表示 喜欢这个,因为我们需要能够阅读多样性并将其理解为整体(游戏)的一部分。游戏可以包含 0..* SpriteObjects,而 SpriteObject 可以包含 0..* Animations。这就是为什么 0..* SpriteObjects 有 0..* Animations
enter image description here
谁能告诉我哪个选项是正确的?(如果有的话)

最佳答案

[编辑]

它应该是选项 1。这是一个 composition relationship

这意味着 SpriteObject 包含并管理 Animation 对象的生命周期。

举个例子。

public class SpriteObject : IDispose
{
private List<Animation> animations;

// constructor
public SpriteObject()
{
animations = new List<Animations>();

// initialise the list
}

public ovveride Dispose()
{
// clear list
}
}

如果这是一个聚合关系。

enter image description here

注意符号,空心钻石。这是一个 aggregagtion relationsip .这意味着实例 SpriteObject 可以有零个或多个 Animation 实例,但 Animation 对象的生命周期不依赖于 SpriteObject 的生命周期。

C# 代码示例如下所示:
public class SpriteObject
{
private List<Animation> animations;

// constructor
public SpriteObject(List<Animation> animations)
{
this.animations = animations;
}
}

关于UML 组合多重性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21362016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com