Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uml 用例是否可能有不同的动作取决于哪个参与者触发它?_Uml_Modeling_Use Case - Fatal编程技术网

Uml 用例是否可能有不同的动作取决于哪个参与者触发它?

Uml 用例是否可能有不同的动作取决于哪个参与者触发它?,uml,modeling,use-case,Uml,Modeling,Use Case,UML允许这样做吗 我可以定义参与者如何与用例交互吗? 换句话说,用例是否可以根据触发它的人而有不同的动作? 例如,在下图中,客户为食物付费,服务员接受付款,但客户和服务员连接到同一用例。为服务员制作一个名为“接收付款”的单独用例不是更方便吗 UML允许这样的事情,但它们都是胡说八道(就像你可以用英语说胡说八道一样)。用例表示其主要参与者的附加值。如果你有一些UC为食物付费,这只是为服务员而不是为客户而设的UC。后者只是一个次要演员,当然,他没有从UC中获得任何附加值——相反。非常容易。UC图表

UML允许这样做吗

我可以定义参与者如何与用例交互吗? 换句话说,用例是否可以根据触发它的人而有不同的动作? 例如,在下图中,客户为食物付费,服务员接受付款,但客户和服务员连接到同一用例。为服务员制作一个名为“接收付款”的单独用例不是更方便吗


UML允许这样的事情,但它们都是胡说八道(就像你可以用英语说胡说八道一样)。用例表示其主要参与者的附加值。如果你有一些UC
为食物付费
,这只是为
服务员
而不是为
客户
而设的UC。后者只是一个次要演员,当然,他没有从UC中获得任何附加值——相反。

非常容易。UC图表对此有专门的词汇

您可以进行付款操作,该操作将
包括
收款和付款操作。这是绝对正常的


不要忘记,用例图不必是项目中最常见的图。UML直言不讳地将图表限制在抽象级别。因此,您可以使用
include
子任务生成更常见的用例,然后使用
include
生成更具体的用例。第一个是要展示给客户的,第二个可能不会。

如果你想按照非常严格的方式描述客户如何作为讨论中的系统与餐厅互动,那么你就没有服务员作为参与者,它是系统的一部分,不属于这一级别的图表


用例是否可能有不同的动作取决于哪个参与者触发它

从技术上说是的,但闻起来很难闻。考虑将共同的部分分成不同的场景(这可能需要创建一个新的共同角色)。无论如何,这与你问题的主要部分并不相关

客户为食物付费,服务员接受付款,但客户和服务员连接到同一个用例

棘手的部分来了。它们并没有连接到同一个用例,只有客户端连接到您的“食物付费”。用例描述了参与者和讨论中的系统之间的相互作用。在“为食物付费”这个系统中,服务员是系统的一部分,在这个层次上,你不需要作为演员

为服务员制作一个名为“接收付款”的单独用例不是更方便吗

实际上,这不是为了方便,而是为了方便。在一些高级的“客户在餐馆吃饭”场景中,您有“客户为食物付费”步骤。您可以通过“系统提供收据”、“客户提供现金”、“系统退回零钱”等步骤将其扩展到一个较低级别的场景中

现在,您可以将“系统提供收据”扩展到子功能级别的另一个场景中,在该场景中,您最终可以将服务员介绍为演员,并描述他如何进入收银机、用徽章解锁收银机、选择表格、单击“打印收据”的步骤。。。在这个层次的图表上,你们将最终把服务员作为一个演员