1、软件设计师-面向对象技术(三)及答案解析(总分:335.00,做题时间:90 分钟)一、综合知识试题(总题数:31,分数:65.00)(29) 是一种很强的“拥有”关系,“部分”和“整体”的生命周期通常一样。整体对象完全支配其组成部分,包括它们的创建和销毁等; (30) 同样表示“拥有”关系,但有时候“部分”对象可以在不同的“整体”对象之间共享,并且“部分”对象的生命周期也可以与“整体”对象不同,甚至“部分”对象可以脱离“整体”对象而单独存在。上述两种关系都是 (31) 关系的特殊种类。(分数:3.00)A.聚合B.组合C.继承D.关联A.聚合B.组合C.继承D.关联A.聚合B.组合C.继承D
2、.关联下图属于 UML 中的 (64) ,其中,AccountManagement 需要 (65) 。(分数:2.00)A.组件图B.部署图C.类图D.对象图(2). (分数:1.00)A.实现 IdentityVerifier 接口并被 CreditCardServices 调用B.调用 CreditCardServices 实现的 IdentityVerifier 接口C.实现 IdentityVerifier 接口并被 Logger 调用D.调用 Logger 实现的 IdentityVerifier 接口在面向对象分析与设计中, (56) 是应用领域中的核心类,一般用于保存系统中的信息
3、以及提供针对这些信息的相关处理行为; (57) 是系统内对象和系统外参与者的联系媒介; (58) 主要是协调上述两种类对象之间的交互。(分数:3.00)A.控制类B.边界类C.实体类D.软件类A.控制类B.边界类C.实体类D.软件类A.控制类B.边界类C.实体类D.软件类(5) 以静态或动态的连接方式,为应用程序提供一组可使用的类。 (6) 除了提供可被应用程序调用的类以外,还基本实现了一个可执行的架构。(分数:2.00)A.函数库B.类库C.框架D.类属A.函数库B.类库C.框架D.类属(21) 设计模式将抽象部分与它的实现部分相分离,使它们都可以独立地变化。图 10.22 为该设计模式的类
4、图,其中, (22) 用于定义实现部分的接口。(分数:2.00)A.Singleton(单件)B.Bridge(桥接)C.Composite(组合)D.Facade(外观)(2). (分数:1.00)A.AbstractionB.ConcreteImplementorAC.ConcreteImplementorBD.Implementor1._不是面向对象分析阶段需要完成的。(分数:1.00)A.认定对象B.组织对象C.实现对象及其相互关系D.描述对象间的相互作用2.在选择某种面向对象语言进行软件开发时,不需要着重考虑的因素是,该语言_。(分数:1.00)A.将来是否能够占据市场主导地位B.类
5、库是否丰富C.开发环境是否成熟D.是否支持全局变量和全局函数的定义(46) 是把对象的属性和服务结合成一个独立的系统单元,并尽可能隐藏对象的内部细节; (47) 是指子类可以自动拥有父类的全部属性和服务; (48) 是对象发出的服务请求,一般包含提供服务的对象标识、服务标识、输入信息和应答信息等。(分数:3.00)A.继承B.多态C.消息D.封装A.继承B.多态C.消息D.封装A.继承B.多态C.消息D.封装在 UML 的各种视图中, (10) 显示外部参与者观察到的系统功能; (11) 从系统的静态结构和动态行为角度显示系统内部如何实现系统的功能; (12) 显示的是源代码以及实际执行代码的
6、组织结构。(分数:3.00)A.用例视图B.进程视图C.实现视图D.逻辑视图A.用例视图B.进程视图C.实现视图D.逻辑视图A.用例视图B.进程视图C.实现视图D.逻辑视图如下 UML 类图表示的是 (40) 设计模式。以下关于该设计模式的叙述中,错误是 (41) 。(分数:2.00)A.工厂方法B.策略C.抽象工厂D.观察者A.提供创建一系列相关或相互依赖的对象的接口,而无需指定这些对象所属的具体类B.可应用于一个系统要由多个产品系列中的一个来配置的时候C.可应用于强调一系列相关产品对象的设计以便进行联合使用的时候D.可应用于希望使用已经存在的类,但其接口不符合需求的时候3.在面向对象系统中
7、,用_系表示一个较大的“整体”类包含一个或多个较小的“部分”类。(分数:1.00)A.泛化B.聚合C.概化D.合成4.下面关于面向对象分析与面向对象设计的说法中,不正确的是_。(分数:1.00)A.面向对象分析侧重于理解问题B.面向对象设计侧重于理解解决方案C.面向对象分析描述软件要做什么D.面向对象设计一般不关注技术和实现层面的细节(3) 是指把数据以及操作数据的相关方法组合在同一个单元中,使我们可以把类作为软件中的基本复用单元,提高其内聚度,降低其耦合度。面向对象中的 (4) 机制是对现实世界中遗传现象的模拟,通过该机制,基类的属性和方法被遗传给派生类。(分数:2.00)A.封装B.多态C
8、.继承D.变异A.封装B.多态C.继承D.变异5.以下关于面向对象设计的叙述中,错误的是_。(分数:1.00)A.面向对象设计应在面向对象分析之前,因为只有产生了设计结果才可对其进行分析B.面向对象设计与面向对象分析是面向对象软件过程中两个重要的阶段C.面向对象设计应该依赖于面向对象分析的结果D.面向对象设计产生的结果在形式上可以与面向对象分析产生的结果类似,例如都可以使用 UML 表达已知某子系统为外界提供功能服务,但该子系统中存在很多粒度十分小的类,不便被外界系统直接使用,采用 (19) 设计模式可以定义一个高层接口,这个接口使得这一子系统更加容易使用;当不能采用生成子类的方法进行扩充时,
9、可采用 (20) 设计模式动态地给一个对象添加一些额外的职责。(分数:2.00)A.Facade(外观)B.Singleton(单件)C.Participant(参与者)D.Decorator(装饰)A.Facade(外观)B.Singleton(单件)C.Participant(参与者)D.Decorator(装饰)6.以下关于类和对象的叙述中,错误的是_。(分数:1.00)A.类是具有相同属性和服务的一组对象的集合B.类是一个对象模板,用它仅可以产生一个对象C.在客观世界中实际存在的是类的实例,即对象D.类为属于该类的全部对象提供了统一的抽象描述采用 (50) 设计模式可保证一个类仅有一个
10、实例;采用 (51) 设计模式可将对象组合成树型结构以表示“部分一整体”的层次结构,使用户对单个对象和组合对象的使用具有一致性;采用 (52) 设计模式可动态地给一个对象添加一些额外的职责。(分数:3.00)A.命令(Command)B.单例(Singleton)C.装饰(Decorate)D.组合(Composite)A.命令(Command)B.单例(Singleton)C.装饰(Decorate)D.组合(Composite)A.命令(Command)B.单例(Singleton)C.装饰(Decorate)D.组合(Composite)面向对象分析与设计中的 (8) 是指一个模块在扩展
11、性方面应该是开放的,而在更改性方面应该是封闭的;而 (9) 是指予类应当可以替换父类并出现在父类能够出现的任何地方。(分数:2.00)A.开闭原则B.替换原则C.依赖原则D.单一职责原则A.开闭原则B.替换原则C.依赖原则D.单一职责原则7.以下关于面向对象方法中继承的叙述中,错误的是_。(分数:1.00)A.继承是父类和予类之间共享数据和方法的机制B.继承定义了一种类与类之间的关系C.继承关系中的子类将拥有父类的全部属性和方法D.继承仅仅允许单重继承,即不允许一个子类有多个父类下列 UML 类图表示的是 (53) 设计模式。该设计模式中 (54) 。(分数:2.00)A.备忘录(Mement
12、o)B.策略(Strategy)C.状态(State)D.观察者(Observer)(2). (分数:1.00)A.一个 Subj ect 对象可对应多个 Observer 对象B.Subject 只能有一个 ConcreteSubject 子类C.Observer 只能有一个 ConcreteObserver 予类D.一个 Subject 对象必须至少对应一个 Observer 对象若类 A 仅在其方法 Methodl 中定义并使用了类 B 的一个对象,类 A 其他部分的代码都不涉及类 B,那么类A 与类 B 的关系应为 (59) ;若类 A 的某个属性是类 B 的一个对象,并且类 A 对象
13、消失时,类 B 对象也随之消失,则类 A 与类 B 的关系应为 (60) 。(分数:2.00)A.关联B.依赖C.聚合D.组合A.关联B.依赖C.聚合D.组合当不适合采用生成子类的方法对已有的类进行扩充时,可以采用 (61) 设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用 (62) 设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用 (63) 设计模式将该类的接口转换成我们希望的接口。(分数:3.00)A.命令(Command)B.适配器(Adapter)C.装饰(Decorate
14、)D.享元(Flyweight)A.命令(Command)B.适配器(Adapter)C.装饰(Decorate)D.享元(Flyweight)A.命令(Command)B.适配器(Adapter)C.装饰(Decorate)D.享元(Flyweight)开一闭原则(Open-Closed Principle,OCP)是面向对象的可复用设计的基石。开一闭原则是指一个软件实体应当对 (23) 开放,对 (24) 关闭;里氏代换原则(Liskov Substitution Principle,LSP)是指任何 (25) 可以出现的地方, (26) 一定可以出现。依赖倒转原则(Dependence
15、Inversion Principle,DIP)就是要依赖于 (27) 而不依赖于 (28) ,或者说要针对接口编程,不要针对实现编程。(分数:6.00)A.修改B.扩展C.分析D.设计A.修改B.扩展C.分析D.设计A.变量B.常量C.基类对象D.子类对象A.变量B.常量C.基类对象D.子类对象A.程序设计语言B.建模语言C.实现D.抽象A.程序设计语言B.建模语言C.实现D.抽象(17) 限制了创建类的实例数量,而 (18) 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(分数:2.00)A.命令模式(Command)B.适配器模式(
16、Adapter)C.策略模式(Strategy)D.单例模式(Singleton)A.命令模式(Command)B.适配器模式(Adapter)C.策略模式(Strategy)D.单例模式(Singleton)下面的 UML 类图描绘的是 (32) 设计模式。关于该设计模式的叙述中,错误的是 (33) 。(分数:2.00)A.桥接B.策略C.抽象工厂D.观察者A.该设计模式中的 Observer 需要维护至少一个 Subject 对象B.该设计模式中的 ConcreteObserver 可以绕过 Subject 及其子类的封装C.该设计模式中一个 Subject 对象需要维护多个 Observ
17、er 对象D.该设计模式中 Subject 需要通知 Observer 对象其自身的状态变化UML 类图中类与类之间的关系有五种:依赖、关联、聚合、组合与继承。若类 A 需要使用标准数学函数类库中提供的功能,那么类 A 与标准类库提供的类之间存在 (42) 关系;若类 A 中包含了其他类的实例,且当类 A 的实例消失时,其包含的其他类的实例也消失,则类 A 和它所包含的类之间存在 (43) 关系;若类A 的实例消失时,其他类的实例仍然存在并继续工作,那么类 A 和它所包含的类之间存在 (44) 关系。(分数:3.00)A.依赖B.关联C.聚合D.组合A.依赖B.关联C.聚合D.组合A.依赖B.
18、关联C.聚合D.组合不同的对象收到同一消息可以产生完全不同的结果,这一现象叫做 (35) 。绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定在编译时进行,叫做 (36) ;而 (37) 则在运行时进行,即一个给定的过程调用和执行代码的结合直到调用发生时才进行。(分数:3.00)A.继承B.多态C.动态绑定D.静态绑定A.继承B.多态C.动态绑定D.静态绑定A.继承B.多态C.动态绑定D.静态绑定在 UML 类图中,类与类之间存在依赖(Dependency)、关联(Association)、聚合(Aggregation)、组合(Composition)和
19、继承(Inheritance)五种关系,其中, (14) 关系表明类之间的相互联系最弱, (15) 关系表明类之间的相互联系最强,聚合(Aggregation)的标准 UML 图形表示是 (16) 。(分数:3.00)A.依赖B.聚合C.组合D.继承A.依赖B.聚合C.组合D.继承(3). (分数:1.00)A.B.C.D.8.以下关于面向对象设计的叙述中,错误的是_。(分数:1.00)A.高层模块不应该依赖于底层模块B.抽象不应该依赖于细节C.细节可以依赖于抽象D.高层模块无法不依赖于底层模块9.采用 UML 进行软件设计时,可用_关系表示两类事物之间存在的特殊/一般关系,用聚集关系表示事物
20、之间存在的整体/部分关系。(分数:1.00)A.依赖B.聚集C.泛化D.实现10._是指在运行时把过程调用和响应调用所需要执行的代码加以结合。(分数:1.00)A.绑定B.静态绑定C.动态绑定D.继承二、案例分析试题(总题数:18,分数:270.00)11.阅读下列说明和图,回答问题。说明在线会议审稿系统(ORS:Online Reviewing System)主要处理会议前期的投稿和审稿事务,其功能描述如下。(1)用户在初始使用系统时,必须在系统中注册(register)成为作者或审稿人。(2)作者登录(login)后提交稿件和浏览稿件审阅结果。提交稿件必须在规定提交时间范围内,其过程为先输
21、入标题和摘要、选择稿件所属主题类型、选择稿件所在位置(存储位置)。上述几步若未完成,则重复;若完成,则上传稿件至数据库中,系统发送通知。(3)审稿人登录后可设置兴趣领域、审阅稿件给出意见以及罗列录用和(或)拒绝的稿件。(4)会议委员会主席是一个特殊审稿人,可以浏览提交的稿件、给审稿人分配稿件、罗列录用和(或)拒绝的稿件以及关闭审稿过程。其中关闭审稿过程须包括罗列录用和(或)拒绝的稿件。系统采用面向对象方法开发,使用 UML 进行建模,在建模用例图时,常用的方式是先识别参与者,然后确定参与者如何使用系统来确定用例,每个用例可以构造一个活动图。参与者名称、用例和活动名称分别参见表 10.7、表 1
22、0.8 和表 10.9。系统的部分用例图和提交稿件的活动图分别如图 10.23 和图 10.24 所示。表 10.7 参与者列表名称 说明 名称 说明User 用户 Author 作者Reviewer审稿人 PCChair委员会主席表 10.8 用例名称列表名称 说明 名称 说明login 登录系统 register 注册submit paper 提交稿件 browse review results 浏览稿件审阅结果close reviewing process 关闭审稿过程 assign paper to review 分配稿件给审稿人set preferences 设定兴趣领域 enter
23、 review 审阅稿件给出意见list accepted/rejected paper罗列录用或/和拒绝的稿件browse submitted papers浏览提交的稿件表 10.9 活动名称列表名称 说明 名称 说明select paper location 选择稿件位置 upload paper 上传稿件select subject group 选择主题类型 send notification发送通知enter title and abstract输入标题和摘要(分数:15.00)_12.阅读下列说明和图,回答问题。说明某汽车停车场欲建立一个信息系统,已经调查到的需求如下。(1)在停车场
24、的入口和出口分别安装一个自动栏杆、一台停车卡打印机、一台读卡器和一个车辆通过传感器,示意图如图 10.25 所示。(2)当汽车到达入口时,驾驶员按下停车卡打印机的按钮获取停车卡。当驾驶员拿走停车卡后,系统命令栏杆自动抬起;汽车通过入口后,入口处的传感器通知系统发出命令,栏杆自动放下。(3)在停车场内分布着若干个付款机器。驾驶员将在入口处获取的停车卡插入付款机器,并缴纳停车费。付清停车费之后,将获得一张出场卡,用于离开停车场。(4)当汽车到达出口时,驾驶员将出场卡插入出口处的读卡器。如果这张卡是有效的,系统命令栏杆自动抬起;汽车通过出口后,出口传感器通知系统发出命令,栏杆自动放下。若这张卡是无效
25、的,系统不发出栏杆抬起命令而发出警告信号。(5)系统自动记录停车场内空闲的停车位的数量。若停车场当前没有车位,系统将在入口处显示“车位已满”信息。这时,停车卡打印机将不再出卡,只允许场内汽车出场。表 10.10 类/用例/状态列表用例名 说明 类名 说明 状态名 说明Car entry 汽车进入停车场 Central Computer 停车场信息系统 Idle空闲状态,汽车可以进入停车场Car exit 汽车离开停车场 PaymentMachine 付款机器 Disable 没有车位CarPark 停车场,保存车位信息 Await Entry 等待汽车进入ReportStatistics记录停
26、车场的相关信息 Barrier 自动护栏Await TicketTake等待打印停车卡EntryBarrier 入口的护栏Car entrywhen full没有车位时,汽车请求进入停车场ExitBarrier 出口的护栏AwaitEnable等待停车场内有空闲车位根据上述描述,采用面向对象方法对其进行分析与设计,得到了表 10.10 所示的类/用例/状态列表、图10.26 所示的用例图、图 10.27 示的初始类图以及图 10.28 所示的描述入口自动栏杆行为的 UML 状态图。(分数:15.00)_13.阅读下列说明和 C+代码,在 (n) 处填入适当的字句。说明已知某类库开发商提供了一套
27、类库,类库中定义了 Application 类和 Document 类,它们之间的关系如图10.29 所示,其中,Application 类表示应用程序自身,而 Document 类则表示应用程序打开的文档。Application 类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个 Document 对象表示。当开发一个具体的应用程序时,开发者需要分别创建自己的 Application 和 Document 子类,例如图10.29 中的类 MyApplication 和类 MyDocument,并分别实现 Application 和 Document 类
28、中的某些方法。(分数:15.00)_14.阅读下列说明和 C+代码,在 (n) 处填入适当的字句。说明已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器如图 10.30 所示。该遥控器共有 4 个按钮,编号分别是 0 至 3,按钮 0 和 2 能够遥控打开电器 1 和电器2,按钮 1 和 3 则能遥控关闭电器 1 和电器 2。由于遥控系统需要支持形式多样的电器,因此,该遥控系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如 10.31 所示。(分数:15.00)_15.阅读下列说明和 Java 代码,在 (
29、n) 处填入适当的字句。说明已知某类库开发商提供了一套类库,类库中定义了 Application 类和 Document 类,它们之间的关系如图10.32 所示,其中,Application 类表示应用程序自身,而 Document 类则表示应用程序打开的文档。Application 类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个 Document 对象表示。当开发一个具体的应用程序时,开发者需要分别创建自己的 Application 和 Document 子类,例如图10.32 中的类 MyApplication 和类 MyDocument,并分别
30、实现 Application 和 Document 类中的某些方法。(分数:15.00)_16.阅读下列说明和 Java 代码,在 (n) 处填入适当的字句。说明已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器如图 10.33 所示。该遥控器共有 4 个按钮,编号分别是 0 至 3,按钮 0 和 2 能够遥控打开电器 1 和电器2,按钮 1 和 3 则能遥控关闭电器 1 和电器 2。由于遥控系统需要支持形式多样的电器,因此,该遥控系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如 10.34 所示。(分数
31、:15.00)_17.阅读下列说明和图,回答问题。说明某网上药店允许顾客凭借医生开具的处方,通过网络在该药店购买处方上的药品。该网上药店的基本功能描述如下。(1)注册。顾客在买药之前,必须先在网上药店注册。注册过程中需填写顾客资料以及付款方式(信用卡或者支付宝账户)。此外顾客必须与药店签订一份授权协议书,授权药店可以向其医生确认处方的真伪。(2)登录。已经注册的顾客可以登录到网上药房购买药品。如果是没有注册的顾客,系统将拒绝其登录。(3)录入及提交处方。登录成功后,顾客按照“处方录入界面”显示的信息,填写开具处方的医生的信息以及处方上的药品信息。填写完成后,提交该处方。(4)验证处方。对于已经
32、提交的处方(系统将其状态设置为“处方已提交”),其验证过程为:核实医生信息。如果医生信息不正确,该处方的状态被设置为“医生信息无效”,并取消这个处方的购买请求;如果医生信息是正确的,系统给该医生发送处方确认请求,并将处方状态修改为“审核中”。如果医生回复处方无效,系统取消处方,并将处方状态设置为“无效处方”。如果医生没有在 7 天内给出确认答复,系统也会取消处方,并将处方状态设置为“无法审核”。如果医生在 7 天内给出了确认答复,该处方的状态被修改为“准许付款”。系统取消所有未通过验证的处方,并自动发送一封电子邮件给顾客,通知顾客处方被取消以及取消的原因。(5)对于通过验证的处方,系统自动计算
33、药品的价格并邮寄药品给已经付款的顾客。该网上药店采用面向对象方法开发,使用 UML 进行建模。系统的类图如图 10.2 所示。问题 1 根据说明中的描述,给出图 10.2 中缺少的 C1C5 所对应的类名以及(1)(6)处所对应的多重度。问题 2 图 10.3 给出了“处方”的部分状态图。根据说明中的描述,给出图 10.3 中缺少的 S1S4 所对应的状态名以及(7)(10)处所对应的迁移(transition)名。问题 3 图 10.2 中的符号“ ”和“ (分数:15.00)_18.阅读下列说明和 C+代码,在 (n) 处填入正确的字句。说明某公司的组织结构图如图 10.4 所示,现采用组
34、合(Composition)设计模式来构造该公司的组织结构,得到如图 10.5 所示的类图。其中 Company 为抽象类,定义了在组织结构图上添加(Add)和删除(Delete)分公司/办事处或者部门的方法接口。类 ConcreteCompany 表示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepartment 和 FinanceDepartment 分别表示人力资源部和财务部。(分数:15.00)_19.阅读下列说明和 Java 代码,在 (n) 处填入正确的字句。说明某公司的组织结构图如图 10.6 所示,现采用组合(Composition)设计模式来设计,得到
35、如图 10.7 所示的类图。(分数:15.00)_20.阅读下列说明和图,回答问题。说明某运输公司决定为新的售票机开发车票销售的控制软件。图 10.8 给出了售票机的面板示意图以及相关的控制部件。售票机相关部件的作用如下所述。(1)目的地键盘用来输入行程目的地的代码(例如,200 表示总站)。(2)乘客可以通过车票键盘选择车票种类(单程票、多次往返票和坐席种类)。(3)继续/取消键盘上的取消按钮用于取消购票过程,继续按钮允许乘客连续购买多张票。(4)显示屏显示所有的系统输出和用户提示信息。(5)插卡口接受 MCard(现金卡),硬币口和纸币槽接受现金。(6)打印机用于输出车票。假设乘客总是支付
36、恰好需要的金额而无需找零,售票机的维护工作(取回现金、放入空白车票等)由服务技术人员完成。系统采用面向对象方法开发,使用 UML 进行建模。系统的顶层用例图和类图分别如图 10.9 和图 10.10 所示。问题 1 根据说明中的描述,给出图 10.9 中 A1 和 A2 所对应的参与者,U1 所对应的用例,以及(1)、(2)处所对应的关系。问题 2 根据说明中的描述,给出图 10.10 中缺少的 C1C4 所对应的类名以及(3)(6)处所对应的多重度。问题 3 图 10.10 中的类图设计采用了中介者(Mediator)设计模式,请说明该模式的内涵。(分数:15.00)_21.阅读下列说明和
37、C+代码,在 (n) 处填入适当的字句。说明某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表 10.4 所示。表 10.4 飞机种类及特性飞机种类 起飞特征 飞行特征直升机(Helicopter) 垂直起飞(VerticalTakeOff)亚音速飞行(SubSonicFly)客机(AirPlane) 长距离起飞(LongDistanceTakeOff) 亚音速飞行(SubSonicFly)歼击机(Fighter) 长距离起飞(LongDistanceTakeOff) 超音速飞行(SuperSonicFly)鹞式战斗机(Har
38、rier) 垂直起飞(VerticalTakeOff)超音速飞行(SuperSonicFly)为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图 10.11 所示。(分数:15.00)_22.阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在对应栏内。说明某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表 10.5 所示。表 10.5 飞机种类的特性飞机种类 起飞特征 飞行特征直升机(Helicopter) 垂直起飞(VerticalTakeOff)亚音速飞行(SubSonicFly)
39、客机(AirPlane) 长距离起飞(LongDistanceTakeOff) 亚音速飞行(SubSonicFly)歼击机(Fighter) 长距离起飞(LongDistanceTakeOff) 超音速飞行(SuperSonicFly)鹞式战斗机(Harrier) 垂直起飞(VerticaITakeOff)超音速飞行(SuperSonicFly)为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图 10.12 示。(分数:15.00)_23.阅读下列说明和 UML 图,回答问题。说明某企业为了方便员工用餐,餐厅开发了一个订餐系统(Cafeteria Ordering
40、 System,COS),企业员工可通过企业内联网使用该系统。企业的任何员工都可以查看菜单和今日特价。系统的顾客是注册到系统的员工,可以订餐(如果未登录,需先登录)、注册工资支付、预约规律的订餐,在特殊情况下可以覆盖预订。餐厅员工是特殊顾客,可以进行备餐、生成付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统。菜单管理员是餐厅特定员工,可以管理菜单。送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。顾客订餐过程如下。(1)顾客请求查看菜单。(2)系统显示菜单和今日特价。(3)顾客选菜。(4)系统显示订单
41、和价格。(5)顾客确认订单。(6)系统显示可送餐时间。(7)顾客指定送餐时间、地点和支付方式。(8)系统确认接收订单,然后发送 Email 给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工。系统采用面向对象方法开发,使用 UML 进行建模。系统的顶层用例图和一次订餐的活动图初稿分别如图10.13 和图 10.14 所示。问题 1 根据说明中的描述,给出图 10.13 中 A1 和 A2 所对应的参与者。问题 2 (分数:15.00)_24.阅读下列说明和 C+代码,在 (n) 处填入适当的字句。说明现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如 10.1
42、6 所示。(分数:15.00)_25.阅读下列说明和 Java 代码,在 (n) 处填入适当的字句。说明现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如图 10.17 所示。(分数:15.00)_26.阅读下列说明和图,回答问题。说明某银行计划开发一个自动存提款机模拟系统(ATM System)。系统通过读卡器(CardReader)读取 ATM 卡;系统与客户(Customer)的交互由客户控制台(CustomerConsole)实现;银行操作员(Operator)可控制系统的启动(System Startup)和停止(System Shutdown);系统
43、通过网络和银行系统(Bank)实现通信。当读卡器判断用户已将 ATM 卡插入后,创建会话(Session)。会话开始后,读卡器进行读卡,并要求客户输入个人验证码(PIN)。系统将卡号和个人验证码信息送到银行系统进行验证。验证通过后,客户可从菜单选择如下事务(Transaction)。(1)从 ATM 卡账户取款(Withdraw)。(2)向 ATM 卡账户存款(Deposit)。(3)进行转账(Transfer)。(4)查询(Inquire)ATM 卡账户信息。一次会话可以包含多个事务,每个事务处理也会将卡号和个人验证码信息送到银行系统进行验证。若个人验证码错误,则转个人验证码错误处理(Inv
44、alid PIN Process)。每个事务完成后,客户可选择继续上述事务或退卡。选择退卡时,系统弹出 ATM 卡,会话结束。系统采用面向对象方法开发,使用 UML 进行建模。系统的顶层用例图如图 10.18 所示,一次会话的序列图(不考虑验证)如图 10.19 所示。消息名称参见表 10.6。(分数:15.00)_27.阅读下列说明和 C+代码,在 (n) 处填入适当的字句。说明现欲实现一个图像浏览系统,要求该系统能够显示 BMP、JPEG 和 GIF 三种格式的文件,并且能够在Windows 和 Linux 两种操作系统上运行。系统首先将 BMP、JPEG 和 GIF 三种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,采用桥接(Bridge)设计模式进行设计所得类图如图 10.20 所示。采用该设汁模式的原因在于:系统解析 BMP、GIF 与 JPEG 文件的代码仅与文件格式相关,而在屏幕上显示像素矩阵的代码则仅与操作系统相关。(分数:15.00)_
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1