您如何在 UML 中将集合(arrayList、vector 等)编写为属性(Class 图)?
How you write collections (arrayList, vector, etc) as attribute in UML (Class Diagram)?
我想问一下如何在class图中将集合(arrayList,vector)写成属性?
因为当你想添加变量作为属性时你可以写成“+ name: string”,但它如何与向量一起使用?谢谢
与其他类型相同,例如 + name: Vector<String>
因为可以将类型指定为自由文本
参见 this tutorial 关于 UML 图中的“多重性”和“多重性元素”。
基数
属性名称和类型后跟方括号中的一个或两个数字间隔,由 2 个点连接。
只有一个:
goalKeeper : Player [1..1]
…或:
goalKeeper : Player [1]
对于倍数,二到三:
forwards : Player [2..3]
使用星号表示开放式。
- 零个或多个:
[0..*]
- 一个或多个:
[1..*]
必须为零:[0..0]
或 [0]
集合属性
遵循具有以下特征的多重性范围:
ordered
或unordered
(表示已排序)
unique
或 nonunique
(意思不同)
将这些值嵌套在花括号中,用逗号分隔。
Java
你说:
I write collections (arrayList, vector)
顺便说一下,永远不要使用 Vector
. That legacy class was supplanted many years ago by ArrayList
, as noted in the Javadoc。
让我们看看 Java Collections Framework 如何符合这些属性。
A Java Set
would be { unordered, unique }
. A Java SortedSet
or NavigableSet
would be { ordered, unique }
. A Java List
would be { ordered , nonunique }
. As to the last combination { unordered , nonunique }
, no such interface nor implementation is bundled with Java; see the 3rd-party solution, Multiset
in Guava.
例子
回到你的一些实体有名字的例子,说一个或多个名字按优先顺序列出:
+ names: string [1..*] { ordered , unique }
您的属性名称应该是复数,例如此处的 names
而不是单数 name
.
是正确的,切中要害。这个答案只是对他的答案的补充。
当你想描绘一个名字时,你想到的只是一个名字是一串字符,所以你没有在class图中提到它是StringBuilder
还是StringBuffer
或 CharSequence
等。您只是提到 String
并不意味着 String class.
另一个例子是birthDate
,您只需提及Date
;不是 LocalDate
、ZonedDateTime
或 OffsetDateTime
等。这里,Date
并不意味着臭名昭著的 java.util.Date
class;它只是表示日期类型的对象。
总结一下,当你提到一个集合时,你需要提到的只是基数,而不是确切的实现class(比如List
、Set
、Vector
等)例如
history: History[0..*]
表示属性,history
是集合类型,元素将是类型,History
。
我想问一下如何在class图中将集合(arrayList,vector)写成属性?
因为当你想添加变量作为属性时你可以写成“+ name: string”,但它如何与向量一起使用?谢谢
与其他类型相同,例如 + name: Vector<String>
因为可以将类型指定为自由文本
参见 this tutorial 关于 UML 图中的“多重性”和“多重性元素”。
基数
属性名称和类型后跟方括号中的一个或两个数字间隔,由 2 个点连接。
只有一个:
goalKeeper : Player [1..1]
…或:
goalKeeper : Player [1]
对于倍数,二到三:
forwards : Player [2..3]
使用星号表示开放式。
- 零个或多个:
[0..*]
- 一个或多个:
[1..*]
必须为零:[0..0]
或 [0]
集合属性
遵循具有以下特征的多重性范围:
ordered
或unordered
(表示已排序)unique
或nonunique
(意思不同)
将这些值嵌套在花括号中,用逗号分隔。
Java
你说:
I write collections (arrayList, vector)
顺便说一下,永远不要使用 Vector
. That legacy class was supplanted many years ago by ArrayList
, as noted in the Javadoc。
让我们看看 Java Collections Framework 如何符合这些属性。
A Java Set
would be { unordered, unique }
. A Java SortedSet
or NavigableSet
would be { ordered, unique }
. A Java List
would be { ordered , nonunique }
. As to the last combination { unordered , nonunique }
, no such interface nor implementation is bundled with Java; see the 3rd-party solution, Multiset
in Guava.
例子
回到你的一些实体有名字的例子,说一个或多个名字按优先顺序列出:
+ names: string [1..*] { ordered , unique }
您的属性名称应该是复数,例如此处的 names
而不是单数 name
.
当你想描绘一个名字时,你想到的只是一个名字是一串字符,所以你没有在class图中提到它是StringBuilder
还是StringBuffer
或 CharSequence
等。您只是提到 String
并不意味着 String class.
另一个例子是birthDate
,您只需提及Date
;不是 LocalDate
、ZonedDateTime
或 OffsetDateTime
等。这里,Date
并不意味着臭名昭著的 java.util.Date
class;它只是表示日期类型的对象。
总结一下,当你提到一个集合时,你需要提到的只是基数,而不是确切的实现class(比如List
、Set
、Vector
等)例如
history: History[0..*]
表示属性,history
是集合类型,元素将是类型,History
。