【发布时间】:2013-11-22 21:11:31
【问题描述】:
我有两个关于同一个 UML 类图的问题。第一个是关于如何使用 UML 原生类型对模板类建模。第二个是关于如何处理 OCL 约束中的模板类。
问题一:模板类
我想为间隔使用模板类并使用 UML 标准来表示它。间隔必须可用于整数和浮点数。到目前为止我发现的最好的方法如下:
这里的想法是有一个模板类,参数T 是Integer 和Float 类的超类。
我看到的问题是我需要重新定义 UML 的基本类型才能对它们进行分组。我想知道是否有一种干净的方式来定义模板类并说T 是integer 或float 类型(这里是UML 的原语)。
问题 2:模板类的 OCL 约束
我的问题的第二个方面是我希望能够添加 OCL 约束来说明我的间隔必须包含至少 2 个元素。问题是,根据前面类图中T的绑定,规则一定不一样。
对于花车:
context Interval
inv : self.supBound > self.infBound
对于整数:
context Interval
inv : (self.infBoundIncluded and self.supBoundIncluded) implies supBound - infBound >= 1
context Interval
inv : (not(self.infBoundIncluded) and self.supBoundIncluded) implies supBound - infBound >= 2
context Interval
inv : (self.infBoundIncluded and not(self.supBoundIncluded)) implies supBound - infBound >= 2
context Interval
inv : (not(self.infBoundIncluded) and not(self.supBoundIncluded)) implies supBound - infBound >= 3
所以我需要在 OCL 中找到一种方法来说明某些规则仅在 T 绑定到 Integer 时适用,而其他规则在绑定到 Float 时适用。我不是 OCL 方面的专家,也找不到任何有用的信息,所以我寻求帮助。
提前致谢,
巴斯蒂安。
【问题讨论】:
标签: uml class-diagram ocl template-classes