如何在Kotlin的UML类图中表示数组?

3
我有以下的 Kotlin 类:
class Student {

  private val courses: Array<String> = Array(30) {""}
  
  private val grades: IntArray = IntArray(30)

}

我正在尝试为这个 Kotlin 类创建一个 UML 类图。我对如何建模数组属性 courses 和 gradesFeeling confused.

以下哪种 UML 表示法是正确的?

1.

-courses: Array<String>[30]
-grades: IntArray[30]
-courses: Array<String>(30)
-grades: IntArray(30)
-courses: String[30]
-grades: Int[30]

1
除非您想要生成一个通用的(如伪代码)UML图表,否则应使用该项目所使用的编程语言的数据结构(或原语,如果有的话)。由于Kotlin没有任何原语,因此int[]对于Kotlin项目的UML类图不合适。 - deHaar
1
使用UML符号,将其余部分留给阅读图表的程序员。他们会知道如何处理它。通常,UML对编程语言是无知的。因此,您可以保持在抽象层面上。程序员可以即时进行转换-甚至从UML转换到您最初没有针对的其他编程语言。 - qwerty_so
1
如果您需要严格遵守UML规范,那么类型应为Integer[*] - www.admiraalit.nl
1
投票重新开放,因为这个问题被认为是与它所谓的重复问题完全不同。然而,这个问题可能因为基于观点而不适合讨论。 - Tenfour04
1
投票重新开放,因为这个问题据说是一个完全不同于这个问题的重复问题。然而,由于基于观点的性质,这个问题可能不适合讨论。 - Tenfour04
显示剩余28条评论
1个回答

3
在UML中,没有数组的概念。相反,有具有多重性的属性。通过这个,您可以指定允许元素的数量、其顺序和唯一性。数组定义了一个顺序,但不要求其中的元素是唯一的。因此,应该像这样指定: property1:Integer[10..30]{ordered, non unique}。 这将显示在类的属性部分。
如何将其转化为编程语言的文本表示取决于代码生成器,与建模者无关。
当然,定义编程语言的特定原始数据类型可能是有意义的,这样图表的读者就能看到熟悉的类型。或者,您可以定义从预定义的UML原始类型的映射。

非常清晰的回答。当你写“定义特定的原始数据类型”时,你是指特定的语言配置文件吗? - Christophe
1
@AliDehkhodaei 第三个选项是正确的UML(除了UML数据类型被称为Integer之外) - Axel Scheithauer
1
@AliDehkhodaei 第三个选项是正确的UML(除了UML数据类型被称为Integer之外) - Axel Scheithauer
@Christophe 所以三个选项都是正确的吗? - Ali Dehkhodaei
@AliDehkhodaei 不完全正确:1)说你有30个数组(不是30个元素的数组);2)如果您按照Axel的解释定义语言的原始类型,则可以。但是在UML中没有已知的多重性;3)如Axel所解释的那样是正确和准确的。这个可以用我之前评论中解释的附加特性来丰富。 - Christophe
显示剩余11条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接