gpt4 book ai didi

uml - UML 配置文件中扩展构造型的约束

转载 作者:行者123 更新时间:2023-12-03 20:24:07 28 4
gpt4 key购买 nike

假设您有一个更大的汽车配置文件的摘录:
Profile Excerpt for Cars
现在我想为汽车定义一些约束,比如这些约束状态之一,如果 attrAtrue ,然后 attrB必须是 false像这样使用 OCL:

Context UML::Core::Class inv:
self
.stereotype
.name='Car'
implies
self.attrA=true
implies
self.attrB=false
我的问题是:如果 Mercedes刻板印象专门用于汽车刻板印象我是否坚持相同的约束,换句话说:是刻板印象 Car仍然申请具有 Mercedes 的类(class)刻板印象应用?
我认为 self.stereotype.name='Car'返回 false如果应用的构造型是 Mercedes .
这很有趣,因为我希望梅赛德斯拥有与汽车相同的属性,但我想更改之前声明的约束。

最佳答案

I would suppose that self.stereotype.name='Car' return false if the applied stereotype is Mercedes.


你是对的。
梅赛德斯按原样继承约束,因此 self.stereotype.name='Car'对于类刻板的 Mercedes 而不是 Car 是错误的,因为 'Mercedes' 和 'Car' 是两个不同的字符串。

如果你想直接或间接地为专门用于 Car 的元类激活第一个隐含,你可以得到构造型的所有概括更多本身来搜索一个名为“Car”的,还检查构造型的配置文件的名称,可能是它的 URI。因此,例如替换 self.stereotype.name='Car'经过 :
self.stereotype.profile.name = 'Cars' and
-- self.stereotype.profile.URI= '...' and
self.stereotype.generalization()
->closure(general.generalization).general()
->including(self.stereotype)
->select(name = 'Car')
->notEmpty()
或者有一个名为 Cars 的单独配置文件和一个名为 Car 的单独构造型:
self.stereotype.oclIsKindOf(Profile.allInstances()
->any(name = 'Cars') -- may be check also URI
.ownedStereotype->any(name = 'Car'))

补充说明 :
  • 在您的提案中,您假设在所有配置文件的所有构造型中,只有您的构造型被命名为 Car,当然这可能是错误的。您还可以检查配置文件的名称,可能是其 URI,例如:
    self.stereotype.name='Car'
    and self.stereotype.profile.name='Cars'
    -- and self.stereotype.profile.URI= '...'
  • 在您的图中,箭头是错误的,因为它必须是实心三角形而不是 < (可能你使用 PlantUML):

  • enter image description here

    关于uml - UML 配置文件中扩展构造型的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64661857/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com