我有一个包含类和对象的图表。我可以使用哪种定向关系将对象与作为实例的类连接?这是实现依赖性,如下图所示?
在这个图中,关系是多余的,因为在冒号后面的对象的矩形中已经提到了类名,但在我的项目中,它们使用了很长的类名,我不想在矩形内显示它们所有对象。
答案 0 :(得分:3)
答案 1 :(得分:1)
你不需要关系。您显示MyOldBMW是 Car的实例:MyOldBMW:Car 。
此外,MyOldBMW应该用camelCase编写: myOldBMW:Car (小写的第一个字母)。
答案 2 :(得分:1)
根据UML规范,您不能忽略分类器的名称。
关于实例表示法的UMLv2.5§9.8.4说:
使用与其类似的表示法描述InstanceSpecification 分类器,但代替分类器名称会出现下划线 实例名称(如果有)的连接,冒号(':')和 分类器名称或名称。显示多个的约定 分类器是用逗号分隔它们的名字。
尽管使用<RULE NAME="STABLED" ID="R_STABLED">
<L>
<P PROPID="STABLED" VALSTR="stabled">stabled</P>
<P PROPID="NOT_STABLED" VALSTR="not stabled">not stabled</P>
</L>
</RULE>`
(不是Dependency
)来显示Realization
和Classifier
之间的关系并没有错误(尽管多余), 似乎错误,根据此段从实例表示法中省略了分类器名称。
正如www.admiraalit.nl所指出的,不幸的是,规范没有明确定义Instance
同一章的另一段内容如下:
请注意。对于分类器和实例规范,名称是可选的。 图中没有名称并不一定反映其名称 在基础模型中缺席。
对我来说,这不是100%明确的。是的,分类器和实例可以有空名称,但是这个陈述是否意味着我们可以从InstanceSpecifications
中省略Classifier
的名称?
为InstanceSpecification
定义的语法似乎暗示我们可以离开Nested InstanceSpecifications
ClassifierName
我的建议是保留{<name> [‘/’ <rolename>] | ‘/’ <rolename>} [‘:’ <classifiername> [‘,’<classifiername>]*]
名称以避免任何歧义。