0

我在房间里有一个风扇。风扇有两种速度1、2、3、4、5。1 是最慢的,5 是最快的。风扇的速度取决于温度。

这些是我对风扇的常规设置:如果温度是冷的 - 速度 = 1,如果温度是正常的 - 速度 = 2,如果温度是热的 - 速度 = 3

假设有人想在我外出时使用我的房间。他想改变速度,如图所示:冷= 2,正常= 3,热= 5

对于这个系统,我做了一个用例——setFanProperties,它可以让我根据我的需要设置风扇速度。

我想为常规设置创建一个用例,并为覆盖这些常规设置创建一个用例。不要让我改变我的系统。我的系统中必须有常规设置和覆盖设置用例。

我该怎么做?我应该扩展 setFanProperties 用例吗?如果可以,那么我可以将 overrideFanProperties 用例作为 setFanProperties 用例的实例吗?

编辑 -

我希望我的系统能够正常工作,如果有覆盖,然后根据覆盖的人更改设置。在此人离开房间的那一刻,使用常规设置。

鉴于这些新信息,扩展仍然是最佳选择吗?

到目前为止,这是我的图表-

扩展用例图

4

1 回答 1

1

我认同。用例 setFanProperties 将使用常规设置配置系统,并提供一个可关联到 overrideFanProperties 的扩展点,该扩展点扩展了 setFanProperties。

UML 2.4.1 表示,如果在扩展用例执行期间到达第一个扩展点时扩展的条件为真,那么扩展用例的所有适当行为片段也将被执行。如果条件为假,则不会发生扩展。然后,如果“覆盖”条件为假,则不会执行 overrideFanProperties 用例并应用默认设置,但如果条件为真,则将执行 overrideFanProperties,有效地覆盖默认设置)。

(顺便说一句,用例是分类器,所以我不认为用例可能是另一个用例的实例,就像一个类不是另一个类的实例一样)。

编辑:

UML 标准规定“关系的条件以及对扩展点的引用可选地显示在附加到相应扩展关系的注释中。

条件是一个约束(可以用自然语言或诸如 OCL 之类的正式语言来表示)。“对扩展点的引用”只是扩展点的名称。(当然,详细程度取决于您要建模的内容以及您的目标读者)。

扩展点位置的描述以合适的形式给出,通常作为普通文本(...)。在此示例中,我选择为每个用例附加注释,详细说明它们的行为(以及可以执行扩展点的位置)。您可以用任何用于记录用例的方式编写它。

于 2013-02-18T07:59:59.740 回答