列表

详情


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

    3-1 类列表

 

    
    

【问题1】(5分)
    根据说明中的描述,给出图3-1中A1和A2处所对应的参与者,UC1和UC2所对应的用例以及(1)处的关系。
【问题2】(7分)
    根据说明中的描述,给出图3-2中C1~C5所对应的类名(表3-1中给出的类名)和(2)~(5)处所对应的多重度。
【问题3】(3分)
    认定类是面向对象分析中非常关键的一个步骤。一般首先从问题域中得到候选类集合,在根据相应的原则从该集合中删除不作为类的,剩余的就是从问题域中认定出来的类。简要说明选择候选类的原则,以及对候选类集合进行删除的原则。

参考答案:

【问题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:使用多个专门的接口比使用单一的总接口要好。一个类对另外一个类的依赖性应当是建立在最小的接口上的。一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。“不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。”这个说得很明白了,再通俗点说,不要强迫客户使用它们不用的方法,如果强迫用户使用它们不使用的方法,那么这些客户就会面临由于这些不使用的方法的改变所带来的改变。

上一题