用统一建模语言建模基于时间的属性和方法 [英] Modelling time based attributes and methods in UML

查看:9
本文介绍了用统一建模语言建模基于时间的属性和方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要为经过指定时间时发生的方法和随类和序列图一起消失的属性建模。

情况是这样的:工人们在一家使用机器的工厂工作。每台机器可供0-10名工人使用。每台机器都有修理时间限制,工人们必须在修理时间后才能修理它。它也有一个时间限制,如果工人错过了维修,机器就会爆炸,工人就会死亡(比第一个工人大)。有不同的机器。其中一些期限较长,一些期限较短。所有的机器都是机器上油的,持续一段时间,它就会逐渐失去力量,直到消失。该值对所有计算机都相同。

我的类图:

我看到了此解决方案,因为replireTime和BladeTime可以处理计入已用时间的限定值,但我不知道勾号如何增加限定符的值。它行为是否与属性类似?

最后,机油消失是如何工作的?这只是一个必须删除的属性,但我不知道在哪里计算已用时间,然后将其删除。

编辑:

推荐答案

您的序列图似乎没有问题。

但是,您的类关系图具有误导性:

  • 类图是结构图,不是行为图。因此,您并不真正关心已用时间,除非它出现在属性或操作中。
  • MachineTimer之间的导航箭头不利于建议的序列图,该序列图假定Timer知道找到Machine
  • 如果从一般级别考虑,与workerend和worksend的关联最终不是相同的关联吗?
  • 已用时间的限定符不正确。

对于MachineWorker之间基于时间的关联,您可以考虑将其设置为多对多关联,使用一个定义时隙(开始和结束时间,您可以从中计算持续时间)的关联类。您可能会找到here有关如何使用时隙的一些信息(尽管您不需要其他问题中提到的其他约束)。

编辑:查看更新的图表

类关系图看起来更好。建议:

  • ClassSubclass1可能是MachineE1
  • duration关联类是特定于Subclass还是任何Class都是通用的?在后一种情况下,您应该将其画在WorkerClass之间。由于专门化会自动继承其泛化的关联、属性和操作,因此不必对子类重复此操作。
  • 如果Timer必须向对象发送消息?因此,依赖关系似乎错位了。那么它难道不应该与它要向其发送消息的实例的类有关联吗?
  • Timer如何知道新的Duration对象?它是否需要知道持续时间对象,还是不能将刻度发送到机器,机器将刻度转发到持续时间?
在序列图上,与上述建议的影响无关,重要的是要认识到生命线不代表类,而是属于类的对象。因此,类名称的前面应该是:或对象名称和:

第二个图表将集成在第一个图表中,如果您选择记号转发的话。然而,如果你想保留它,你应该问问自己,持续时间如何检查elapsed_time==timeExplode,因为时间分解是机器的属性,而不是持续时间的属性。

这篇关于用统一建模语言建模基于时间的属性和方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆