您如何在 UML(类图)中将集合(arrayList、vector 等)编写为属性?

mti*_*dja 4 java uml class-diagram

我想问一下我如何在类图中将集合(arrayList,vector)作为属性编写?

因为当你想添加变量作为属性时,你可以像“+名称:字符串”这样写,但是它如何与向量一起工作?谢谢。

Bas*_*que 5

请参阅有关UML 图中“多重性”和“多重性元素”的教程

基数

遵循属性名称和类型,在方括号中用 2 个点连接一个或两个数字的间隔。

对于一个:

goalKeeper : Player [1..1]
Run Code Online (Sandbox Code Playgroud)

…或者:

goalKeeper : Player [1]
Run Code Online (Sandbox Code Playgroud)

对于倍数,二到三:

forwards : Player [2..3]
Run Code Online (Sandbox Code Playgroud)

使用星号表示开放式。

  • 零个或多个: [0..*]
  • 一个或多个: [1..*]

必须为零:[0..0][0]

集合属性

遵循具有以下特征的多重性范围:

  • orderedunordered(意义排序)
  • uniquenonunique(意思是不同的)

将这些值嵌套在花括号中,用逗号分隔。

爪哇

你说:

我写集合(arrayList,vector)

顺便说一句,永远不要使用Vector. ArrayList正如Javadoc中所述,该遗留类在多年前被 取代。

让我们看看Java Collections Framework如何适应这些属性。

一个 JavaSet将是{ unordered, unique }. 一个 JavaSortedSetNavigableSet将是{ ordered, unique }. 一个 JavaList将是{ ordered , nonunique }. 至于最后一个组合{ unordered , nonunique },Java 没有捆绑这样的接口和实现;看到第三方的解决方案,Multiset番石榴

表格显示了每个有序/无序与唯一/非唯一 UML 多重性属性的组合的 Java 集合类。

例子

回到你的一些实体有名字的例子,说一个或多个按优先顺序列出的名字:

+ names: string [1..*] { ordered , unique }
Run Code Online (Sandbox Code Playgroud)

您的属性名称应该是复数形式,例如names此处而不是单数形式name