在UML中约定多个相似的属性

Contract multiple similar attributes in UML

在学校里,我们应该为我们计划编写的 class 画一个 UML class 图(我们应该做计划)。

我现在有 10 个 JLabel,它们是 class Game 的属性,每个都显示不同的图片,但它们都用于相同的目的。为了更清楚一点,标签将被称为 Player1Throw1Player1Throw5Player2Throw1Player2Throw5.

我的问题是,在 UML 中是否有正确的方法来收缩这 10 个标签,这样我就不必写

Game
--------
-Player1Throw1: JLabel
-Player1Throw2: JLabel
-Player1Throw3: JLabel
-Player1Throw4: JLabel
-Player1Throw5: JLabel
-Player2Throw1: JLabel
-Player2Throw2: JLabel
-Player2Throw3: JLabel
-Player2Throw4: JLabel
-Player2Throw5: JLabel

或者换句话说:有没有办法将这 10 行缩减为 2 行?

感谢您的帮助!

您应该能够从 class 图生成代码。当您不单独定义所有属性时,您将如何做到这一点?如果你能回答这个问题,你就知道如何显示它们了。

OOP 中的设计试图找出是否可以使行为更抽象。如果你有 10 个类似的标签,那么你能否基于共享接口制作另一组 classes 来完成这项工作?深入研究设计模式。有一种模式是针对这种情况而设计的。

您可以在 UML 中使用以下表示法:

- Player1Throw : JLabel[5]

- Player2Throw : JLabel[5]

不要对局部属性使用全局变量。 在代码层面,对同一角色的多个对象使用集合(数组、集合、包等)。

您应该定义一个 class Player(据我所知,它是 Game 的一部分)并且 class Game 应该包含两个 Player 对象的集合(数组?)。 Player 应该有一个 JLabel 类型的 throw 属性(或者可能是 0..5 - 我不知道你的项目的细节,但是在代码级别它并不真正影响 class 结构)。

因此你的 UML class 图看起来像这样