这些是我对粉丝的常规设置: 如果temp很冷 - 速度= 1, 如果temp是正常的 - 速度= 2, 如果温度很高 - 速度= 3
假设我外出时其他人想要使用我的房间。他想改变速度,如图所示: 冷= 2,正常= 3,热= 5
对于这个系统,我创建了一个用例 - setFanProperties,它让我根据我的需要设置风扇速度。
我想为常规设置创建一个用例,并为覆盖这些常规设置创建一个用例。不要让我改变我的系统。我必须在我的系统中有常规设置和覆盖设置用例。
我该怎么做?我应该扩展setFanProperties用例吗?如果没关系,那么我可以使用overrideFanProperties用例来实例化setFanProperties用例吗?
编辑 -
我希望我的系统工作,如果有覆盖,则根据覆盖人员更改设置。当这个人离开房间的那一刻,使用常规设置。
鉴于这些新信息,扩展仍然是最佳选择吗?
到目前为止,这是我的图表 -
答案 0 :(得分:1)
我是这么认为的。用例setFanProperties将使用常规设置配置系统,并提供可与overrideFanProperties关联的扩展点,后者扩展setFanProperties。
UML 2.4.1表示如果在执行扩展用例期间达到第一个扩展点时扩展条件为真,那么扩展用例的所有相应行为片段也将被执行。如果条件为false,则不会发生扩展。然后,如果“override”条件为false,则不执行overrideFanProperties用例并将应用默认设置,但如果条件为true,则overrideFanProperties将被执行,有效地覆盖默认设置。)
(顺便说一下,用例是分类器,所以我不认为用例可能是另一个用例的实例,就像一个类不是另一个类的实例一样)。
编辑:
UML标准说“关系的条件以及对扩展点的引用可选地显示在附加到相应扩展关系的注释中。”
条件是约束(可以用自然语言或OCL等形式语言表示)。 “对扩展点的引用”只是扩展点的名称。 (当然,详细程度取决于您的建模内容以及您的目标读者)。
扩展点位置的描述以合适的形式给出,通常是普通文本(...)。在这个例子中,我选择在每个用例附加一个注释,详细说明他们的行为(以及可以执行扩展点的位置)。您可以以用于记录用例的任何方式编写它。