java 我如何将来自分析模式的动作解释为序列图?

jgwigjjp  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(63)

基于责任分析模式:

概念是我们有一个遵循责任分析模式逻辑的类图。我如何使用给定的函数assignStaffContact()来分配联系人?
我理解StaffContact类是一个控件类,ClientStaffMember是实体类(我们不关心TimePeriod类)。
我无法确定哪些类将在分配人员联系人的过程中发挥作用,以便创建正确的序列图(UML)。任意地,必须有一个边界类提供想要的接口。参与者将选择分配人员联系人的情况,哪一个将触发控件类StaffContact的方法assignStaffContact(),但是它将与哪一个实体类通信并最终分配人员?
我对类ContactForCampaign和它与类ClientStaffMember连接背后的逻辑感到困惑。我希望我足够好地解释了我的问题和我的思考过程。

z2acfund

z2acfund1#

这张图表说明:

  • 一个StaffContact示例可以与多个ContactForCampaign示例相关联
  • ContactForCampaign的每个示例都与Campaign的一个示例相关联,并且定义一个StaffMember对象作为负责人,一个Client对象作为专员(可能是活动专员)。

因此,我们只能猜测StaffContact::assignContact()需要知道要添加哪个StaffMember(应该是操作的参数)。由于可以考虑多个ContactForCampaign示例,因此操作可能还需要知道哪个ContactForCampaign与分配相关。这可能可以通过Campaign参数来确定。然后必须考虑两种情况:替换现有ContactForCampaign的员工,或者在市场活动不存在分配的情况下创建新员工。现在,您已经拥有序列图的所有要素。还要注意,如果创建新的ContactForCampaign操作系统,则操作需要知道哪个客户将被分配为专员。
结果可能如下所示(简化):

请注意,鉴于StaffMember的重数为1,StaffContact::removeStaffContact()似乎并不相关,除非您也考虑删除ContactForCampaign,这将导致丢失有关专员的信息。
最后但并非最不重要的是,鉴于StaffContact侧的1重数,它将不是控件类,因为控件原则上仅在用例执行时存在,并且不应该具有到其控制的对象的永久语义链接。

相关问题