问答题
{{B}}阅读下列说明及图13-8和图13-9,回答问题,将解答填入对应栏内。{{/B}}


【说明】
某电话公司决定开发一个管理所有客户信息的交互式网络系统。系统功能如下。
(1)浏览客户信息:任何使用Internet的网络用户都可以浏览电话公司所有的客户信息(包括姓名、住址、电话号码等)。
(2)登录:电话公司授予每个客户一个帐号。拥有授权帐号的客户,可以使用系统提供的页面设置个人密码,并使用该帐号和密码向系统注册。
(3)修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。
(4)删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。系统采用面向对象方法进行开发,在开发过程中认定出的类见表13-3。
{{B}}表13-3开发过程中认定的类{{/B}}
编号
类名
描述
1
InternetClient
网络用户
2
CustomerList
客户信息表,记录公司所有客户的信息
3
Customer
客户信息,记录单个客户的信息
4
CompantCustomer
公司客户
5
InternalClient
公司的管理人员
问答题
【问题1】
在需求分析阶段,采用UML的用例图(use case diagram)描述系统功能需求,如图 13-8所示。请指出图中的A、B、C和D分别是哪个用例?
【正确答案】
【答案解析】A:浏览客户信息;B:修改个人信息;C:登录;D:删除客户信息。
问答题
【问题2】
请指出图13-9中(1)~(4)处的重复度分别为多少?
【正确答案】
【答案解析】(1)1 (2)0..* (3)0..1 (4)0..1
问答题
【问题3】
类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在面向对象建模中提供了4种关系:依赖(dependency)、概括(generalization )、关联(association)和聚集(aggregation)。请分别说明这4种关系的含义,并说明关联和聚集之间的主要区别。
【正确答案】
【答案解析】依赖关系:有两个元素A、B,如果元素A的变化会引起元素B的变化,则称元素B依赖于元素A。 概括关系:描述一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。 关联关系:表示两个类的实例之间存在的某种语义上的联系。 聚集关系:表示一种整体和部分的关系。 聚集关系是关联关系的特例,它是传递和反对称的。 图13-8是一个UML的用例图。在工程的分析阶段,用例图被用来鉴别和划分系统功能,它们把系统分成动作者(actor)和用例。 动作者(actor)表示系统用户能扮演的角色(role)。这些用户可能是人,可能是其他的计算机、一些硬件或者是其他软件系统。判断它们的唯一标准是它们必须要在被划分进用例的系统部分以外。它们必须能刺激系统部分,并接收返回。 用例描述了当动作者之一被系统特定地刺激时系统的活动。这些活动用文本来描述,即描述了触发用例的刺激的本质,输入和输出到其他活动者,以及转换输入到输出的活动。用例文本通常也描述每一个活动在特殊的活动线时可能的错误和系统应采取的补救措施。 图中的网络用户、公司客户、管理人员都是动作者。题目说明中提到了系统有4个功能:浏览客户信息、登录、修改个人信息、删除客户信息。这也就是4个用例,我们现在只需把它们对号入座即可。根据题目说明,我们可以知道任何使用Internet的网络用户都可以浏览电话公司所有的客户信息,在图中符合这一条件的只有A了,所以A应填浏览客户信息。又因为只有公司的管理人员才能删除不再接受公司服务的客户的信息,所以D应填删除客户信息。 剩下就只有登录和修改个人信息两个用例了,那么B究竟是填登录还是修改呢?我们先来看包含和扩展的概念。 两个用例之间的关系可以主要概括为两种情况:一种是用于重用的包含关系,用构造型<<include>>表示;另一种是用于分离出不同行为的扩展关系,用构造型<<extend>>表示。 包含关系:如果可以从两个或两个以上的原始用例中提取公共行为,或者发现能够使用一个构件来实现某一个用例的部分功能是很重要的事,则应该使用包含关系来表示它们,如图13-35所示。 扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种事情,我们将这个用例分为一个主用例和一个或多个辅用例来描述可能更加清晰,如图13-36所示。