1、软件设计师-面向对象技术(四)及答案解析(总分:152.00,做题时间:90 分钟)一、综合知识试题(总题数:14,分数:32.00)在 UML 类图中,类与类之间存在依赖(Dependency)、关联(Association)、聚合(Aggregation)、组合(Composition)和继承(Inheritance)五种关系,其中, (14) 关系表明类之间的相互联系最弱, (15) 关系表明类之间的相互联系最强,聚合(Aggregation)的标准 UML 图形表示是 (16) 。(分数:2.00)(1).A依赖 B聚合 C组合 D继承(分数:1.00)A.B.C.D.(2).A依赖
2、B聚合 C组合 D继承(分数:1.00)A.B.C.D.(3) 是指把数据以及操作数据的相关方法组合在同一个单元中,使我们可以把类作为软件中的基本复用单元,提高其内聚度,降低其耦合度。面向对象中的 (4) 机制是对现实世界中遗传现象的模拟,通过该机制,基类的属性和方法被遗传给派生类。(分数:2.00)(1).A封装 B多态 C继承 D变异(分数:1.00)A.B.C.D.(2).A封装 B多态 C继承 D变异(分数:1.00)A.B.C.D.1._是指在运行时把过程调用和响应调用所需要执行的代码加以结合。A绑定 B静态绑定 C动态绑定 D继承(分数:1.00)A.B.C.D.下列 UML 类图
3、表示的是 (53) 设计模式。该设计模式中 (54) 。(分数:2.00)(1).A备忘录(Memento) B策略(Strategy)C状态(State) D观察者(Observer)(分数:1.00)A.B.C.D.(2). (分数:1.00)A.B.C.D.开一闭原则(Open-Closed Principle,OCP)是面向对象的可复用设计的基石。开一闭原则是指一个软件实体应当对 (23) 开放,对 (24) 关闭;里氏代换原则(Liskov Substitution Principle,LSP)是指任何 (25) 可以出现的地方, (26) 一定可以出现。依赖倒转原则(Depende
4、nce Inversion Principle,DIP)就是要依赖于 (27) 而不依赖于 (28) ,或者说要针对接口编程,不要针对实现编程。(分数:6.00)(1).A修改 B扩展 C分析 D设计(分数:1.00)A.B.C.D.(2).A修改 B扩展 C分析 D设计(分数:1.00)A.B.C.D.(3).A变量 B常量 C基类对象 D子类对象(分数:1.00)A.B.C.D.(4).A变量 B常量 C基类对象 D子类对象(分数:1.00)A.B.C.D.(5).A程序设计语言 B建模语言 C实现 D抽象(分数:1.00)A.B.C.D.(6).A程序设计语言 B建模语言 C实现 D抽象
5、(分数:1.00)A.B.C.D.2.在选择某种面向对象语言进行软件开发时,不需要着重考虑的因素是,该语言_。A将来是否能够占据市场主导地位 B类库是否丰富C开发环境是否成熟 D是否支持全局变量和全局函数的定义(分数:1.00)A.B.C.D.面向对象分析与设计中的 (8) 是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的;而 (9) 是指予类应当可以替换父类并出现在父类能够出现的任何地方。(分数:2.00)(1).A开闭原则 B替换原则 C依赖原则 D单一职责原则(分数:1.00)A.B.C.D.(2).A开闭原则 B替换原则 C依赖原则 D单一职责原则(分数:1.00)A.
6、B.C.D.(29) 是一种很强的“拥有”关系,“部分”和“整体”的生命周期通常一样。整体对象完全支配其组成部分,包括它们的创建和销毁等; (30) 同样表示“拥有”关系,但有时候“部分”对象可以在不同的“整体”对象之间共享,并且“部分”对象的生命周期也可以与“整体”对象不同,甚至“部分”对象可以脱离“整体”对象而单独存在。上述两种关系都是 (31) 关系的特殊种类。(分数:3.00)(1).A聚合 B组合 C继承 D关联(分数:1.00)A.B.C.D.(2).A聚合 B组合 C继承 D关联(分数:1.00)A.B.C.D.(3).A聚合 B组合 C继承 D关联(分数:1.00)A.B.C.
7、D.3.以下关于类和对象的叙述中,错误的是_。A类是具有相同属性和服务的一组对象的集合B类是一个对象模板,用它仅可以产生一个对象C在客观世界中实际存在的是类的实例,即对象D类为属于该类的全部对象提供了统一的抽象描述(分数:1.00)A.B.C.D.当不适合采用生成子类的方法对已有的类进行扩充时,可以采用 (61) 设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用 (62) 设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用 (63) 设计模式将该类的接口转换成我们希望的接口。(分数:
8、3.00)(1).A命令(Command) B适配器(Adapter)C装饰(Decorate) D享元(Flyweight)(分数:1.00)A.B.C.D.(2).A命令(Command) B适配器(Adapter)C装饰(Decorate) D享元(Flyweight)(分数:1.00)A.B.C.D.(3).A命令(Command) B适配器(Adapter)C装饰(Decorate) D享元(Flyweight)(分数:1.00)A.B.C.D.(46) 是把对象的属性和服务结合成一个独立的系统单元,并尽可能隐藏对象的内部细节; (47) 是指子类可以自动拥有父类的全部属性和服务;
9、(48) 是对象发出的服务请求,一般包含提供服务的对象标识、服务标识、输入信息和应答信息等。(分数:3.00)(1).A继承 B多态 C消息 D封装(分数:1.00)A.B.C.D.(2).A继承 B多态 C消息 D封装(分数:1.00)A.B.C.D.(3).A继承 B多态 C消息 D封装(分数:1.00)A.B.C.D.4.以下关于面向对象方法中继承的叙述中,错误的是_。A继承是父类和予类之间共享数据和方法的机制B继承定义了一种类与类之间的关系C继承关系中的子类将拥有父类的全部属性和方法D继承仅仅允许单重继承,即不允许一个子类有多个父类(分数:1.00)A.B.C.D.在面向对象分析与设计
10、中, (56) 是应用领域中的核心类,一般用于保存系统中的信息以及提供针对这些信息的相关处理行为; (57) 是系统内对象和系统外参与者的联系媒介; (58) 主要是协调上述两种类对象之间的交互。(分数:3.00)(1).A控制类 B边界类 C实体类 D软件类(分数:1.00)A.B.C.D.(2).A控制类 B边界类 C实体类 D软件类(分数:1.00)A.B.C.D.(3).A控制类 B边界类 C实体类 D软件类(分数:1.00)A.B.C.D.下面的 UML 类图描绘的是 (32) 设计模式。关于该设计模式的叙述中,错误的是 (33) 。(分数:2.00)(1).A桥接 B策略 C抽象工
11、厂 D观察者(分数:1.00)A.B.C.D.(2).A该设计模式中的 Observer 需要维护至少一个 Subject 对象B该设计模式中的 ConcreteObserver 可以绕过 Subject 及其子类的封装C该设计模式中一个 Subject 对象需要维护多个 Observer 对象D该设计模式中 Subject 需要通知 Observer 对象其自身的状态变化(分数:1.00)A.B.C.D.二、案例分析试题(总题数:8,分数:120.00)5.阅读下列说明和 Java 代码,在 (n) 处填入正确的字句。说明某公司的组织结构图如图 10.6 所示,现采用组合(Compositi
12、on)设计模式来设计,得到如图 10.7 所示的类图。(分数:15.00)_6.阅读下列说明和 Java 代码,在 (n) 处填入适当的字句。说明已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器如图 10.33 所示。该遥控器共有 4 个按钮,编号分别是 0 至 3,按钮 0 和 2 能够遥控打开电器 1 和电器2,按钮 1 和 3 则能遥控关闭电器 1 和电器 2。由于遥控系统需要支持形式多样的电器,因此,该遥控系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如 10.34 所示。(分数:15.00)_
13、7.阅读下列说明和 C+代码,在 (n) 处填入适当的字句。说明现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如 10.16 所示。(分数:15.00)_8.阅读下列说明和图,回答问题。说明某网上药店允许顾客凭借医生开具的处方,通过网络在该药店购买处方上的药品。该网上药店的基本功能描述如下。(1)注册。顾客在买药之前,必须先在网上药店注册。注册过程中需填写顾客资料以及付款方式(信用卡或者支付宝账户)。此外顾客必须与药店签订一份授权协议书,授权药店可以向其医生确认处方的真伪。(2)登录。已经注册的顾客可以登录到网上药房购买药品。如果是没有注册的顾客,系统将拒绝其
14、登录。(3)录入及提交处方。登录成功后,顾客按照“处方录入界面”显示的信息,填写开具处方的医生的信息以及处方上的药品信息。填写完成后,提交该处方。(4)验证处方。对于已经提交的处方(系统将其状态设置为“处方已提交”),其验证过程为:核实医生信息。如果医生信息不正确,该处方的状态被设置为“医生信息无效”,并取消这个处方的购买请求;如果医生信息是正确的,系统给该医生发送处方确认请求,并将处方状态修改为“审核中”。如果医生回复处方无效,系统取消处方,并将处方状态设置为“无效处方”。如果医生没有在 7 天内给出确认答复,系统也会取消处方,并将处方状态设置为“无法审核”。如果医生在 7 天内给出了确认答
15、复,该处方的状态被修改为“准许付款”。系统取消所有未通过验证的处方,并自动发送一封电子邮件给顾客,通知顾客处方被取消以及取消的原因。(5)对于通过验证的处方,系统自动计算药品的价格并邮寄药品给已经付款的顾客。该网上药店采用面向对象方法开发,使用 UML 进行建模。系统的类图如图 10.2 所示。问题 1 根据说明中的描述,给出图 10.2 中缺少的 C1C5 所对应的类名以及(1)(6)处所对应的多重度。问题 2 图 10.3 给出了“处方”的部分状态图。根据说明中的描述,给出图 10.3 中缺少的 S1S4 所对应的状态名以及(7)(10)处所对应的迁移(transition)名。问题 3
16、图 10.2 中的符号“ ”和“ (分数:15.00)_9.阅读下列说明和图,回答问题。说明某运输公司决定为新的售票机开发车票销售的控制软件。图 10.8 给出了售票机的面板示意图以及相关的控制部件。售票机相关部件的作用如下所述。(1)目的地键盘用来输入行程目的地的代码(例如,200 表示总站)。(2)乘客可以通过车票键盘选择车票种类(单程票、多次往返票和坐席种类)。(3)继续/取消键盘上的取消按钮用于取消购票过程,继续按钮允许乘客连续购买多张票。(4)显示屏显示所有的系统输出和用户提示信息。(5)插卡口接受 MCard(现金卡),硬币口和纸币槽接受现金。(6)打印机用于输出车票。假设乘客总是
17、支付恰好需要的金额而无需找零,售票机的维护工作(取回现金、放入空白车票等)由服务技术人员完成。系统采用面向对象方法开发,使用 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)_10.阅读下列说明
18、和 Java 代码,将应填入 (n) 处的字句写在对应栏内。说明某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表 10.5 所示。表 10.5 飞机种类的特性飞机种类 起飞特征 飞行特征直升机(Helicopter) 垂直起飞(VerticalTakeOff)亚音速飞行(SubSonicFly)客机(AirPlane) 长距离起飞(LongDistanceTakeOff) 亚音速飞行(SubSonicFly)歼击机(Fighter) 长距离起飞(LongDistanceTakeOff) 超音速飞行(SuperSonicFly
19、)鹞式战斗机(Harrier) 垂直起飞(VerticaITakeOff)超音速飞行(SuperSonicFly)为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图 10.12 示。(分数:15.00)_11.阅读下列说明和 C+代码,在 (n) 处填入正确的字句。说明某公司的组织结构图如图 10.4 所示,现采用组合(Composition)设计模式来构造该公司的组织结构,得到如图 10.5 所示的类图。其中 Company 为抽象类,定义了在组织结构图上添加(Add)和删除(Delete)分公司/办事处或者部门的方法接口。类 ConcreteCompany 表
20、示具体的分公司或者办事处,分公司或办事处下可以设置不同的部门。类HRDepartment 和 FinanceDepartment 分别表示人力资源部和财务部。(分数:15.00)_12.阅读下列说明和图,回答问题。说明在线会议审稿系统(ORS:Online Reviewing System)主要处理会议前期的投稿和审稿事务,其功能描述如下。(1)用户在初始使用系统时,必须在系统中注册(register)成为作者或审稿人。(2)作者登录(login)后提交稿件和浏览稿件审阅结果。提交稿件必须在规定提交时间范围内,其过程为先输入标题和摘要、选择稿件所属主题类型、选择稿件所在位置(存储位置)。上述几
21、步若未完成,则重复;若完成,则上传稿件至数据库中,系统发送通知。(3)审稿人登录后可设置兴趣领域、审阅稿件给出意见以及罗列录用和(或)拒绝的稿件。(4)会议委员会主席是一个特殊审稿人,可以浏览提交的稿件、给审稿人分配稿件、罗列录用和(或)拒绝的稿件以及关闭审稿过程。其中关闭审稿过程须包括罗列录用和(或)拒绝的稿件。系统采用面向对象方法开发,使用 UML 进行建模,在建模用例图时,常用的方式是先识别参与者,然后确定参与者如何使用系统来确定用例,每个用例可以构造一个活动图。参与者名称、用例和活动名称分别参见表 10.7、表 10.8 和表 10.9。系统的部分用例图和提交稿件的活动图分别如图 10
22、.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 review 审阅稿件给出意见list accepted/reject
23、ed paper罗列录用或/和拒绝的稿件browse submitted papers浏览提交的稿件表 10.9 活动名称列表名称 说明 名称 说明select paper location 选择稿件位置 upload paper 上传稿件select subject group 选择主题类型 send notification发送通知enter title and abstract输入标题和摘要(分数:15.00)_软件设计师-面向对象技术(四)答案解析(总分:152.00,做题时间:90 分钟)一、综合知识试题(总题数:14,分数:32.00)在 UML 类图中,类与类之间存在依赖(Dep
24、endency)、关联(Association)、聚合(Aggregation)、组合(Composition)和继承(Inheritance)五种关系,其中, (14) 关系表明类之间的相互联系最弱, (15) 关系表明类之间的相互联系最强,聚合(Aggregation)的标准 UML 图形表示是 (16) 。(分数:2.00)(1).A依赖 B聚合 C组合 D继承(分数:1.00)A. B.C.D.解析:(2).A依赖 B聚合 C组合 D继承(分数:1.00)A.B.C.D. 解析:(3) 是指把数据以及操作数据的相关方法组合在同一个单元中,使我们可以把类作为软件中的基本复用单元,提高其内
25、聚度,降低其耦合度。面向对象中的 (4) 机制是对现实世界中遗传现象的模拟,通过该机制,基类的属性和方法被遗传给派生类。(分数:2.00)(1).A封装 B多态 C继承 D变异(分数:1.00)A. B.C.D.解析:(2).A封装 B多态 C继承 D变异(分数:1.00)A.B.C. D.解析:解析 本题考查面向对象方法学的基本概念,是常考点。封装是一种信息隐蔽技术,其目的是把定义与实现分离,保护数据不被对象的使用者直接存取。封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,即将数据和操作数据的源代码进行有机结合,形成“类”。多态性是指同一操作作用于不同对象可以有不同的解释,产生不同
26、的执行结果。继承性是指在某个类的关联中不同类共享属性和操作的一种机制。一个父类可以有多个子类。如果一个予类只有唯一的父类,称为单一继承,如果一个子类拥有多个父类,称为多重继承。据此可知答案为A、C。1._是指在运行时把过程调用和响应调用所需要执行的代码加以结合。A绑定 B静态绑定 C动态绑定 D继承(分数:1.00)A.B.C. D.解析:解析 绑定是指将对象置于运行的状态,允许调用它所支持的操作。根据其执行时间,它分为两种:静态绑定和动态绑定。静态绑定是指在编译时进行绑定;动态绑定是在运行时进行绑定的。下列 UML 类图表示的是 (53) 设计模式。该设计模式中 (54) 。(分数:2.00
27、)(1).A备忘录(Memento) B策略(Strategy)C状态(State) D观察者(Observer)(分数:1.00)A.B.C.D. 解析:(2). (分数:1.00)A. B.C.D.解析:解析 本题考查行为设计模式。(1)备忘录模式(Memento Pattern)应用于保存和跟踪对象的状态,以便于必要的时候可以把对象恢复到以前的状态。备忘录模式(Memento Pattern)可以在不暴露对象的内部结构的情况下完成这样的功能。(2)策略模式是对算法的包装,把使用算法的责任和算法本身分隔开,委派给不同的对象管理。策略模式通常把一系列的算法包装到一系列的策略类里面,作为一个抽
28、象策略类的子类。简单地说,就是把会变化的内容取出并封装起来,以便以后可以轻易地改动或扩充部分,而不影响不需要变化的其他部分。(3)状态模式可以有效地替换充满在程序中的 if.else 语句,将不同条件下的行为封装在一个类里面,再给这些类一个统一的父类来约束他们。(4)观察者模式假定保存数据的对象和显示数据的对象是分开的,负责显示数据的对象观察保存数据对象中的改变。当我们要实现 Observer 模式时,通常将数据对象作为目标(Subject),各个显示数据的对象作为观察者(Observer)。每一个观察者(Observer)通过调用目标(Subject)中的一个公有(public)方法,在他所
29、感兴趣的数据中注册自己。这样,当数据改变时,每一个目标(Subject)通过观察者(Observer)的接口发送更新通知。综上所述,本题 UML 类图表示的显然是观察者设计模式。观察者模式定义的是一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。所以第 47 题选项 A 正确。开一闭原则(Open-Closed Principle,OCP)是面向对象的可复用设计的基石。开一闭原则是指一个软件实体应当对 (23) 开放,对 (24) 关闭;里氏代换原则(Liskov Substitution Princip
30、le,LSP)是指任何 (25) 可以出现的地方, (26) 一定可以出现。依赖倒转原则(Dependence Inversion Principle,DIP)就是要依赖于 (27) 而不依赖于 (28) ,或者说要针对接口编程,不要针对实现编程。(分数:6.00)(1).A修改 B扩展 C分析 D设计(分数:1.00)A.B. C.D.解析:(2).A修改 B扩展 C分析 D设计(分数:1.00)A. B.C.D.解析:(3).A变量 B常量 C基类对象 D子类对象(分数:1.00)A.B.C. D.解析:(4).A变量 B常量 C基类对象 D子类对象(分数:1.00)A.B.C.D. 解析
31、:(5).A程序设计语言 B建模语言 C实现 D抽象(分数:1.00)A.B.C.D. 解析:(6).A程序设计语言 B建模语言 C实现 D抽象(分数:1.00)A.B.C. D.解析:解析 开一闭原则(Open-Closed Principle)可以说是面向对象设计的核心所在。开一闭原则的两个重要特点是“对扩展开放,对修改关闭”,即允许对程序作出扩展(以扩展的方式响应需求的变化),但拒绝对程序作出修改(即修改之前运行良好的程序)。实现“开一闭原则”的重要机制就是“抽象”与“多态”。通过对“变化”进行抽象隔离,使程序具有更好的扩展性与可维护性。里氏代换原则(Liskov Substitutio
32、n Principle,LSP)在实现继承时,子类(subtype)必须能替换掉它们的基类(base type)。如果一个软件实体使用的是基类的话,那么也一定适用于子类;但反过来的代换不成立。依赖倒转原则(Dependence Inversion Principle,DIP)是指在进行业务设计时,与特定业务有关的依赖关系应该尽量依赖接口和抽象类,而不是依赖具体类。具体类只负责相关业务的实现,修改具体类不影响与特定业务有关的依赖关系。2.在选择某种面向对象语言进行软件开发时,不需要着重考虑的因素是,该语言_。A将来是否能够占据市场主导地位 B类库是否丰富C开发环境是否成熟 D是否支持全局变量和全
33、局函数的定义(分数:1.00)A.B.C.D. 解析:解析 任何一种面向对象的语言都会对变量和函数提供相应的处理机制,因此不需要考虑“是否支持全局变量和全局函数的定义”这一项。面向对象分析与设计中的 (8) 是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的;而 (9) 是指予类应当可以替换父类并出现在父类能够出现的任何地方。(分数:2.00)(1).A开闭原则 B替换原则 C依赖原则 D单一职责原则(分数:1.00)A. B.C.D.解析:(2).A开闭原则 B替换原则 C依赖原则 D单一职责原则(分数:1.00)A.B. C.D.解析:解析 本题考查面向对象设计的 5 大原则
34、。单一职责原则:对于一个类来说,应该仅有一个引起它变化的原因,即一个类应该只有一个职责。如果有多个职责,相当于这些职责耦合在一起。因此在构造一个类时,将类的不同职责分离在两个或多个类中,确保引起该类变化的原因只有一个。开放封闭原则:软件组成实体应该是可扩展的,但是不能修改的。开放封闭法则认为我们应该在视图区设计出永远也不需要改变的模块。我们可以通过添加代码来扩展系统的功能,但不能对已有的代码进行修改。替换原则:子类应当可以替换父类并出现在父类能够出现的任何地方。依赖原则:在进行业务设计时,与特定业务有关的依赖关系应该尽量依赖接口和抽象类,而不是依赖具体类。具体类只负责相关业务的实现,修改具体类
35、不影响与特定业务有关的依赖关系。接口分离原则:采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。根据以上分析,答案为 A、B。(29) 是一种很强的“拥有”关系,“部分”和“整体”的生命周期通常一样。整体对象完全支配其组成部分,包括它们的创建和销毁等; (30) 同样表示“拥有”关系,但有时候“部分”对象可以在不同的“整体”对象之间共享,并且“部分”对象的生命周期也可以与“整体”对象不同,甚至“部分”对象可以脱离“整体”对象而单独存在。上述两种关系都是 (31) 关系的特殊种类。(分数:3.00)(1).A聚合 B组合 C继承 D关联(分数:1.00)A.B. C.D.
36、解析:(2).A聚合 B组合 C继承 D关联(分数:1.00)A. B.C.D.解析:(3).A聚合 B组合 C继承 D关联(分数:1.00)A.B.C.D. 解析:解析 本题考查 UML 中关联关系。关联关系连接元素和链接实例,它用连接两个模型元素的实线表示,在关联的两端可以标注关联双方的角色和多重性标记。聚合关系是一种特殊类型的关联关系。它描述元素之间部分和整体的关系,即一个表示整体的模型元素可能由几个表示部分的模型元素聚合而成。组合也是关联关系的一种特例,这种关系比聚合更强,也称为强聚合;它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期
37、结束。3.以下关于类和对象的叙述中,错误的是_。A类是具有相同属性和服务的一组对象的集合B类是一个对象模板,用它仅可以产生一个对象C在客观世界中实际存在的是类的实例,即对象D类为属于该类的全部对象提供了统一的抽象描述(分数:1.00)A.B. C.D.解析:解析 类是具有相同属性和行为的一组对象的集合。在现实世界中,每个实体都是对象,每个对象都有它的属性和操作。一个类定义了一组大体上相似的对象,一个类所包含的方法和数据描述了一组对象的共同行为和属性。类是在对象之上的抽象,对象是类的具体化,是类的实例。一个类可以产生多个对象。因此可知选项 B 的说法是错误的。当不适合采用生成子类的方法对已有的类
38、进行扩充时,可以采用 (61) 设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用 (62) 设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用 (63) 设计模式将该类的接口转换成我们希望的接口。(分数:3.00)(1).A命令(Command) B适配器(Adapter)C装饰(Decorate) D享元(Flyweight)(分数:1.00)A.B.C. D.解析:(2).A命令(Command) B适配器(Adapter)C装饰(Decorate) D享元(Flyweight)
39、(分数:1.00)A.B.C.D. 解析:(3).A命令(Command) B适配器(Adapter)C装饰(Decorate) D享元(Flyweight)(分数:1.00)A.B. C.D.解析:解析 本题考查设计模式的相关知识,是一个重要的知识点。命令模式把一个请求或者操作封装到一个对象中,也就是把发出命令的责任和执行命令的责任分割开,分派给不同的对象,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收、操作是否执行、何时被执行以及是怎么被执行的。适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。它还
40、可以根据参数返还一个合适的实例给客户端将两个不兼容的类结合在一起使用。享元模式以共享的方式高效地支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部,不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态,它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来,将不可以共享的状态从类里剔除出去。享元模式大幅度地降低了内存中对象的数量。装饰模式以对客户端透叫的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性,动态给一个对象增加功能,这些功能可以再动态地撤销。(46) 是把对象的属性和服务结
41、合成一个独立的系统单元,并尽可能隐藏对象的内部细节; (47) 是指子类可以自动拥有父类的全部属性和服务; (48) 是对象发出的服务请求,一般包含提供服务的对象标识、服务标识、输入信息和应答信息等。(分数:3.00)(1).A继承 B多态 C消息 D封装(分数:1.00)A.B.C.D. 解析:(2).A继承 B多态 C消息 D封装(分数:1.00)A. B.C.D.解析:(3).A继承 B多态 C消息 D封装(分数:1.00)A.B.C. D.解析:解析 在基本的面向对象的系统中,对象是基本的运行时的实体,它既包括数据(属性),也包括作用于数据的操作(行为)。所以,一个对象把属性和行为封装
42、为一个整体,封装是一种信息隐蔽技术,它的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。继承是父类和子类之间共享数据和行为的机制。在定义和实现一个类的时候,可以在一个已经存在的类的基础上,把这个已经存在的类所定义的内容作为自己的内容,并加入新的内容。继承可以使子类拥有父类的全部属性和服务。对象之间进行通信的一种机制叫做消息。当一个消息发送给某个对象时,包含要求接收对象去执行某些活动的信息,接收到信息的对象经过解释,予以响应,这种通信机制叫做消息传递。消息内容一般包含提供服务的对象标识、服务标识、输入信息和应答信息等。4.以下关于面向对象方法中继承的叙述中,错误的是_。A继承是父类和予
43、类之间共享数据和方法的机制B继承定义了一种类与类之间的关系C继承关系中的子类将拥有父类的全部属性和方法D继承仅仅允许单重继承,即不允许一个子类有多个父类(分数:1.00)A.B.C.D. 解析:解析 面向对象技术中,继承是父类和子类之间共享数据和方法的机制。这是类之间的一种关系,在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。可以存在多重继承的概念,但不同的程序设计语言可以有自己的规定。在面向对象分析与设计中, (56) 是应用领域中的核心类,一般用于保存系统中的信息以及提供针对这些信息的相关处理行为; (57)
44、 是系统内对象和系统外参与者的联系媒介; (58) 主要是协调上述两种类对象之间的交互。(分数:3.00)(1).A控制类 B边界类 C实体类 D软件类(分数:1.00)A.B.C. D.解析:(2).A控制类 B边界类 C实体类 D软件类(分数:1.00)A.B. C.D.解析:(3).A控制类 B边界类 C实体类 D软件类(分数:1.00)A. B.C.D.解析:解析 实体类(entity class)是应用领域中的核心类,一般是从现实世界中的实体对象归纳和抽象出来的,用于长期保存系统中的信息,以及提供针对这些信息的相关处理行为。一般情况下,实体类的对象实例和应用系统本身有着相同的生命周期
45、。边界类(boundary class)是系统内的对象和系统外的参与者的联系媒体,外界的消息只能通过边界类的对象实例才能发送给系统。控制类(control class)是实体类和边界类之间的润滑剂,是从控制对象中归纳和抽象出来的,用于协调系统内边界类和实体类之间的交互。下面的 UML 类图描绘的是 (32) 设计模式。关于该设计模式的叙述中,错误的是 (33) 。(分数:2.00)(1).A桥接 B策略 C抽象工厂 D观察者(分数:1.00)A.B.C.D. 解析:(2).A该设计模式中的 Observer 需要维护至少一个 Subject 对象B该设计模式中的 ConcreteObserve
46、r 可以绕过 Subject 及其子类的封装C该设计模式中一个 Subject 对象需要维护多个 Observer 对象D该设计模式中 Subject 需要通知 Observer 对象其自身的状态变化(分数:1.00)A.B. C.D.解析:解析 桥接模式将抽象部分和它的实现部分分离,使它们可以独立地变化。策略模式定义一系列的算法,将每个算法封装到具有共同接口的独立的类中,从而使得算法可以相互替换,而不影响客户端。抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。观察者模式定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。ConcreteObserver 类继承于 Observer 类,而 Observer 与 Subject 之间相互依赖,因此ConcreteObserver 不可以绕过 Subject 及其