Java 如何在UML(类图)中将集合(arrayList、vector等)编写为属性?
我想问一下如何在类图中将集合(arrayList、vector)作为属性编写Java 如何在UML(类图)中将集合(arrayList、vector等)编写为属性?,java,uml,class-diagram,Java,Uml,Class Diagram,我想问一下如何在类图中将集合(arrayList、vector)作为属性编写 因为当您想将变量添加为属性时,您可以像“+name:string”那样编写它,但它如何与vector一起工作呢?谢谢。与您处理其他类型的方式相同,例如+name:Vector,因为该类型可以指定为自由文本请参见UML图中的“多重性”和“多重性元素” 基数 在属性名称后面键入一个或两个数字,间隔在方括号中,并用两个点连接 就一个: goalKeeper : Player [1..1] …或: goalKeeper :
因为当您想将变量添加为属性时,您可以像“+name:string”那样编写它,但它如何与vector一起工作呢?谢谢。与您处理其他类型的方式相同,例如
+name:Vector
,因为该类型可以指定为自由文本请参见UML图中的“多重性”和“多重性元素”
基数
在属性名称后面键入一个或两个数字,间隔在方括号中,并用两个点连接
就一个:
goalKeeper : Player [1..1]
…或:
goalKeeper : Player [1]
对于倍数,二到三:
forwards : Player [2..3]
使用星号表示开放式
- 零或更多:
[0..*]
- 一个或多个:
[1..*]
[0..0]
或[0]
集合属性
遵循具有以下特征的多重性范围:
或有序
(表示已排序)无序
或唯一
(意思不同)非唯一
{无序的,唯一的}
。Java或将是{有序的,唯一的}
。Java将是{有序的,非唯一的}
。至于最后一个组合{unordered,ununique}
,没有这样的接口或实现与Java捆绑在一起;请参阅中的第三方解决方案
例子
回到您的一些实体的名称示例,说一个或多个按优先顺序列出的名称:
+ names: string [1..*] { ordered , unique }
属性名称应该是复数,例如这里的名称
,而不是单数名称
正确且切中要害。这个答案只是对他的答案的补充
当您想要描述一个名称时,您所想到的只是一个名称是一个字符串,因此,您在类图中没有提到它是StringBuilder
还是StringBuffer
或CharSequence
等等。您只提到string
,这并不意味着类
另一个例子是生日
,您只需提及日期
;不是LocalDate
,ZonedDateTime
或OffsetDateTime
等。在这里,Date
并不意味着臭名昭著的java.util.Date
类;它只是表示对象的日期类型
总而言之,当你提到一个集合时,你需要提到的只是基数,而不是确切的实现类(比如List
,Set
,Vector
等等),例如
表示属性,
history
属于集合类型,元素将属于类型,history
很好的解释@阿文德库马拉维纳什,谢谢。请把这个问题投赞成票,因为它得到了不应有的反对票。我不喜欢看到新的投稿人问一个完全正确的问题时发生这种情况。@BasilBourque-投票结果也一样。我100%同意你的观点。在你的最后一个例子中,最好是编写String
而不是String
,参见UML规范2.5版第21章“基本类型”。@mtirtapradja ok,但值得一提的是,这意味着隐式或显式配置文件向(很少的)标准数据类型添加新的数据类型,因为UML规范第9.5.4节说类型必须是分类器的名称,而不是自由文本。我不理解投票结束,因为“需要细节或清晰”。对我来说似乎很清楚:如何在UML实体上编写一个属性来表示一组值,比如Java中的ArrayList
?
history: History[0..*]