软件设计师第4部分UML与面向对象设计类
●试题1
阅读下列说明和图.同答问1至问题3.将解答填入答题纸的对应栏内。
图4.1 声音识别门禁系统的体系结构图
【说明】
某声音识别门禁系统的体系结构如图4.1所示,其主要部件有:主机(MainFrame)、锁控器(Lo(,,kController)、声音采集器(VoiceReader)和电控锁(Lock)。
(1)系统中的每个电控锁都有一个惟一的编号。锁的状态有两种:“已锁住”和“未锁住”。
(2)在主机上可以设置每把锁的安全级别以及用户的开锁权限。只有当用户的开锁权限大于或等于锁的安全级别并且锁处于“已锁住”状态时,才能将锁打开。
(3)用户的声音信息、开锁权限以及锁的安全级别都保存在主机上的数据库中。
图4.2声音识别门禁系统的类图
(4)用户开锁时,只需对声音采集器发出声音。声音采集器将发送一个中断事件给锁控器,锁控器从声音采集器读取用户的声音并将声音信息发送到主机,主机根据数据库中存储的信息来判
图4.3声音识别门禁系统的UML序列图
断用户是否具有开锁权限,若有且锁当前处于“已锁住”状态,则将锁打开;否则系统报警。
该系统采用面向对象方法开发,系统中的类以及类之间的关系用UML类图表示,图4.2是该系统类图的一部分;系统的动态行为采用UML序列图表示,图4.3是用户成功开锁的序列图。
【问题1】
图4.2是该系统类图的一部分,依据上述说明中给出的术语,给出类Look的主要属性。
【问题2】
依据上述说明中给出的词语,将图4.3中的(1)~(5)处补充完整。
【问题3】
组装(Composition)和聚集(Aggregation)是UML中两种非常重要的关系。请说明组装和聚集分别表示什么含义?两者的区别是什么?
【问题1】解答:
类Look的主要属性有锁的编号、安全级别、锁的状态。
【问题2】解答:
跟据说明中给出的词语,图4.3中的(1)~(5)分别是:
(1)中断事件
(2)读取用户声音
(3)读取用户开锁权限
(4)去读锁的安全级别
(5)判断用户是否具有开锁权限
【问题3】解答:
组装(Composition)和聚集(Aggregation)是UML中两种非常重要的关系。组装和聚集的含义是:它们都表示整体和部分的关系,组装是聚集的一种形式。区别是:聚集是概念性的,只是区分整体与部分。组装具有很强的归属关系,而且整体与部分的对象生存周期是一致的。
●试题2
阅读下列说明和图例,回答问题l至问题3,将解答填人答题纸的对应栏内。
【说明】
某实行会员制的经销公司主要业务是销售图书和唱片。由于业务需求,该公司委托软件开发
公司A开发一套信息管理系统。该系统将记录所有的图书信息、唱片信息、会员信息、会员购买信息等。A公司决定采用面向对象的分析和设计方法开发此系统。图4.4所示为某类图书或唱片销售时应记录的信息,图4.5描述了系统定义的两个类Book和CD,分别表示图书和唱片的信息。
【问题1】
经过进一步分析,设计人员决定定义一个类Items—on—sale,以表示类Book和CD的共有属性和方法。请采用图4.5中属性和方法的名称给出类Items—on—sale应该具有的属性和方法。(注意:不同名称的属性和方法表示不同的含义,如CD中的composer与Book中的author无任何关系)
【问题2】
为了记录每种图书或唱片的历史记录,引入类CirculationHistory,类中存储的信息是图4.4中所表示的内容。请采用UML表示法将下列四个类问的关系表示出来。
【问题3】
现需了解十大最畅销图书或唱片。为此引入TenPopulate类以存储所有十大畅销图书或CD的名称及其销售数量。下列顺序图(如图4.6所示)描述了某类图书或唱片被销售后成为十大畅销图书或唱片时对象间的消息交互。系统在一次运行过程中,应有(1)个TenPopulate实例对象最合适,一个TenPopulate类实例对象最多需要和(2)个Items—on—sale实例对象交互。
【问题1】解答:
类Items—on—sale应该具有的属性:
Title。方法是Reference title
销售时间,方法是Reference销售时间数量。方法是Reference数量
会员,方法是Reference会员
【问题2】解答:
类Book和CD应该继承自Items—Oil—sale,类CirculationHistory和类Items—on—sale应该是聚合
关系,画出图如左下图:
【问题3】解答: TenPopulate类存储了所有十大畅销图书或CD的名称及其销售数量。由于十大畅销图书或 cD是唯一的,所以系统在一次运行过程中,应有1个TenPopulate实例对象最合适;有多少种图书 或者CD,就有多少个ItemS—on—sale对象与TenPopulate类实例对象交互,所以最多需要和图书或者 CD种类数个Items—on—sale实例对象交互。
●试题3
阅读下列说明以及图4.8和图4.9,回答问题1、问题2和问题3,将解答填入答题纸的对应
栏内。
【说明】
某学校决定开发一个管理所有学生信息的交互式网络系统。系统的功能如下:
(1)浏览学生信息:任何使用Intemet的教师都可以浏览学校所有的学生信息(包括姓名、住址、电话号码等)。
(2)登录:学校授予每个学生一个账号。拥有授权账号的学生可以使用系统提供的页面设置个人密码,并使用该账号和密码向系统注册。
(3)修改个人信息:学生向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。
(4)删除学生信息:只有学校的管理人员才能删除毕业的学生的信息。
系统采用面向对象方法进行开发,在开发过程中认定出的类见表5。
表4.1
编号 |
类名 |
描述 |
1 |
Teachet |
教师 |
2 |
Student List |
学生信息表、记录学校所有学生的信息 |
3 |
Student Info |
学生信息、记录单个学生的信息 |
4 |
Student |
学生 |
5 |
Admistrator |
学生管理员 |
在需求分析阶段,采用UML的用例图(use case diagram)描述系统功能需求,如图4.8所示。
请指出图中的A、B、C和D分别是哪个用例?
【问题2】
在UML中,重复度(Multiplicity)定义了某个类的一个实例可以与另一个类的多少个实例相关联。通常把它写成一个表示取值范围的表达式或者一个具体的值。例如图4.9中的类Teacher和 StudentList、Teacher端(“0…*”表示:一个StudentList的实例可以与0个或多个Teacher的实例相关联;StudentList端的“1”表示:一个Teacher的实例只能与一个StudentList的实例相关)。
请指出图4.9中(1)~(4)处的重复度分别为多少?
【问题3】
类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在面向对象建模中,提供了四种关系:依赖(dependency)、概括(generalization)、关联(associa— tion)和聚集(aggregation)。请分别说明这四种关系的含义,并说明关联和聚集之间的主要区别。
【问题1】解答:
A.登录
B.修改个人信息
C.浏览学生信息
D.删除学生信息
【问题2】解答:
学生列表和学生信息之间是一对多关系,学生与学生信息是一对一关系。所以: (1)0 (2)0..* (3)0..1 (4)0..1
【问题3】解答:
四种关系的含义如下:
依赖表示类之间的使用关系。概括表示一般类和特殊类之间的关系。关联和聚集都表示实例之间的结构关系。关联和聚集之间的区别是:关联指明一个类的对象和另一个类的对象之间的联系;两个类之间的关联表示两个同等地位的类之间的结构关系,这两个类在概念上是同级别的。聚集是一种特殊的关联,它表示整体与部分的关系。
阅读下列说明和有关的图,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某批发商的销售和进货管理的工作流程分别叙述如下:
1.销售工作流程
①购买人提交订货单(每一种商品有一张订货单);
②店员根据订货记录检验该订货单是否有效;
③若经检验没有相应的订货记录,则通知购买人该订货单无效;
④若订货单有效,店员根据订货单上的商品代码核对是否有足够的库存;
⑤若没有足够的库存,店员向购买人发缺货单;
⑥若有足够的库存,店员在订货单上签字,并登记销售单,修改商品主文件中的现有库存数;销售相应的商品,商品清单交购买人。
2.进货工作流程
①采购员提交入库申请单(每一种商品有一张入库申请单);
②店员根据采购计划单验收入库申请单;
③若验收发现没有相应的采购计划,则仓库保管员向采购员发无效申请单;
④若验收合格,则店员向检验员申请商品检验;检验员根据检验结果填写商品检验单。 ⑤如果商品或供货方不合格,则向采购员发出退货单;
⑥如果检验合格,则店员登记入库单,修改商品主文件中的现有库存数,相应的商品入库。
为使于及时了解库存情况、核查销售和进货情况,该批发商决定将上述人工流程由计算机来实现。在设计该系统时,采用了两种方法:结构化方法和面向对象方法。
图4.10给出了商品出入库系统的数据流图,图中的数据流并没有画全,需要考生填补。图4.11给出了采用面向对象方法所认定出的类。
【问题1】
图4.10中缺少了哪些数据流?请指明每条数据流的名称、起点和终点。
【问题2】
给出“订货单”和“入库申请单”这两个类至少应具有的属性。
【问题3】
为建立功能完善的库存管理系统,除了查询、统计、报表输出功能外,还应具有哪些对提高企业效益至关重要的功能?
【问题4】
用面向对象方法设计的类中,有一些类的对象是需要持久存储的,这样的类一般需要映射到关系数据库模式中。请指出图4.11中哪些类需要做这样的映射。
【问题l】解答:
缺少退货和缺货数据流,分别是
名称:退货单,起点:商品检验,终点:采购员
名称:缺货单,起点:订货单检验,终点:购买人
【问题2】解答:
订货单应当有的属性:商品代码,数量,日期,购买人,店员。
入库申请单应当具有的属性:商品代码,数量,供货方,日期,采购员。
【问题3】解答:
当库存量超过限制和不足时提供报警。
【问题4】解答:
除检验单外,其余类都需要出映射。
●试题5
阅读下列说明和流程图,回答问题,把解答写在答卷的对应栏内。
【说明】
本流程图描述了某子程序的处理流程,现要求用白盒测试法对其进行测试。
【流程图】
【问题】
根据判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖(条件组合覆盖)、路径覆盖等5种覆盖标准,从供选择的答案中分别找出满足相应覆盖标准的最小的测试数据组(用①。⑩回答)。 供选择的答案
①x=900,y=900
②x=500,Y=500
③x=900,Y=900 x=500,Y=500
④x=900,y=700 x=400,Y=900
⑤x=900,Y=900 x=500,Y=500 x=900,y=700
⑥x=900,Y=700 x=700,y=900 x=500,Y=500
⑦x=900,y=900 x=500,y=500 x=900,y=700 x=700,Y=900
⑧x=900,Y=900 x=500,Y=500 x=900,Y=500 x=800,Y=800
⑨x=900,Y=900 x=900,Y=700 x=900,Y=300 x=700,Y=900 X=300,Y=900 X=700,Y=700 x=500,Y=500
⑩x=900,Y=900 x=800,Y=800 x=900,y=700 x=900,Y=300 x=700,Y=900 x=300,y=900 X=700,Y=700 x=500,Y=500
试题3解答:
判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。本题中满足该条件的是⑤;条件覆盖通常比判定覆盖强,因为它使一个判定中的每一个条件都取到了两个不同的结果,而判定覆盖则不保证这一点,本题中满足该条件的是④;判定/条件覆盖它的含义是:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。本题中满足该条件的是⑦;多重条件覆盖就是设计多个测试用例,使得各判断表达式中条件的各种组合至少执行一次.很显然,多重条件覆盖包含了条件覆盖,判定覆盖和判定/条件覆盖,是前面几种覆盖标准中最强的。本题中满足该条件的是⑨;路径覆盖就是设计足够多的测试示例,使被测程序中的所有可能路径至少执行一次。路径覆盖保证了程序中的所有路径都至少执行一次,是一种比较全的逻辑覆盖标准。但它没有检查判断表达式中条件的各种组合情况,通常把路径覆盖和多重覆盖结合起来就可以得到查错能力很强的测试用例。本题中满足路径覆盖的是⑤。