我正在制作一个类图Classroom
and a Course
class.
我怎样才能表明Classroom
只能有一个Course
一次在其中吗?我知道我可以使用多重性来指定教室可以只开设一门课程,但这并不能完全指定在不同时间可以有除该一门课程之外的其他课程。
第一个解决方案和临时问题
布鲁诺的解决方案 https://stackoverflow.com/a/64192130/3723423 with a 0..1
多重性满足您的明确要求:Classroom
那么确实最多可以容纳一个Course
在任何给定时间。但在这个特定时间,其结果是:
- the
Classroom
不知道其他的Course
其中已经或将要发生的事情。
- 任何其他
Course
这将发生在这个Classroom
未来现在还不知道会发生在哪里。
因此,如果您从事时间表和资源调度业务,则此解决方案将无法满足您到目前为止未提及的其他隐含需求。
你的设计时间都花在哪里了?
UML 仅提供有限的内置时间语义。您需要在模型中明确添加时间。因此,这里缺少的是时间段:
- 时隙不一定与
Course
; An "C++入门“课程可能需要几节课,可能在不同时间在几个房间进行。
- 时隙显然也不受限制
Classroom
.
直观的解决方案
A TimeSlot
可以被视为与关联相关Course
并到一个Classroom
。对于在房间内进行的每门课程,您都必须管理开始和结束时间。将其建模为关联类是非常自然的:
这并没有解决您的“唯一性”要求,但它通过以自然语言表达的约束来促进其表达:{Timeslots for a same Classroom cannot overlap}
。您也可以用 OCL 更正式地表达它。
另一种方法
您还可以以不同的方式分析时间问题,并考虑Classroom
作为一项服务,包括RoomSlots
对应于时间间隔。每个RoomSlot
然后将关联到0..1
当然,正如布鲁诺建议的那样:
这种方法使得时隙的管理更加明显和独立:
- 您可以使用 1 小时的固定时间段,也可以根据需要通过添加、拆分和合并同一房间的时间段来允许动态时间段,始终强制避免重叠。
- 房间可用性的管理可以独立于房间使用情况进行分析和实施
- 不关联
RoomSlots
明确显示给定时间的可用房间(报价),且未分配Courses
显示需求(需求)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)