参考答案:
【问题1】
A1网络用户;A2授权用户;UC1更新信息;UC2认证;
(1)<<include>>
【问题2】
C1:InternetClient;C2:CustomerList;C3:Administrator;C4:RegisteredClient
C5:Customer;
(2)1 ;(3)0…*;(4)0..1;(5)0..1
【问题3】
候选类的选择运用了良性依赖原则“不会在实际中造成危害的依赖关系,都是良性依赖”和接口隔离原则(ISP)。
详细解析:
本题考查面向对象分析中的类图、用例图。
【问题1】
用例图中,A1可以搜索信息,A2由A1派生且A2参与了两个用例,根据题中的说明(1)和(2),可知A1为网络用户,A2为授权用户;由用例UC1和登录用例之间存在关系,可知UC1为更新信息,因为更新信息前必须登录,所以更新信息用例包含登录用例,它们之间的关系为include。
【问题2】
本问题查考类图。考查类图的层次结构和多重度。
首先根据C2和C5之间存在聚合关系,满足要求的类应该是客户与客户集,又因为其中C2为整体,C5为部分,所以C2为客户集,C5为客户信息。
又因为图中更有两个非常明显的继承结构,即C3和C4继承与C1,且C1与C2是多对一的关系,根据C2为 客户集 ,又因为说明(1)中任何网络用户都可以搜索客户信息,即C1为网络用户,由此很明显得出C3和C4在授权用户和系统管理员中选取。再由C4和C5之间的关联关系,且C5为客户信息 ,通过题意可以了解到 客户信息 是由其成为授权用户之后,自己发布与管理的,而管理员在此并未进行职责描述(管理员对客户的删除,可以通过其父类对客户集进行操作),可以不管他。用户C4显然就是授权用户,由此得出C3为管理员。由此(2)~(5)的多重度就显而易见,(2)为1,(3)为0…*,(4)为1,(5)为1。
【问题3】
候选类的选择运用了良性依赖原则“不会在实际中造成危害的依赖关系,都是良性依赖”和接口隔离原则(ISP)。ISP:使用多个专门的接口比使用单一的总接口要好。一个类对另外一个类的依赖性应当是建立在最小的接口上的。一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。“不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。”这个说得很明白了,再通俗点说,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。