如果还有未知的制造商,它使用包含的案例添加制造商。但如果它是未知类型,还有extend?这对我来说没有任何意义。
我也不完全确定这对我来说是否有意义。
UML2 规范说包括(第 16.3.5 节):
两个用例之间的包含关系意味着包含用例中定义的行为包含在基本用例的行为中。当两个或多个用例的行为有共同部分时,应使用包含关系。然后将此公共部分提取到单独的用例中,以包含在具有该部分公共的所有基本用例中。由于包含关系的主要用途是重用公共部分,因此基本用例中留下的内容通常本身并不完整,而是依赖于包含的部分才有意义。这反映在关系的方向上,表明基本用例取决于加法,反之则不然。
包含用例的执行类似于子程序调用。在恢复执行包含用例之前,包含用例的所有行为都在包含用例中的单个位置执行。
...
请注意,包含用例不是可选的,并且始终需要包含用例才能正确执行。
和扩展(第 16.3.3 节):
这种关系规定了一个用例的行为可以通过另一个(通常是补充的)用例的行为来扩展。扩展发生在扩展用例中定义的一个或多个特定扩展点。但是请注意,扩展用例是独立于扩展用例定义的,并且独立于扩展用例是有意义的。另一方面,扩展用例通常定义本身不一定有意义的行为。相反,扩展用例定义了一组模块化行为增量,这些增量在特定条件下增强了扩展用例的执行。
...
如果在扩展用例执行过程中到达第一个扩展点时扩展的条件为真,那么扩展用例的所有适当的行为片段也将被执行。如果条件为假,则不会发生扩展。
用例是在 OOD 语言中找到的相当程序化的东西。包含是子例程调用。扩展是可选过程,如条件逻辑或模板方法模式,其中主要方法可能会或可能不会调用更具体的实现。
由于用例是一个分类器,因此您可以在用例之间使用与类之间相同的泛化关系来表示泛化。扩展和包含表示可选和必需的子行为。
如果只能从不同的地方调用 Add 制造商,但 Add new product type 仅存在于这种情况下,那将是有意义的。这是对的吗?谢谢!
它说,每当您添加产品时,您总是会添加新的制造商,有时您可能会添加新的产品类别。它没有说明是否从其他地方调用了任何用例,尽管通常您只会拆分包含的用例(如果它们是)。鉴于现实世界的制造商生产不同的产品,这可能是一个糟糕的例子。