问答题 阅读下列说明和图,回答下面问题。
[说明]
某城市拟开发一个基于Web的城市黄页,公开发布该城市重要的组织或机构(以下统称为客户)的基本信息,方便城市生活。该系统的主要功能描述如下:
(1)搜索信息:任何使用Internet的网络用户都可以搜索发布在城市黄页中的信息,例如客户的名称、地址、联系电话等。
(2)认证:客户若想在城市黄页上发布信息,需通过系统的认证。认证成功后,该客户成为系统授权用户。
(3)更新信息:授权用户登录系统后,可以更改自己在城市黄页中的相关信息,例如变更联系电话等。
(4)删除客户:对于拒绝继续在城市黄页上发布信息的客户,有系统管理员删除该客户的相关信息。
系统采用面向对象方法进行开发,在开发过程中认定出如下表所示的类。系统的用例图和类图分别如图1和图2所示。
类列表
类名 说明
InternetClient 网络用户
CustomerList 客户集,维护城市黄页上的所有客户信息
Customer 客户信息,记录单个客户的信息
RegisteredClient 授权用户
Administrator 系统管理员

图1 系统用例图

问答题 根据说明中的描述,给出图1中A1和A2处所对应的参与者,UC1和UC2所对应的用例以及(1)处的关系。
【正确答案】
【答案解析】A1:网络用户;A2:授权用户;UC1:认证;UC2:更新信息;(1)extend。 [解析] 本题考查面向对象分析中的类图、用例图。用例图描述了一组用例、参与者及他们之间的关系。包括以下几个部分:用例(Case)、参与者(Actor)。用例视图中的参与者与系统外部的一个实体以某种方式参与了用例的执行过程;用例是一个叙述型文档,用来描述参与使用系统、完成某个事情时发生的顺序。
用例图中,A1可以搜索信息,A2由A1派生且A2参与了两个用例,根据题中的说明(1)和(2),可知A1为网络用户,A2为授权用户;由用例UC1和登录用例之间存在关系,可知UC1为认证用例,因为用户登录必须先认证,所以登录用例是认证的扩展,所以他们之间的关系为extend。对于授权用户还可以更新信息,故UC2为更新信息用例。
问答题 根据说明中的描述,给出图2中C1~C5所对应的类名(表中给出的类名)和(2)~(5)处所对应的多重度。
【正确答案】
【答案解析】C1:InternetClient;C2:Customer;C3:RegisteredClient;C4:Administrator;C5:CustomerList。
(2)1; (3)0..*; (4)1; (5)0..*。 [解析] 本问题考察类图的层次结构和多重度。图中更有两个非常明显的继承结构,即C3和C4继承于C1,且C1与C2是多比一的关系,根据说明(1)中任何网络用户都可以搜索客户信息,即C1为网络用户,C2为客户信息,由此很明显的得出C3和C4在授权用户和系统管理员中选取。根据C2和C5之间存在聚合关系,且C2为客户信息,可以推断C5为客户集。再由C4和C5之间的关联关系,且C5为客户集,能对客户集进行批量操作的用户C4显然就是系统管理员,由此得出C3为授权用户。由此(2)~(5)的多重度就显而易见:(2)为1;(3)为0..*;(4)为1;(5)为0..*。
问答题 认定类是面向对象分析中非常关键的一个步骤。一般首先从问题域中得到候选类集合,再根据相应的原则从该集合中删除不作为类的,剩余的就是从问题域中认定出来的类。简要说明选择候选类的原则,以及对候选类集合进行删除的原则。
【正确答案】
【答案解析】候选类的选择运用了良性依赖原则“不会在实际中造成危害的依赖关系,都是良性依赖”和接口隔离原则(ISP)。 [解析] 候选类的选择运用了良性依赖原则“不会在实际中造成危害的依赖关系,都是良性依赖”。通过分析不难发现,本原则的核心思想是“务实”,很好地揭示了极限编程(Extreme Programming)中“简单设计”和“重构”的理论基础。本原则可以帮助我们抵御“面向对象设计5大原则”以及设计模式的诱惑,以免陷入过度设计(Over-engineering)的尴尬境地,带来不必要的复杂候选类的删除。
候选类的删除运用了接口隔离原则(ISP):不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。这个说得很明白了,再通俗点说不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。