如何设置类之间的序列关系?

时间:2016-02-09 14:51:14

标签: uml

我是UML建模的新手,这对某些人来说似乎是一个愚蠢的问题,但我会试一试。

请考虑以下图片:

enter image description here

如何指定它们在日历中的显示顺序。星期一是在星期日之后和星期二之前的事实,这个模型很重要。但是如何将这些信息传递给模型的读者呢?谢谢。

2 个答案:

答案 0 :(得分:3)

也许星期一是一周中某一天的七个实例之一,而不是一周中的某一天。将班级Day Of Week视为一组。该集的成员是什么?有七个:{周一,周二,周三,周四,周五,周六,周日}。现在想想班级Monday。你想要成员{这是过去星期一,下一个星期一,...}?可能不是。

您可以使用类Day of Week的七个实例,或者可以使用包含七个枚举文字的枚举。在任何一种情况下,您仍然存在对实例进行排序的问题,但至少对于实例或枚举文字,的两个含义是不会混淆。 (如,的实例是一种。)

在UML中,您可以拥有{ordered}类型为Day Of Week的属性。但是你不能说它们是如何订购的。

下面我做了两个例子。一个是使用一个类,您将使用七个实例进行实例化,每个实例都具有sequenceNumber属性的唯一值,您可以使用该值来对实例进行排序。另一种是使用枚举,它有七个枚举文字。每个枚举文字都有一个名为sequenceNumber的属性,您可以使用该属性来排序枚举文字。

UML diagram

每个枚举文字都是枚举的一个实例,并且有一个包含唯一值的插槽。这些插槽无法在图表中显示,但它们位于模型中。下面是一个屏幕截图,显示了模型的包含树中每个枚举文字的插槽:

containment tree showing slots

答案 1 :(得分:2)

没有订单。如果要创建枚举,则必须创建<<enumeration>>原型类Day Of Week并将日期作为单个属性。

enter image description here

您的模型只定义了Monday等工作日。

注意:考虑到JimL。的评论,这既不是一个刻板的类,也不包含属性。它是一个带文字的数据类型。谢谢OMG,你让它看起来一样; - )