基于责任分析模式:
概念是我们有一个遵循责任分析模式逻辑的类图。我如何使用给定的函数assignStaffContact()
来分配联系人?
我理解StaffContact
类是一个控件类,Client
、StaffMember
是实体类(我们不关心TimePeriod
类)。
我无法确定哪些类将在分配人员联系人的过程中发挥作用,以便创建正确的序列图(UML)。任意地,必须有一个边界类提供想要的接口。参与者将选择分配人员联系人的情况,哪一个将触发控件类StaffContact
的方法assignStaffContact()
,但是它将与哪一个实体类通信并最终分配人员?
我对类ContactForCampaign
和它与类Client
和StaffMember
连接背后的逻辑感到困惑。我希望我足够好地解释了我的问题和我的思考过程。
1条答案
按热度按时间z2acfund1#
这张图表说明:
StaffContact
示例可以与多个ContactForCampaign
示例相关联ContactForCampaign
的每个示例都与Campaign
的一个示例相关联,并且定义一个StaffMember
对象作为负责人,一个Client
对象作为专员(可能是活动专员)。因此,我们只能猜测
StaffContact::assignContact()
需要知道要添加哪个StaffMember(应该是操作的参数)。由于可以考虑多个ContactForCampaign
示例,因此操作可能还需要知道哪个ContactForCampaign
与分配相关。这可能可以通过Campaign
参数来确定。然后必须考虑两种情况:替换现有ContactForCampaign
的员工,或者在市场活动不存在分配的情况下创建新员工。现在,您已经拥有序列图的所有要素。还要注意,如果创建新的ContactForCampaign
操作系统,则操作需要知道哪个客户将被分配为专员。结果可能如下所示(简化):
请注意,鉴于
StaffMember
的重数为1,StaffContact::removeStaffContact()
似乎并不相关,除非您也考虑删除ContactForCampaign,这将导致丢失有关专员的信息。最后但并非最不重要的是,鉴于StaffContact侧的1重数,它将不是控件类,因为控件原则上仅在用例执行时存在,并且不应该具有到其控制的对象的永久语义链接。