gpt4 book ai didi

class - 如何在 UML 中指定 "one at a time"?

转载 作者:行者123 更新时间:2023-12-03 21:10:27 24 4
gpt4 key购买 nike

我正在使用 Classroom 制作类图和 Course类(class)。
我怎样才能表明 Classroom只能有一个Course一次在里面?我知道我可以使用多重性来指定一个教室可以只开设一门类(class),但这并不能完全说明在不同时间可以有除该一门类(class)之外的其他类(class)。

最佳答案

第一个解决方案和时间问题
Bruno's solution0..1多重性满足您的明确要求:a Classroom那么确实最多可以容纳一个Course在任何给定时间。但它的结果是,在这个特定的时间:

  • Classroom不认识其他Course已经或将要发生的事情。
  • 任何其他Course这将发生在 Classroom future 不知道此刻它会发生在哪里。

  • 因此,如果您从事的是时间表和资源调度业务,那么此解决方案将无法满足您迄今为止未提及的其他隐含需求。
    你的设计时间在哪里?
    UML 仅提供有限的内置时间语义。您需要在模型中明确添加时间。因此,这里缺少的是时隙:
  • 时隙不一定绑定(bind)到 Course ; “C++ 入门”类(class)可能需要几节课,这些课可能在不同时间在几个房间进行。
  • 时隙显然不绑定(bind)到 Classroom .

  • 直观的解决方案
    一个 TimeSlot可以看成与一个 Course的关联有关并发送至 Classroom .对于在房间内进行的每门类(class),您都必须管理开始和结束时间。这很自然地建模为关联类:
    enter image description here
    这并不能满足您的“单一性”要求,但它通过以自然语言表达的约束来促进其表达: {Timeslots for a same Classroom cannot overlap} .您也可以在 OCL 中更正式地表达它。
    另一种方法
    您也可以不同地分析时间问题,并考虑 Classroom作为服务提供,由 RoomSlots 组成对应于时间间隔。每个 RoomSlot然后将关联到 0..1布鲁诺建议的类(class):
    enter image description here
    这种方法使时隙的管理更加明显和独立:
  • 您可以使用 1 小时的固定时间段,您可以根据需要通过添加、拆分和合并同一房间的时间段来允许动态时间段,始终强制没有重叠。
  • 房间可用性管理可以独立于房间使用情况进行分析和实现
  • 未关联 RoomSlots明确显示给定时间的可用房间(优惠),未分配 Courses显示需求(需求)。
  • 关于class - 如何在 UML 中指定 "one at a time"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64189923/

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