- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个关于事件图建模的问题,这个问题已经困扰我一段时间了,我无法在任何地方找到任何答案/约定。
这是一个可以更好地理解我的问题的示例:
假设我有两个类,名为“公寓”和“房子”。两者都是“住房”类别的概括。住房包含居住在其中的人的“居民”属性。公寓包含一个属性“floor”,表示公寓位于哪一层。
在事件图中,我想表示为人们提供住房的行动。此操作可以将房屋或公寓作为输入(因此我认为输入引脚使用“房屋”类型是正确的)以及未定义的人数。我希望此操作能够提供更新的房屋或公寓作为输出(不是更新的房屋,因为这意味着特定于房屋或公寓的信息将丢失。我真的不知道是否必须创建两个操作(一个用于房屋,另一个用于公寓),或者是否有办法为两个类重用该操作并从中获得正确的输出。
我的问题是:如何在事件图中表示对于不同类型的对象流相同的操作作为输入,并将更新的对象流作为输出(可能是因此不同类型)?
注意:
最佳答案
卡梅奥拒绝这种模式是正确的。 Give Flat Floor
需要公寓,不能与 House 一起使用,但 Assign Resident to Housing
可以返回 House。我知道,在您的上下文中它只能返回 Flat,但是该工具应该如何知道这一点?
捕捉这一事实的正确方法是向 Activity Assign Resident to Housing
添加一个后置条件,声明输入和输出引脚的类型相同。
但是,定义一套完整的兼容性规则来考虑所有全局和局部前置条件和后置条件确实非常困难,并且工具也很难根据这些规则来验证模型。因此,UML 规范选择了简单的方法,根本不允许连接引脚。
解决方案是使用ObjectFlow的transformation属性。只需指定一个 OpaqueBehavior,将 House 类型转换为 Flat 类型。然后 Cameo 将接受该模型。建模者有责任确保此转换始终有效,因为此处无法定义异常处理。也许这应该用本地后置条件来记录。
在您的具体示例中,有一个更简单的解决方案:只需 fork Flat 类型的 ObjectFlow 并省略 将 Resident 分配给住房
的 OutputPin。
作为旁注:由于 Cameo 中的错误,您可以将 OutputPin 的类型更改为比 ActivityParameter 的类型更具体的类型。这对于输入引脚来说是正确的,但对于输出引脚来说应该相反。您可以使用它来让参数为 House 类型,但 OutputPin-Type 将为 Flat。
关于uml - 事件图 : Reusing Activity/Action With different inherited type of object flow as output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67860329/
我是一名优秀的程序员,十分优秀!