我想对一个在指定时间过去时发生的方法和一个随类和序列图消失的属性进行建模。
情况是这样的:工人们正在工厂里使用机器工作。每台机器可供0-10名工人使用。每台机器都有一个修理期限,工人必须修理它。它还有一个时间限制,如果工人错过修理,机器就会爆炸,工人就会死亡(比第一个更大)。有不同的机器。有的期限较长,有的期限较短。所有机器都加了机油,这种机油会持续一段时间,并逐渐失去力量直至消失。该值对于所有机器都相同。
My class-diagram:
I saw this solution for the repaireTime and explodeTime can handle with qualifires counting the elapsed time, but I do not see how does a tick increase the qualifiers value. Is it behave like an attribute like this?
最后,机油消失是如何进行的呢?它只是一个必须删除的属性,但我不明白在哪里计算它的经过时间,然后将其删除。
EDIT:
你的序列图看起来没问题。
然而,您的类图具有误导性:
- 类图是结构图,而不是行为图。所以你并不真正关心经过的时间,除非它出现在属性或操作中。
- 之间的导航箭头
Machine
and Timer
不利于提出的序列图,它假设Timer
知道找到Machine
.
- 关联不是与
worker
结束并与works
到底公会不一样,如果从一般层面考虑的话?
- 经过时间的限定符不正确。
对于基于时间的关联Machine
and Worker
,您可以考虑将其设为多对多关联,并使用关联类定义时间段(开始和结束时间,您可以从中计算持续时间)。你可能会发现here https://stackoverflow.com/a/64193807/3723423有关如何使用时间段的一些信息(尽管您不需要其他问题中提到的附加约束)。
编辑:查看更新的图表
类图看起来更好。一些建议:
-
Class
and Subclass1
可能是Machine
and E1
?
- Is the
duration
特定于关联类Subclass
或者对于任何Class
?在后一种情况下,您应该将其绘制在Worker
and Class
。没有必要为子类重复它,因为专业化自动继承其泛化的关联、属性和操作。
- If the
Timer
必须向对象发送消息吗?因此,依赖关系似乎是错误的。那么它不应该与它要发送消息的实例的类有关联吗?
- 如何
Timer
了解新的Duration
物体?它是否需要知道 Duration 对象,或者无法将刻度发送到机器,从而将刻度转发到持续时间?
在序列图中,无论上述建议的影响如何,重要的是要认识到生命线并不代表类,而是代表属于这些类的对象。因此,类名前面应带有:
或对象名称和:
.
如果您要进行蜱虫转发,第二个图表将集成到第一个图表中。然而,如果你想保留它,你应该问自己 Duration 如何检查是否elapsed_time==timeExplode
因为 timeExplode 是机器的属性,而不是持续时间的属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)