1、系统分析师分类真题面向对象方法学及答案解析(总分:100.02,做题时间:90 分钟)一、B单项选择题/B(总题数:21,分数:100.00)已知 3 个类 O、P 和 Q,类 O 中定义了一个私有方法 F1、一个公有方法 F2 和一个受保护的方法 F3;类 P 和类 Q 为类 O 的派生类,其继承方式如下所示:class P:protected O.class Q:public O.在关于方法 F1 的描述中正确的是_。在关于方法 F2 的描述中正确的是_。在关于方法 F3 的描述中正确的是_。(分数:3.51)(1). A.方法 F1 无法被访问 B.只有在类 O 内才能访问方法 F1 C
2、.只有在类 P 内才能访问方法 F1 D.只有在类 Q 内才能访问方法 F1(分数:1.17)A.B.C.D.(2). A.类 O、P 和 Q 的对象都可以访问方法 F2 B.类 P 和 Q 的对象都可以访问方法 F2 C.类 O 和 Q 的对象都可以访问方法 F2 D.只有在类 P 内才能访问方法 F2(分数:1.17)A.B.C.D.(3). A.类 O、P 和 Q 的对象都可以访问方法 F3 B.类 O、P 和 Q 的对象都不可以访问方法 F3 C.类 O 的对象可以访问方法 F3,但类 P 的对象不能访问方法 F3 D.类 P 的对象可以访问方法 F3,但类 Q 的对象不能访问方法 F
3、3(分数:1.17)A.B.C.D.在一个客户信息系统中存在两种类型的客户:个人客户和集团客户。对于个人客户,系统中保存了其客户标识和基本信息(包括姓名、住宅电话和 E-mail);对于集团客户,系统中保存了其客户标识,以及与该集团客户相关的若干个联系人的信息(联系人的信息包括姓名、住宅电话、E-mail、办公电话和职位)。根据上述描述,得到了如下图所示的 UML 类图,其中类“客户”的属性有_;类“人”的属性有_。(分数:4.50)(1). A.客户标识 B.姓名、住宅电话、E-mail C.姓名、住宅电话、办公电话、E-mail、职位 D.客户标识、办公电话、职位(分数:1.50)A.B.
4、C.D.(2). A.客户标识 B.姓名、住宅电话、E-mail C.姓名、住宅电户、办公电话、E-mail、职位 D.客户标识、办公电话、职位(分数:1.50)A.B.C.D.(3).根据下图所示的 UML 类图可知,类 Car 和类 Boat 中的 move()方法_。(分数:1.50)A.B.C.D.在 UML 的通用机制中,_用于把元素组织成组;_是系统中遵从一组接口规范且付诸实现的物理的、可替换的软件模块。(分数:3.00)(1). A.包 B.类 C.接口 D.构件(分数:1.50)A.B.C.D.(2). A.包 B.类 C.接口 D.构件(分数:1.50)A.B.C.D.回调(
5、Callback)函数是面向过程的程序设计语言中常用的一种机制,而设计模式中的_模式就是回调机制的一个面向对象的替代品。该模式的意图是_。(分数:10.50)(1). A.Strategy(策略) B.Adapter(适配器) C.Command(命令) D.Observer(观察者)(分数:1.50)A.B.C.D.(2). A.使原本由于接口不兼容而不能一起工作的那些类可以一起工作 B.将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作 C.定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自
6、动更新 D.使算法可独立于使用它的客户而变化(分数:1.50)A.B.C.D.(3).对 OO 系统的技术度量的识别特征,Berard 定义了导致特殊度量的特征。其中_抑制程序构件的操作细节,只有对访问构件必需的信息被提供给其他希望访问的构件。 A.局部化 B.封装 C.信息隐藏 D.继承(分数:1.50)A.B.C.D.(4).用例从用户角度描述系统的行为。用例之间可以存在一定的关系。在“某图书馆管理系统”用例模型中,所有用户使用系统之前必须通过“身份验证”,“身份验证”有“密码验证”和“智能卡验证”两种方式,则“身份验证”与“密码验证”和“智能卡验证”之间是_关系。 A.关联 B.包含 C
7、.扩展 D.泛化(分数:1.50)A.B.C.D.(5).在 UML 的动态建模机制中,_描述了对象之间动态的交互关系,还描述了交互的对象之间的静态链接关系,即同时反映系统的动态和静态性。 A.状态图 B.顺序图 C.协作图 D.活动图(分数:1.50)A.B.C.D.(6).采用 UML 分析用户需求时,用例 UC1 可以出现在用例 UC2 出现的任何位置,那么 UC1 和 UC2 之间的关系是_。 A.include B.extend C.generalize D.call(分数:1.50)A.B.C.D.(7).关于 UML 中的状态图和活动图的叙述中,_是错误的。 A.状态图和活动图都
8、是对系统的动态方面进行建模的图 B.活动图是状态图的一种特殊情况,其中所有或大多数状态是活动状态 C.状态图显示从状态到状态的控制流,活动图显示的是从活动到活动的控制流 D.在对一个对象的生存期建模时,只能使用状态图(分数:1.50)A.B.C.D.UML 提供了 5 种对系统动态方面建模的图,其中_对系统行为组织和建模;_对系统功能建模,它强调对象之间的控制流;_之间是同构的。(分数:4.50)(1). A.用例图 B.顺序图 C.协作图 D.状态图(分数:1.50)A.B.C.D.(2). A.用例图 B.活动图 C.状态图 D.顺序图(分数:1.50)A.B.C.D.(3). A.状态图
9、和活动图 B.用例图和活动图 C.顺序图和协作图 D.活动图和协作图(分数:1.50)A.B.C.D.下图中左边的 UML 类图描绘的是设计模式中的_模式。右边的 UML 类图描述了该模式的一种应用,其中与左图中的“Creator”对应的类是_。(分数:3.00)(1). A.Command B.Factory Method C.Composite D.Class Adapter(分数:1.50)A.B.C.D.(2). A.Bank B.Account C.Checking D.Savings(分数:1.50)A.B.C.D.UML 采用 4+1 视图来描述软件和软件开发过程,其中_描绘了所
10、设计的并发与同步结构;_表示软件到硬件的映射及分布结构;UML 中的类图可以用来表示 4+1 视图中的_。(分数:4.50)(1). A.逻辑视图(Logical View) B.实现视图(Implementation View) C.进程视图(Process View) D.部署视图(Deployment View)(分数:1.50)A.B.C.D.(2). A.逻辑视图 B.实现视图 C.进程视图 D.部署视图(分数:1.50)A.B.C.D.(3). A.逻辑视图 B.实现视图 C.进程视图 D.部署视图(分数:1.50)A.B.C.D.下图中左边的 UML 类图描绘的是设计模式中的_模
11、式。右边的 UML 类图描述了该模式的一种应用,其中与左图中的“Abstraction”对应的类是_。(分数:3.00)(1). A.Command B.Bridge C.Composite D.Proxy(分数:1.50)A.B.C.D.(2). A.DataAccess B.DataAccessImpl C.CustomerDM D.AccountDM(分数:1.50)A.B.C.D.面向对象系统由对象及其相互间的通信构成。一般来说,面向对象软件的测试可以分为 4 个层次进行。其中,_测试,测试类中定义的每个方法,基本上相当于传统软件测试中的_;_测试,测试一组协同工作的类之间的相互作用。
12、(分数:10.50)(1). A.类层 B.模板层 C.系统层 D.算法层(分数:1.50)A.B.C.D.(2). A.单元测试 B.系统测试 C.确认测试 D.集成测试(分数:1.50)A.B.C.D.(3). A.类层 B.模板层 C.系统层 D.算法层(分数:1.50)A.B.C.D.(4).设计模式(Design pattern)是一套被反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。下面关于设计模式所倡导的基本原则的描述,错误的是_。 A.模块应对扩展开放,而对修改关闭 B.优先使用继承,而不是组合 C.要针对接口编程,而不是针对实现编程 D.抽象不应该依赖于细节,细节应
13、当依赖于抽象(分数:1.50)A.B.C.D.(5).在企业应用系统开发中,方法调用(Method Invocation)和消息(Messaging)机制是两种常用的数据处理与交换方式。下面关于这两种机制的描述,不正确的是_。 A.方法调用一般具有同步特性,而消息机制具有异步的特点 B.从可靠性方面考虑,消息机制比方法调用更有优势 C.从效率方面考虑,一般情况下消息机制比方法调用更有优势 D.消息调用机制可以支持多个数据的发送者和接收者,更加灵活(分数:1.50)A.B.C.D.(6).Java EE 是 Java 领域内企业级应用开发的框架与标准。下面关于采用 Java EE 架构的描述,不
14、正确的是_。 A.Java EE 定义了分布式环境中多层应用系统的架构,是多种 Java 技术的混合体 B.具有典型的三层结构:表现层、业务逻辑层和基础设施层 C.不同的应用系统对底层支持系统的要求可能不同,因此每次开发时应该针对不同的应用需求对底层系统进行二次开发,提供支持接口 D.要严格区分业务逻辑层和表现层,尤其应该注意不要在表现层中混杂业务代码(分数:1.50)A.B.C.D.(7).希赛图书订单处理系统中,“创建新订单”和“更新订单”两个用例都需要检查客户的账号是否正确,为此定义一个通用的用例“核查客户账户”。用例“创建新订单”和“更新订单”与用例“核查客户账户”之间是_。 A.包含
15、关系 B.聚合关系 C.泛化关系 D.关联关系(分数:1.50)A.B.C.D.UML 的事物是对模型中最具有代表性的成分的抽象,_是模型的静态部分,描述概念或物理元素;_用来描述、说明和标注模型的任何元素。(分数:3.00)(1). A.结构事物 B.分组事物 C.行为事物 D.注释事物(分数:1.50)A.B.C.D.(2). A.分组事物 B.注释事物 C.结构事物 D.行为事物(分数:1.50)A.B.C.D.UML 用关系把事物结合在一起,_描述一个事物发生变化会影响另一个事物的语义;_描述特殊元素的对象可替换一般元素的对象。(分数:4.50)(1). A.聚合关系 B.关联关系 C
16、.包含关系 D.依赖关系(分数:1.50)A.B.C.D.(2). A.实现关系 B.聚合关系 C.泛化关系 D.关联关系(分数:1.50)A.B.C.D.(3).希赛公司欲开发一个在线交易系统。为了能够精确表达用户与系统的复杂交互过程,应该采用 UML 的_进行交互过程建模。 A.类图 B.顺序图 C.部署图 D.对象图(分数:1.50)A.B.C.D.在某银行业务的用例模型中,“取款”用例需要等到“存款”用例执行之后才能执行,两个用例之间的关系属于_;“取款”和“存款”两个用例中都需要执行查询余额的功能,将查询余额提取成独立的用例,那么“取款”和“存款”用例与“查询余额”用例之间的关系属于
17、_。(分数:12.00)(1). A.关联关系 B.扩展关系 C.使用关系 D.依赖关系(分数:1.50)A.B.C.D.(2). A.扩展关系 B.使用关系 C.依赖关系 D.继承关系(分数:1.50)A.B.C.D.(3).雇员类含有计算报酬的行为,利用面向对象的_,可以使得其派生类专职雇员类和兼职雇员类计算报酬的行为有相同的名称,但有不同的计算方法。 A.多态性 B.继承性 C.封装性 D.复用性(分数:1.50)A.B.C.D.(4).面向对象分析的一项重要任务是发现潜在对象并进行筛选,错误的做法是删除_。 A.系统范围之外的名词 B.表示事件的名词 C.不具有独特行为的名词 D.一个
18、对象的同义词(分数:1.50)A.B.C.D.(5).面向对象分析的任务不包含_。 A.建模系统功能 B.发现并确定业务对象 C.建模各对象的状态 D.组织对象并确定对象间的关系(分数:1.50)A.B.C.D.(6).关于用例和类,错误的说法是_。 A.两者都属于模型图的构成元素 B.存在抽象用例和抽象类 C.类图描述系统的部分静态视图,用例图描述系统与用户之间的交互视图 D.两者都可以用来描述系统的内部结构(分数:1.50)A.B.C.D.(7)._适用于描述复杂算法的执行流程。 A.活动图 B.状态图 C.类图 D.用例图(分数:1.50)A.B.C.D.(8).在面向对象方法中,信息流
19、是通过向参与者或内部对象发送消息形成的。_用于描述进出系统的信息流。 A.协作图 B.顺序图 C.数据流图 D.流程图(分数:1.50)A.B.C.D.面向对象设计是模型驱动和用例驱动的,整个设计过程将_作为输入,并生成_作为输出。(分数:4.50)(1). A.逻辑数据流图 B.设计文档和用户说明 C.需求类图 D.需求模型(分数:1.50)A.B.C.D.(2). A.物理数据流图 B.设计文档和用户说明 C.设计类图和系统顺序图 D.设计模型(分数:1.50)A.B.C.D.(3).以下关于面向对象设计的叙述中,错误的是_。 A.类的属性用于封装数据,类的方法用于封装行为 B.面向对象设
20、计的基本思想包括抽象、封装和可扩展性 C.对象继承和多态可用来实现可扩展性 D.对象持久化是指将数据库中的数据加载到内存中供应用程序访问(分数:1.50)A.B.C.D.采用面向对象技术设计银行信息系统,“账户类”应设计为_,“账户管理员类”应设计为_。(分数:3.00)(1). A.控制类 B.边界类 C.接口类 D.实体类(分数:1.50)A.B.C.D.(2). A.控制类 B.边界类 C.接口类 D.实体类(分数:1.50)A.B.C.D.遵守面向对象设计原则可以有效地提高系统的复用性和可维护性。应用_原则可扩展已有的系统,并为之提供新的行为;_原则建议在面向对象程序设计中,应尽量针对
21、接口编程,而不是针对实现编程。(分数:4.50)(1). A.开闭 B.里氏替换 C.依赖倒置 D.接口隔离(分数:1.50)A.B.C.D.(2). A.里氏替换 B.依赖倒置 C.接口隔离 D.最小知识(分数:1.50)A.B.C.D.(3).UML 用系统视图描述系统的组织结构。其中,_采用类、子系统、包和用例对系统架构进行设计建模。 A.用例视图 B.逻辑视图 C.实现视图 D.部署视图(分数:1.50)A.B.C.D.面向对象系统分析与设计中,结构图用于描述事物之间的关系,包括_;行为图用于描述参与者与用例之间的交互及参与者如何使用系统,包括_。(分数:3.00)(1). A.用例图
22、、类图、对象图和通信图 B.用例图、类图、对象图和部署图 C.类图、对象图、组件图和部署图 D.类图、对象图、组件图和通信图(分数:1.50)A.B.C.D.(2). A.用例图、顺序图、活动图和部署图 B.用例图、顺序图、活动图和组件图 C.顺序图、活动图、状态图和部署图 D.顺序图、活动图、状态图和通信图(分数:1.50)A.B.C.D.面向对象系统的单元测试包括方法层次的测试、类层次的测试和类树层次的测试。在常见的测试技术中,_属于方法层次的测试,_属于类层次的测试。(分数:3.00)(1). A.等价类划分测试和多态消息测试 B.不变式边界测试和递归函数测试 C.组合功能测试和非模态类
23、测试 D.不变式边界测试和模态类测试(分数:1.50)A.B.C.D.(2). A.等价类划分测试和多态消息测试 B.不变式边界测试和递归函数测试 C.组合功能测试和非模态类测试 D.不变式边界测试和模态类测试(分数:1.50)A.B.C.D.餐厅的点菜过程如图 1 所示,现采用命令(Command)模式来实现该场景。那么下面顺序图中,与命令模式中的类“Command”对应的类是_;与类Receiver 对应的类是_。(分数:6.00)(1). A.Cook B.Customer C.Order D.Waitress(分数:1.50)A.B.C.D.(2). A.Cook B.Customer
24、 C.Order D.Waitress(分数:1.50)A.B.C.D.(3).某网站系统在用户登录时使用数字校验码。为了增强安全性,现在要求在登录校验码中增加字母或图片。如果直接修改原有的生成登录校验码的程序代码,则违反了面向对象设计原则中的_。 A.开闭原则 B.里氏替换原则 C.最少知识原则 D.组合复用原则(分数:1.50)A.B.C.D.(4).UML 用系统视图描述系统的组织结构。其中,_对系统的物理代码的文件和构件进行建模。 A.构件视图 B.物理视图 C.实现视图 D.部署视图(分数:1.50)A.B.C.D.UML 中的事物也称为建模元素,_在模型中属于静态的部分,代表概念上
25、或物理上的元素。这些元素中,_定义了交互操作。(分数:3.00)(1). A.分组事物 B.结构事物 C.行为事物 D.物理事物(分数:1.50)A.B.C.D.(2). A.节点 B.活动类 C.接口 D.协作(分数:1.50)A.B.C.D.在面向对象系统中,有两个类存在整体与部分的关系,如果部分可能同时属于多个整体,则两者之间的关系称为_;如果部分和整体具有统一的生命周期,则两者之间的关系称为_。(分数:3.00)(1). A.聚合关系 B.依赖关系 C.泛化关系 D.组合关系(分数:1.50)A.B.C.D.(2). A.聚合关系 B.依赖关系 C.泛化关系 D.组合关系(分数:1.5
26、0)A.B.C.D.用于增加对象功能的设计模式是_;用于限制对象访问的设计模式是_。(分数:3.51)(1). A.Adapter B.Decorator C.Delegation D.Proxy(分数:1.17)A.B.C.D.(2). A.Adapter B.Decorator C.Delegation D.Proxy(分数:1.17)A.B.C.D.(3).以下关于依赖倒置原则的叙述中,正确的是_。 A.要针对实现编程,而不是针对接口编程 B.在程序中尽量使用具体类进行编程,而少使用抽象层类 C.在程序代码中传递参数时或在组合关系中,尽量引用层次高的抽象层类 D.软件实体应对扩展开放而对
27、修改关闭(分数:1.17)A.B.C.D.系统分析师分类真题面向对象方法学答案解析(总分:100.02,做题时间:90 分钟)一、B单项选择题/B(总题数:21,分数:100.00)已知 3 个类 O、P 和 Q,类 O 中定义了一个私有方法 F1、一个公有方法 F2 和一个受保护的方法 F3;类 P 和类 Q 为类 O 的派生类,其继承方式如下所示:class P:protected O.class Q:public O.在关于方法 F1 的描述中正确的是_。在关于方法 F2 的描述中正确的是_。在关于方法 F3 的描述中正确的是_。(分数:3.51)(1). A.方法 F1 无法被访问 B
28、.只有在类 O 内才能访问方法 F1 C.只有在类 P 内才能访问方法 F1 D.只有在类 Q 内才能访问方法 F1(分数:1.17)A.B. C.D.解析:(2). A.类 O、P 和 Q 的对象都可以访问方法 F2 B.类 P 和 Q 的对象都可以访问方法 F2 C.类 O 和 Q 的对象都可以访问方法 F2 D.只有在类 P 内才能访问方法 F2(分数:1.17)A.B.C. D.解析:(3). A.类 O、P 和 Q 的对象都可以访问方法 F3 B.类 O、P 和 Q 的对象都不可以访问方法 F3 C.类 O 的对象可以访问方法 F3,但类 P 的对象不能访问方法 F3 D.类 P 的
29、对象可以访问方法 F3,但类 Q 的对象不能访问方法 F3(分数:1.17)A.B. C.D.解析:解析 类实际上就是由一组描述对象属性或状态的数据项和作用在这些数据项上的操作(或称为方法、成员函数等)构成的封装体。类的定义由关键字 class 打头,后跟类名,类名之后的括号内是类体,最后以“;”结束。 类与 C 中的结构大致相似,其不同之处在于类中规定了哪些成员可以访问,哪些成员不可以访问。这些都通过访问指明符予以说明。访问指明符有三种,分别是 private、protected 和public。private 成员私有化,除了该类的成员函数以外,谁也不能访问它们。public 成员公有化,
30、程序中的所有函数(不管是类内定义的还是类外定义的),都可以访问这些成员。protected 成员受限保护,只有该类及该类的子类的成员函数才能够访问。在类的成员定义中,如果没有指明符,则系统默认为private。要注意的是,在 C+中,一个类的友元是可以访问该类的所有成员的。 继承的限定也有三种,分别是 private(私有继承)、protected(保护继承)和 public(公有继承)。 在 public 继承时,派生类(子类)的 public、private、protected 型的成员函数可以访问基类中的 public 成员和 protected 成员,派生类的对象仅可访问基类中的 pu
31、blic 成员。 在 private 继承时,派生类的public、private、protected 型的成员函数可以访问基类中的 public 成员和 protected 成员,但派生类的对象不可以访问基类中的任何成员。 在 protected 继承时,派生类的 public、private、protected 型的成员函数可以访问基类中的 public 成员和 protected 成员,但派生类的对象不可以访问基类中的任何成员。 使用 class 关键字定义类时,默认的继承方式是 private,也就是说,当继承方式为 private 继承时,可以省略 private。 在本题中,已知
32、3 个类 O、P 和 Q,类 O 中定义了一个私有方法 F1、一个公有方法 F2 和一个受保护的方法 F3;类 P 和类 Q 为类 O 的派生类,且 P 是保护继承方式,Q 是公有继承方式。因为 F1 是类 O 的私有方法,因此,只有在类 O 内才能访问方法 F1。F2 是类 O 的公有方法,所以类 O 和 Q的对象都可以访问方法 F2。F3 是类 O 的受保护的方法,因此,类 O、P 和 Q 的对象都不能访问方法 F3。在一个客户信息系统中存在两种类型的客户:个人客户和集团客户。对于个人客户,系统中保存了其客户标识和基本信息(包括姓名、住宅电话和 E-mail);对于集团客户,系统中保存了其
33、客户标识,以及与该集团客户相关的若干个联系人的信息(联系人的信息包括姓名、住宅电话、E-mail、办公电话和职位)。根据上述描述,得到了如下图所示的 UML 类图,其中类“客户”的属性有_;类“人”的属性有_。(分数:4.50)(1). A.客户标识 B.姓名、住宅电话、E-mail C.姓名、住宅电话、办公电话、E-mail、职位 D.客户标识、办公电话、职位(分数:1.50)A. B.C.D.解析:(2). A.客户标识 B.姓名、住宅电话、E-mail C.姓名、住宅电户、办公电话、E-mail、职位 D.客户标识、办公电话、职位(分数:1.50)A.B. C.D.解析:解析 因为试题已
34、经给出了有关类的描述。客户包括个人客户和集团客户,因此,“客户”类是“个人客户”类和“集团客户”类的超类,即“客户”类应该有的属性为“个人客户”类和“集团客户”类的公共属性,即客户标识、姓名、住宅电话和 E-mail。但是,在备选答案中,“客户标识”和“姓名、住宅电话和 E-mail”是分开的,因此,第一个空的正确答案为 A。即把“姓名、住宅电话和 E-mail”既作为“个人客户”类的属性,也作为“集团客户”类的属性。 在本题中,“联系人”类是“人”类的子类,“个人客户”类与“人”类发生关联,而“集团客户”类与“联系人”类发生关联。因此,“人”的属性为应该包括“个人客户”类和“集团客户”类的公
35、共属性,即“姓名、住宅电话和 E-mail”。即第二个空的正确答案为 B。(3).根据下图所示的 UML 类图可知,类 Car 和类 Boat 中的 move()方法_。(分数:1.50)A.B. C.D.解析:解析 在面向对象的语言中,可以定义一些不含方法体的方法,将其交给该类的子类根据自己的情况去实现。这样的方法叫抽象方法,包含抽象方法的类叫抽象类。 抽象方法用 abstract 修饰符来定义,任何带有抽象方法的类都必须声明为抽象类。抽象类不能被实例化,也就是不能用 new 关键字去产生对象。抽象方法只需声明,不需要实现。含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方
36、法后才能被实例化,否则这个子类还是个抽象类。 在图中,因为 Transport 类是一个抽象类,因此其子类 Car 和 Boat 的方法 move()是对 Transport 类的方法 move()的重置。在 UML 的通用机制中,_用于把元素组织成组;_是系统中遵从一组接口规范且付诸实现的物理的、可替换的软件模块。(分数:3.00)(1). A.包 B.类 C.接口 D.构件(分数:1.50)A. B.C.D.解析:(2). A.包 B.类 C.接口 D.构件(分数:1.50)A.B.C.D. 解析:解析 在 UML 的通用机制中,包用于把元素组织成组;构件是系统中遵从一组接口规范且付诸实现
37、的物理的、可替换的软件模块。回调(Callback)函数是面向过程的程序设计语言中常用的一种机制,而设计模式中的_模式就是回调机制的一个面向对象的替代品。该模式的意图是_。(分数:10.50)(1). A.Strategy(策略) B.Adapter(适配器) C.Command(命令) D.Observer(观察者)(分数:1.50)A.B.C. D.解析:(2). A.使原本由于接口不兼容而不能一起工作的那些类可以一起工作 B.将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作 C.定义对象间的一种一对多的依赖关系,当一个对象的状态发生
38、改变时,所有依赖于它的对象都得到通知并被自动更新 D.使算法可独立于使用它的客户而变化(分数:1.50)A.B. C.D.解析:解析 Command(命令)模式将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,对请求排队或记录请求目志,以及支持可撤销的操作。 Command 模式抽象出待执行的动作以参数化某对象,我们可用面向过程语言中的回调函数表达这种参数化机制。所谓回调函数,是指函数先在某处注册,而在稍后某个需要的时候被调用。Command 模式是回调机制的一个面向对象的替代品。 Command 模式在不同的时刻指定、排列和执行请求。一个 Command 对象可以有一个与初始请求
39、无关的生存期。如果一个请求的接收者可用一种与地址空间无关的方式表达,那么就可将负责该请求的命令对象传送给另一个不同的进程并在那儿实现该请求。 Command 模式支持取消操作。Command 模式的 Execute 操作可在实施操作前将状态存储起来,在取消操作时这个状态用来消除该操作的影响。Command 接口必须添加一个 Unexecute 操作,该操作取消上一次 Execute 调用的效果。执行的命令被存储在一个历史列表中。可通过向后和向前遍历这一列表并分别调用 Unexecute 和 Execute 来实现重数不限的“取消”和“重做”。 Command 模式支持修改日志,这样当系统崩溃时
40、,这些修改可以被重做一遍。在 Command 接口中添加装载操作和存储操作,可以用来保持变动的一个一致的修改日志。从崩溃中恢复的过程包括从磁盘中重新读入记录下来的命令并用Execute 操作重新执行它们。 Command 模式用构建在原语操作上的高层操作构造一个系统。这样一种结构在支持事务的信息系统中很常见。一个事务封装了对数据的一组变动。Command 模式提供了对事务进行建模的方法。Command 模式有一个公共的接口,可以用同一种方式调用所有的事务。同时,使用该模式也易于添加新事务以扩展系统。(3).对 OO 系统的技术度量的识别特征,Berard 定义了导致特殊度量的特征。其中_抑制程
41、序构件的操作细节,只有对访问构件必需的信息被提供给其他希望访问的构件。 A.局部化 B.封装 C.信息隐藏 D.继承(分数:1.50)A.B.C. D.解析:解析 面向对象的软件和用传统方法开发的软件有本质性不同,为此,对 OO 系统的技术度量必须调整以适应那些区别 OO 和传统软件的特征。Berard 定义了 5 个导致特殊度量的特征,分别是局部化、封装、信息隐蔽、继承和对象抽象技术。 (1)局部化。局部化是软件的一个特征,指明了信息在程序中被集中的方式,例如,针对功能分解的传统方法围绕功能局部化信息,它们典型地以过程模块来实现。数据驱动方法围绕特定的数据结构局部化信息。在 OO 语境中,信
42、息是通过封装数据和处理在类或对象的边界内而集中的。因为传统软件强调函数为局部化机制,软件度量着重于函数的内部结构或复杂性(例如,模块长度、内聚性或环路复杂性等)或函数间相互连接的方式(例如,模块耦合)。因为类是 OO 系统的基本单位,所以,局部化是基于对象的,因此,度量应该应用于作为一个完全实体的类(对象)。此外,在操作(函数、方法)和类间的关系不必是一对一的。因此,反应类协作方式的度量必须能够适应一对多和多对一的关系。(2)封装。Berard 定义封装为“一组项的包装(或捆绑在一起),(对传统软件的)低层封装例子包括记录和数组,而子程序(例如,过程、函数、子例程和段落)是封装的中层机制”。
43、对 OO 系统,封装包含了类的责任,包括其属性(和针对聚合对象的其他类)和操作,以及由特定的属性值定义的类的状态。封装通过将测度的焦点从单个模块改变到数据(属性)和处理模块(操作)包而影响度量。此外,封装鼓励在高抽象层的测度。将此层次的抽象同传统的度量相比较,传统度量着重于布尔条件的计数或代码行数。 (3)信息隐蔽。信息隐蔽隐瞒(或隐藏)了程序构件的操作细节,只将对访问该构件必需的信息提供给那些希望访问它的其他构件。良好设计的 OO 系统应该鼓励信息隐蔽,因此,指明隐蔽所达到程度的度量应该提供对 OO 设计质量的一个指标。 (4)继承。继承是使某对象的责任能够传播到其他对象的机制,出现在类层次
44、的所有层面上。通常,传统的软件不支持该特征。因为继承是很多 OO 系统的关键特征,所以很多 OO 度量是关注于它的。 (5)抽象。抽象是使设计者能够关注程序构件(数据或过程)的本质性细节而不需要考虑低层细节的机制。如 Berard 所说,抽象是一个相对概念,当我们移向更高的抽象级别时,我们忽略了越来越多的细节,即我们提供了对概念或项的更一般化的视图;当我们移向抽象的低层时,我们引入了更多的细节,即我们提供了概念或项的更特定的视图。 因为类是一种抽象,它可以在很多不同的细节级别上并以一系列不同的方式(例如,作为一个操作列表、作为一个状态序列、作为一系列协作)来观察,所以 OO 度量用类的测度(例
45、如,每个应用的每个类的实例数、每个应用的参数化类数,以及参数化类和非参数化类的比率)来表示抽象。(4).用例从用户角度描述系统的行为。用例之间可以存在一定的关系。在“某图书馆管理系统”用例模型中,所有用户使用系统之前必须通过“身份验证”,“身份验证”有“密码验证”和“智能卡验证”两种方式,则“身份验证”与“密码验证”和“智能卡验证”之间是_关系。 A.关联 B.包含 C.扩展 D.泛化(分数:1.50)A.B.C.D. 解析:解析 用例是在系统中执行的一系列动作,这些动作将生成特定参与者可见的价值结果。它确定了一个和系统参与者进行交互并可由系统执行的动作序列。用例模型描述的是外部执行者(act
46、or)所理解的系统功能。用例模型用于需求分析阶段,它的建立是系统开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成的共识。 两个用例之间的关系可以概括为两种情况。一种是用于重用的包含关系,用 include 表示(在 UML 1.x 版本中用 use 表示);另一种是用于分离出不同行为的扩展,用 extend 表示(在 UML 1.x 版本中用 extends 表示)。 (1)包含关系。当可以从两个或两个以上的原始用例中提取公共行为,或者发现能够使用一个构件来实现某一个用例的部分功能很重要时,我们应该使用包含关系来表示它们。 (2)扩展关系。如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种事情,则将这个用例分为一个主用例和一个或多个辅用例描述可能更加清晰。 另外,用例之间还存在一种泛化关系。用例可以被特别列举为一个或多个子用例,这被称为用例泛化。当父用例能够被使用时,任何子用例也可以被使用。例如,我们购买飞机票,既可以是电话订票,也可以是网上订票,则订票用例就是电话订票和网上订票的抽象。 在本题中,由于“身份验证