软件设计师上午76(2)_第1页
软件设计师上午76(2)_第2页
软件设计师上午76(2)_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 模拟 软件设计师上午 76选择题 第 1 题: 在面向对象技术中,有多种不同的多态形式,其中参数多态和 ( ) 称为通用多 态。A. 重置多态B. 过载多态C. 隐含多态D. 包含多态参考答案: D在面向对象技术中, 对象在收到消息后要予以响应, 不同的对象收到同一消息可 产生完全不同的结果, 这一现象称为多态。 多态有多种不同的形式, 其中参数多 态和包含多态称为通用多态,过载多态和强制多态成为特定多态。参数多态应用比较广泛, 被称为最纯的多态。 这是因为同一对象、 函数或过程能以 一致的形式用于不同的类型。 包含多态最常见的例子就是子类型化, 即一个类型 是另一类型的子类型。 过载多态是

2、同一变量被用来表示不同的功能, 通过上下文 以决定一个类所代表的功能。 即通过语法对不同语义的对象使用相同的名, 编译 能够消除这一模糊。 强制多态是通过语义操作把一个变元的类型加以变换, 以符 合一个函数的要求, 如果不做这一强制性变换将出现类型错误。 类型的变换可在 编译时完成,通常是隐式地进行,当然也可以在动态运行时来做。知识模块:面 向对象方法 第 2 题: 以下描述中,不正确的是 ( ) 。A. 类是对象的抽象,对象是类的实例B. 类是一组具有相同属性和方法的对象的集合C. 每个类都可以被实例化D. 对象是指一组属性及这组属性上的专用操作的封装体参考答案: C本题主要考查类和对象的概

3、念。在计算机系统中,对象是指一组属性及这组属性上的专用操作的封装体,它由对象标识 (名称)、属性(状态、数据、 成员变量,也可以是另一个对象 )和服务( 操作、行为、方法 ) 三个要素组成。对 象是系统中用来描述客观事物的一个实体, 它们被封装为一个整体, 以接口的形 式对外提供服务。而类是一组具有相同属性和方法的对象抽象。一个类中的每个对象都是这个类的一个实例。 在系统分析和设计时, 通常要把注意力 集中在类上, 而不是具体的对象上。 每个类一般都有实例, 没有实例的类是抽象 类。抽象类不能被实例化(不能用new关键字去产生对象),抽象方法只需声明, 而无须实现。是否建立了丰富的类库是衡量一

4、个 00程序设计语言成熟与否的重 要标志之一。知识模块:面向对象方法 第 3 题:在UML勺通用机制中,()是系统中遵从一组接口规范且付诸实现的物理、司替 换的软件模块。A. 包B. 类C. 接口D. 构件参考答案: D在UML中,把组织模型的组块称为包。包是用于把元素组织成组的通用机制, 有 助于组织模型中的元素, 使得对它们的理解变得更容易, 也使得用户能够控制对 包的内容的访问,从而控制系统体系结构中的接缝。接口是描述某个类或构件的一个服务操作集。 也就是说, 接口是类或构件对其他类或构件提供的 功能、操作、行为。构件是系统中遵从一组接口且提供实现的物理、可替换的部分。可以利用构件为可能

5、存在于结点上的物理事物 (如可执行体、库、 表、文件及文档等 )进行建模。一般情况下,构件表示将类、接口和协作等逻辑 元素打包而形成的物理模块。 好的构件应采用定义良好的接口来定义灵活的抽象, 以便将来可以用更新且接口兼容的构件来替换较旧的构件。 知识模块:面向对象 方法 第 4 题:UML的事物是对模型中最具有代表性的成分的抽象,()是模型的动态部分,描 述了跨越时间和空间的行为。A. 结构事物B. 分组事物C. 行为事物D. 注释事物参考答案: C本题考查面向对象建模语言中的事物概念。在UML中,有4种事物:(1)结构事物是UML模型中的名词。它们通常是模型的静态部分,描述概念或物理元素。

6、(2)行为事物是UML模型的动态部分。它们是模型中的动词,描述了跨越时间和空间的行为。(3)分组事物是UML模型的组织部分。它们是一些由模型分解成的 “盒子”。(4) 注释事物是 UML模型的解释部分。 这些注释事物用来描述、 说明和标注模型的任何元素。 知识模 块:面向对象方法第 5 题: 下列有关面向对象方面的描述,不正确的是 ( ) 。A. 面向对象要求针对接口编程,而不要针对实现编程B. 接口与实现不可分割C. 设计职责单一的类D .尽量使用已有的类库参考答案: B本题主要考查面向对象的基本知识。“针对接口编程,而不是针对实现编程”是面向对象设计的 7 大原则之一,遵循此原则有以下几个

7、方面的好 处。(1) 使用者不必知道其使用对象的具体所属类。(2) 使用者无须知道特定类, 只需知道它们所期望的接口。(3) 一个对象可以很容易地被 (实现了相同接口的 )另一个对象所替换。(4) 对象间的连接不必硬绑定到一个具体类的对象上,因此增加了灵活性。另外,在这种方式下, 接口与实现是可以分割的, 这样利于变化, 也符合面向对象的根本意图 (便于需求的改变 )。设计职责单一的类也是 7 大设计原则中的一个,因为如果一个类有一个以上的职责, 这些职责就耦合在了一起, 这会导致脆弱的 设计。比如,当一个职责发生变化时,就可能会影响其他的职责。另外,多个职 责耦合在一起,也会影响程序的复用性

8、。类库,简单地说,就是很多类的集合,而这些类都是已经定义好的了,在编程时,可以直接使用,使用类库 的好处主要有两个: 一个是可以减少出差的概率; 另外一个是可以节省大量的时 间和经历。因此,如果有类库可供使用,肯定是要尽量使用已有的类库。知识模 块:面向对象方法 第 6 题:已知两个类O P,类0中定义了一个私有方法 Fvsub1v/sub v和一个公有方 法F2 ;类P中定义了一个公有方法 F3,类P为类0 的派生类。它们的继承方式如下所示。class P :private 0.;在关于类P的描述中正确的是()。A. 类 P 的对象可以访问 F1 ,但不能访问 F2B. 类 P 的对象可以访

9、问 F2 ,但不能访问 F1C. 类P的对象既可以访问 F1,也可以访问F2D. 类P的对象既不能访问 F1,也不能访问F2参考答案: D本题主要考查继承中的一些基本知识。在C+-中,类的继承主要有如下3种方式:公有继承(public)。公有继承的特点是基类的公有成员和保护成员作为派生类的成员时, 它们都保持原有的状态, 而基类的私有成员 仍然是私有的。因此在公有继承时,派生类的对象可以访问基类中的公有成员, 派生类的成员函数可以访问基类中的公有成员和保护成员。(2) 私有继承(private)。私有继承的特点是基类的公有成员和保护成员都作为派生类的私 有成员, 并且不能被这个派生类的 子类所

10、访问。(3) 保护继承(protected) 。保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员, 并且只能被它的派生类成员函数或友元访问, 基类的私有成员仍然 是私有的。 总的来说,基类成员对派生类的对象来说, 是否能被访问, 就要看基类的成员在派生类中变成了什么类型的成员。 例如,私有继承时, 基类 的公有成员和私有成员都变成了派生类中的私有成员, 因此对于派生类中的对象 来说基类的公有成员和私有成员就是不可见的。 在本题中,由于类 P 是对类0的私有继承,因此将类O的公有成员和私有成员都变成了派生类中的私 有成员,因此类P的对象无法访问F1,也无法访问F2。 知识模块:

11、面向对象方法 第 7 题: 下列关于面向对象( )A. 组织并确定对象关系是面向对象设计阶段的活动B. 发现并确定业务对象是面向对象分析阶段的活动C. 建模系统功能是面向对象分析阶段的活动D. 确定对象间的通信方式是面向对象设计阶段的活动 参考答案: A本题考查面向对象分析与设计的活动。面向对象分析基于用例模型,通过对象建模记录确定的对象、 对象封装的数据和行为以及对象之间的关系。 面 向对象分析包括 3 个活动:建模系统功能, 发现并且确定业务对象, 组织对象并 确定其关系。 面向对象设计是在分析对象模型的基础上,设计各个对象、对象 之间的关系 (如层次关系、继承关系等 )和通信方式 (如消

12、息模式 )等,其主要作用 是对OOA勺结果作进一步的规范化整理。知识模块:面向对象方法 第 8 题: 已知 f1 , f2 是同一个类的两个成员函数,但f1 不能调用 f2 ,说明( ) 。A. f1B. f1C. f1D. f1、f2 都是静态成员函数是静态成员函数, f2 不是静态成员函数 不是静态成员函数, f2 是静态成员函数、f2 都不是静态成员函数参考答案: B本题主要考查静态数据成员的内容。类的静态成员与一般的类成员不同,静态成员与对象的实例无关, 只与类本身有关。 它们一般用来实现类要封装 的功能和数据, 但不包括特定对象的功能和数据。 静态成员和普通数据成员区别 较大,体现在

13、下面几点:(1) 普通数据成员属于类的一个具体的对象,只有对象被创建了,普通数据成员才会被分配内存。静态数据成员属于整个类, 即使没有任何对象创建, 类的静态数据成员变量也存在。(2) 外部访问类的静态成员只能通过类名来访问。(3) 类的静态成员函数无法直接访问普通数据成员 (可以通过类的指针等作为参数间接访问 ) ,而类的任何成员函数 都可以访问类的静态数据成员。(4) 类的静态方法只能访问该类的静态数据成员。 另外,静态成员和类的普通成员一样,也具有 public 、 protected 、 private3 种 访 问 级 别 , 也 可 以 具 有 返 回 值 及 被 修 改 等 性

14、质。而在本题中, 虽然 f1 和 f2 都是同一个类的成员函数,但 f1 不能调用 f2 ,如果它们都是普 通成员函数,那么肯定是可以调用;如果它们都是静态成员函数,也可以调用; 如果 f1 是静态成员函数,而 f2 不是的话,那么这种 情况下, f1 不能调用 f2 ;如果 f1 不是 静态成员函数, 而 f2 是的话, 那么这种情况下, f1 也 能调用f2 。综上所述,可知本题的答案选B。知识模块:面向对象方法第 9 题:在UML勺5大系统视图中,()是可执行线程和进程作为活动类的建模。A. 逻辑视图B. 进程视图C. 部署视图D. 用例视图参考答案: BUML寸系统架构的定义是系统的组

15、织结构,包括系统分解的组成部分,以及它们 的关联性、 交互机制和指导原则等提供系统设计的信息。 具体来说, 就是指以下 5 个系统视图:(1) 逻辑视图。逻辑视图也称为设计视图,表示设计模型中在架构方面具有重要意义的部分,即类、子系统、包和用例实现的子 集。(2) 进程视图。进程视图是可执行线程和进程作为活动类的建模,是逻辑视图的一次执行实例,描述了并发与同步结构。(3) 实现视图。实现视图寸组成基于系统的物理代码的文件和构件进行建模。(4) 部署视图。部署视图把构件部署到一组物理结点上, 表示软件到硬件的映射和分布结 构。(5) 用例视图。用例视图是最基本的需求分析模型。知识模块:面向寸象方

16、法第 10 题:以下关于C+中构造函数和析构函数的描述中,错误的是 ()。A. 构造函数的函数名必须与类名相同B. 构造函数的返回类型是void类型C. 析构函数无形参,也不可被重载D. 一个类只能有一个析构函数,但可以有多个构造函数参考答案: B在定义一个寸象的同时, 希望能给它的数据成员赋初值寸象的初始化。 在特 定对象使用结束时,还经常需要进行一些清理工作。C+程序中的初始化和清理工作分 别由两个 特殊的成 员函 数 来完成, 它们 就是 构造 函 数 和 析 构函 数。构造函数是与类名相同的,在建立对象时自动调用的函数。如果在定义类时, 没有为类定义构造函数, 编译系统就生成一个默认形

17、式的隐含的构 造函数, 这个构造函数的函数体是空的, 因此默认构造函数不具备任何功能。 构 造函数是类的一个成员函数, 除了具有一般成员函数的特征之外, 还归纳出如下 特殊的 性质: (1) 构造 函数 的 函数 名必 须 与定 义它 的 类同 名。 (2) 构造函数没有返回值。如果在构造函数前加 void 是错误 的。 (3) 构造函数被声明定义为公有函数。 (4) 构造函数在建 立对象时由系统自动调用。 析构函数也译作拆构函数,是在对象消失 之前的瞬间自动调用的函数, 析构函数具有以下特点: (1) 析构函数没 有任何参数,不能被重载,但可以是虚函数,一个类只有一个析构函 数。 (2) 析

18、构函数没有返回值。 (3) 析构函数名与类名相同, 但在类名前加上一个逻辑非运算符 “ ”,以示与构造函数对比区别。(4)析构函数一般由用户自己定义, 在对象消失时由系统自动调用, 如果用户没有定 义析构函数, 系统将自动生成一个不做任何事的默认析构函数。 知识模块:面向 对象方法 第 11 题:某ATM自动取款机系统中,“查询余额”和“取现”两个用例都需要检查用户 的验证码是否正确,为此定义一个通用的用例“核查验证码”。那么用例“查 询余额”和“取现”与用例“核查验证码”之间是 ( ) 。A. 包含关系B. 扩展关系C. 泛化关系D. 关联关系 参考答案: A本题考查用例之间的基本关系。用例

19、之间存在 3 种关系,分别是包含关系、扩展关系和泛化关系。包含关系。当可以从两个或两个以上的用例中提取公共行为时, 应该使用包含关系来表示它们。 其中这个提取出来的公 共用例称为抽象用例, 而把原始用例称为基本用例或基础用例。 包含关系的一个 重要特征, 就是被抽象出来的用例是基础用例必须的部分, 不能或缺。 本题的描 述就是一个包含关系。扩展关系。如果一个用例明显地混合了两种或两种以上的不同场景, 即根据情况可能发生多种分支, 则可以将这个用例分为一 个基本用例和一个或多个扩展用例, 这样使描述可能更加清晰。 扩展关系的一个 重要特征,就是抽取的用例相对于基础用例来说不是必须的。泛化关系。当

20、多个用例共同拥有一种类似的结构和行为的时候, 可以将它们的共性抽象 成为父用例, 其他的用例作为泛化关系中的子用例。 在用例的泛化关系中, 子用 例是父用例的一种特殊形式, 子用例继承了父用例所有的结构、 行为和关系。 例 如,某学员进行课程注册时,假设既可以通过现场注册,也可以通过网上注册, 则“注册课程”用例就是“现场注册”用例和“网上注册”用例的泛化。知识模 块:面向对象方法第 12 题:在UML勺建模机制中,()描述了对象之间动态的交互关系,还描述了交互的对象之间的静态链接关系,即同时反映系统的动态和静态牲。A. 活动图B. 顺序图C. 状态图D. 协作图 参考答案: D本题主要考查U

21、ML中的图,是考试中的一个重要知识点,这里重点要理解各种图 的作用和特点。在UML2.0包括14种图,分别列举如下:(1)类图 (Class Diagram) 。类图描述一组类、接口、协作和它们之间的关系。在 OO 系统的建模中, 最常见的图就是类图。 类图给出了系统的静态设计视图, 活动类 的类图给出了系统的静态进程视图。(2) 对象图 (Object Diagram) 。对象图描述一组对象及它们之间的关系。 对象图描述了在类图中所建立的事物实例 的静态快照。 和类图一样, 这些图给出系统的静态设计视图或静态进程视图, 但 它们是从真实案例或原型案例的角度建立的。(3) 构件图 (Compo

22、nentDiagram) 。构件图描述一个封装的类和它的接口、 端口, 以及由内嵌的构件和连 接件构成的内部结构。 构件图用于表示系统的静态设计实现视图。 对于由小的部 件构建大的系统来说, 构件图是很重要的。 构件图是类图的变体。(4)组合结构图 (Composite Structure Diagram) 。组合结构图描述结构化类 (如构件 或类)的内部结构,包括结构化类与系统其余部分的交互点。组合结构图用于画 出结构化类的内部内容。(5) 用例图 (Use Case Diagram) 。用例图描述一组用例、 参与者及它们之间的关系。 用例图给出系统的静态用例视图。 这些图 在对系统的行为进

23、行组织和建模时是非常重要的。(6) 顺序图(Sequenee Diagram,序列图)。顺序图是一种交互图(Interaction Diagram) , 交互图展现了一种交互, 由一组对象或参与者以及它们之间可能发送的消息构成。 交互图 专注于系统的 动态 视图 。 顺序图是 强调消息的时间次序的 交互 图。(7) 通信图 (Communication Diagram) 。通信图也是一种交互图,强调收发消息的对象或参与者的结构组织。 该图反映了对象之间的消息交互, 与 顺序图相似, 但与顺序图不同的是, 协作图不但描述了对象之间的交互还描述了 交互的对象之间的链接关系,即通信图同时反映了系统的

24、动态和静态特征。在UML 1.X版本中,通信图称为协作图(Collaboration Diagram) 。(8)定时图(Timing Diagram,计时图)。定时图也是一种交互图,强调消息跨越不同 对象或参与者的实际时间, 而不仅仅只是关心消息的相对顺序。(9) 状态图 (State Diagram) 。状态图描述一个状态机,由状态、转移、事件和活动组 成。状态图给出了对象的动态视图。 它对于接口、类或协作的行为建模尤为重要, 而且它强调事件导致的对象行为,有助于对反应式系统建模。(10) 活动图 (Activity Diagram) 。活动图将进程或其他计算结构展示为计算内部一步步 的控制

25、流和数据流。 活动图专注于系统的动态视图。 它对系统的功能建模和业务 流程建模特别重 要, 并强 调对象间的控制流程。(11) 部署图(Deployment Diagram)。部署图描述对运行时的处理结点及在其中生存的构件的 配置。部署图给出了架构的静态部署视图,通常一个结点包含一个或多个部署 图。(12) 制品图 (Artifact Diagram) 。制品图描述计算机中一个系统的物理结构。 制品包括文件、 数据库和类似的物理比特集合。 制品图通常与部署图一起使用。制品也给出了它们实现的类和构件。 (13) 包图 (Package Diagram) 。包图描述由模型本身分解而成的组织单元,以

26、及它们之间的依赖关 系。 (14) 交互概览图 (Interaction Overview Diagram) 。交互概览图 是活动图和顺序图的混合物。综上所述,可知本题的答案选 D。知识模块:面向对象方法第 13 题:在常见的UML图中,下列属于结构性视图的是()。 对象图 用例图 包图 定时图 构件图 部署图 类图 状态图A. B. C. D. 参考答案: C本题主要考查UMLJ图的分类。UML2.0中的14种视图可以分为结构性视图(静态) 和行为性视图 (动态)两种。结构领域主要是对系统中的结构成员及其相互关系进 行描述;而行为领域则描述了系统随时间变化的行为。结构性视图包括类图、对象图、

27、包图、组合结构图、构件图、部署图和制品图,而行为性 视图包括用例图、顺序图、通信图、定时图、状态图、活动图、交互概览图。其 中顺序图、通信图、定时图和交互概览图又统称为交互图。综上所述,可知本题答案选 G知识模块:面向对象方法第 14 题: 遵守面向对象设计原则可以有效地提高系统的复用性和可维护性。应用 ( ) 原则 可扩展已有的系统,并为之提供新的行为。A. 开闭B. 里氏替换C. 依赖倒置D. 接口隔离参考答案: A本题考查面向对象设计的设计原则。面向对象设计有七大原则,分别是:单一职责原则、开放封闭原则、李氏替换原则、依赖倒置原则、接口隔离原 则、组合重用原则和 迪米特原则。 下面我们分

28、 别简单介绍一下这些原则。(1)单一职责原则(SRP):就一个类来说,应该仅有一个引起它变化的原因。也就是说,一个类应该只有一个职责。如果有多个职责,那么就相当 于把这些指责耦合在一起, 一个职责的变化就可能削弱或抑制了这个类完成其他 职责的能力, 引起类的变化的原因就会有多个。 所以在构造一个类时, 将类的不 同职责分离至两个或多个类中 (或者接口中 ),确保引起该类变化的原因只有一 个。(2)开闭原则(OCP):软件组成实体应该是可扩展的,但是不可修改。开放 -封闭原则认为应该试图设计永远也不需要改变的模块。可以添加新代 码来扩展系统的行为, 不能对已有的代码进行修改。 这个原则很好的实现

29、了面向 对象的封装性和可重用性。(3) 替换原则 (LSP) :子类应当可以替换父类并出现在父类能够出现的任何地方。 这个原则是 Liskov 于 1 987年提出的设计 原则。它同样可以从 Bertrand Meyer的DBC(Design by Contract)的概念推出。 以圆和椭圆为例, 圆是椭圆的一个特殊子类。 因此任何出现椭圆的地方, 圆均可 以出现。但反过来就可能行不通。运用替换原则时,尽量把类 B设计为抽象类或者接口,让 C类继承类B(接口 B)并实现操作A和操作B,运行时, 类C实例替换B,这样即可进行新类的扩展(继承类B或接口 B),同时无须对类 A进行修改。(4)依赖倒

30、置原则(DIP):在进行业务设计时,与特定业务有关的依赖关系应该尽量依赖接口和抽象类, 而不是依赖于具体类。 具体类只负 责相关业务的实现, 修改具体类不影响与特定业务有关的依赖关系。 在结构化设 计中,可以看到底层的模块是对高层抽象模块的实现, 这说明, 抽象的模块要依 赖具体实现相关的模块, 底层模块的具体实现发生变动时将会严重影响高层抽象 的模块,显然这是结构化方法的一个“硬伤”。面向对象方法的依赖关系刚好相 反,具体实现类依赖于抽象类和接口。为此,在进行业务设计时,应尽量在接口 或抽象类中定义业务方法的原型, 并通过具体的实现类 (子类)来实现该业务方法, 业务方法内容的修改将不会影响

31、到运行时业务方法的调用。(5) 接口分离原则 (ISP) :采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业 务方法的接口要好。ISP原则是另外一个支持诸如COM等组件化的使能技术。缺 少ISP,组件、类的可用性和移植性将大打折扣。这个原则的本质相当简单。女口 果拥有一个针对多个客户的类, 为每一个客户创建特定业务接口, 然后使该客户 类继承多个特定业务接口将比直接加载客户所需所有方法有效。(6) 组合重用原则: 就是能用组合实现的地方, 尽量用组合来实现, 而不要使用继承来 扩展功能, 因为组合能更好地实现封装, 比继承具有更大的灵活性和更稳定的结 构。(7) 迪米特原则: 指一个对

32、象应该对于其他对象有最少的了解, 这样做的好处就是可以有效地降低类之间的耦合要求。知识模块:面向对象方法 第 15 题: 以下关于设计模式的描述中,不正确的是 ( ) 。A. 使用设计模式的主要目的是复用成功的设计和体系结构B. 设计模式具有适应需求变化的优点C. 设计模式可以改善代码的平台可移植性D. 设计模式可以减少方案出错的可能性 参考答案: C此题考的 是 设 计 模 式 基 本 概 念 , 要 求考 生清楚 设计 模式 的 作用 和 特 点。 模式是一种问题的解决思路,已经适用于一个实践环境,并且可 以适用于其他环境。 设计模式通常是对于某一类软件设计问题的可重用的解决方 案,将设计

33、模式引入软件设计和开发过程,其目的就在于要重用软件开发经 验。 设计模式主要有以下几个方面的作用: (1) 重用设计, 重用设计比重用代码更有意义, 它会自动带来代码重用。 (2) 为设计提 供共同的词汇, 每个模式名就是一个设计词汇, 其概念是的程序员间的交流更加 方便。 (3) 在开发文档中采用模式词汇可以让其他人更容易理解你的想 法和做法, 编写开发文档也更加容易。 (4) 应用设计模式可以让重构系 统变得容易,可确保开发正确的代码,并降低在设计或实现中出现错误的可 能。 (5) 支持变化,可以为重写其他应用程序提供很好的系统架 构。 (6) 正确使用设计模式,可以节省大量时间。 另外,

34、设 计模式还有适应需求变化的优点, 如职责链模式, 当系统业务流程有变化时, 只 需要很少的调整即可达到目的。知识模块:面向对象方法第 16 题:( ) 主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行 为。A. 边界类B. 存储类C. 抽象类D. 实体类参考答案: A本题主要考查类的分类。根据不同的作用,类可以分为边界类、抽象类、实体类 三种,其中:边界类描述的是系统外部环境和系统内部运作之间的交互,它工作在参与者和系统之间,而边界对象表示的为一个交互接 口。实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为, 但这些行为必须与它所代表的实体对象密

35、切相关, 实体 类独立于系统外部环境 (Actor) 。控制类描述的是特定用例的控制行为,与特定的用例实现密切相关, 可以说它就是在执行用例实现, 控制类可以有 效地降低边界类和实体类之间的耦合, 使系统对于外部环境的变化具有良好的适 应性。知识模块:面向对象方法第 17 题:( ) 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。A. Adapter( 适配器 )B. Iterator( 迭代器 )C. Prototype( 原型)D. Observer( 观察者 )参考答案: A本题主要考查各设计模式的基本概念和作用。(1)Adapter( 适配器 )设计模式的意图是将一个类的接

36、口转换成客户希望的另外一个接口。 Ad 印 ter 模 式使得原本由于接口不兼容而不能一起工作的那些类可以一起工 作。 适用性:想使用一个已经存在的类,而它的接口不符合需 求。 想创建一个可以复用的类,该类可以与其他不相关的类或不可预 见的类 ( 即那些接口可能不一定兼容的类 ) 协同工作。 ( 仅适用于对象 Adapter) 想 使用一些已经存在的子类, 但是不可能对每一个都进行子类化以匹配它们的接口。 对象适配器可以适配它的父类接口。 (2)Prototype( 原型) 设计模式的 意图是用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对 象。 适用性:当要实例化的类是在运行时刻

37、指定时。例如,通过动态 装载;或为了避免创建一个与产品类层次平行的工厂类层次时; 或当一个类的实 例只能有几个不同状态组合中的一种时。 建立相应数目的原型并克隆它们可能比 每次用合适的状态手工实例化该类更方便一些。 (3)Iterator( 迭代器 ) 设计模式的意图是提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴 露该对象的内部表示。 适用性:访问一个聚合对象的内容而无须暴露 它的内部表示。 迭代器模式支持对聚合对象的多种遍历。 也为遍历不同的聚合结 构提供一个统一的接口 ( 即支持多态迭代 ) 。(4)Observer( 观察者 ) 设计模式,定义对象间的一种一对多的依赖关系,

38、当一个对象的状态发生改变时, 所 有依赖于它的对象都得到通知并被自动更新。 适用性:当一个抽象模 型有两个方面, 其中一个方面依赖于另一方面。 将这两者封装在独立的对象中以 使它们可以各自独立地改变和复用。 以下两种情况比较适合观察者模 式:一个是当对一个对象的改变需要同时改变其他对象, 而不知道具体有多少对 象有待改变; 另一个是当一个对象必须通知其他对象, 而它又不能假定其他对象 是谁。换言之,你不希望这些对象是紧密耦合的。知识模块:面向对象方法 第 18 题:( ) 是指同一个操作作用于不同的对象可以有不同的解释,产生不同的执行结 果。A. 封装B. 泛化C. 继承D. 多态参考答案:

39、D本题考查面向对象的方法学知识, 是常考的知识点。 面向对象的三大特点就是封 装、继承和多态。封装性是一种信息隐蔽技术,使系统分析员能够清晰地标明他们所提供的服务界面, 用户和应用程序员则只看得见对象提供的操作 功能( 即封装面上的信息 ) ,看不到其中的数据或操作代码细节。 封装就是将抽象 得到的数据和行为 (或功能 ) 相结合,形成一个有机的整体, 也就是将数据与操作 数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成 员。多态性是指一般类中定义的属性或服务被特殊类继承后,可以具有不同的数据类型或表现出不同的行为, 通常是使用重载和改写两项技术来实现 的。简单地说, 就是同一

40、个操作作用于不同的对象可以有不同的解释, 产生不同 的执行结果。继承是指在某个类的层次关联中,不同的类共享属性和操作的一种机制。一个父类可以有多个子类。父类描述了这些子类的公共属性和 操作,子类中还可以定义其自己的属性和操作。 如果一个子类只有唯一的一个父 类,这种继承称为单一继承。如果一个子类有多个父类,可以从多个父类中继承 特性,这种继承称为多重继承。 泛化与继承是类似的,只是方向相反, 继承用来说明特殊类(子类)与一般类(父类)的关系,而泛化则用来说明一般类与 特殊类之间的关系。知识模块:面向对象方法 第19题:有两个类X和丫,那么以下描述中,不正确的是()。A. 修改X会引起丫的变化,

41、那么X和丫是一种依赖关系B. X表示一般,而丫表示特殊,那么X和丫是一种泛化关系C. X是整体,丫是部分,且X和丫同生命周期,那么它们是组合关系D. X是整体,丫是部分,且X和丫同生命周期,那么它们是聚合关系参考答案:D因一 5因s虽然组合和聚合都是表示整体和部分的关系,但组合中整体和部分的生命周期一样, 而聚合中整体和部分的生命周期不一 样。(5)实现关系。实现关系将说明和实现联系起来。接口是对行为而非实现的说明,而类中则包含了实现的结构。一个或多个类可以实现 一个接口,而每个类分别实现接口中的操作。综上所述,可知本题的答案选0知识模块:面向对象方法 第20题:()除了提供可被应用程序调用的

42、类以外,还基本实现了一个可执行的架构。A. 框架B. 标准库C. 函数库D. 类库参考答案:A本题考查面向对象方法学的类库及框架知识。大量的程序员都尽可能多地利用现有的代码。程序员经常购买那些包装成库的代码。当C语言流行时,代码库就是函数库。例如,可以购买一个数学库,该库含有完成微积分和代数运 算的函数。通常,可以在程序代码中使用一个包含文件来指定一个函数库,可以静态或动态地链接这个函数库。静态链接意味着库代码直接集成到程序中。 在这 种情况下,程序不依赖于其他文件,但文件的大小可能很大。动态链接意味着程 序有库的版本信息,其代码存放于一个单独的文件中,这个文件称为动态链接库 (DLL)。只有

43、程序运行期间调用 DLL中的函数时,才加载 DLL到内存。DLL作为 一个独立的实体存在于内存中,可以同时被多个程序访问。出现C+后,函数库转变为类库。 两者的区别在于函数库只包含一系列函数, 而类库是用 面向对象编程的原理设计的。 例如, 可以为数据结构做一个类库, 该库包括一个 链接列表的类。如果使用一个函数库代替, 那么链接列表会独立于操作它的函数。 另一方面,使用类库时,链接列表和操作它的函数存在于同一个文件的同一个类 中。然而,正如使用函数库一样,使用类库涉及包含文件和链接一个静态库。最 近,已经从类库发展到模板库。其原因是C+编译器现在已经能够处理C+莫板。 模板库提供了一系列优于

44、类库的优点。 要使用模板库, 只要在程序中加入包含文 件即可,不用链接到库, 因为所有的库代码已经包含在该包含文件中了。 Visual C有三个供开发者使用的库:一个类库(MFC),两个模板库(ATL和 STL)。框架是对于那些试图在所关心的领域构造一个复杂软件系统的用户而言的。 因为它是处于特定领域中, 所以应用系统的体系结构在许多不同的 方面具有一定的相似性。 框架利用一系列的对象和它们之间的接口来对应静态和 恒定结构的端口, 并保留友好界面使用户能够很容易完成变化的、 不稳定的剩余 部分而得到一个新应用程序。 任何框架都是特定领域的框架, 一个框架可以包含 一个或多个模式。框架是一种软件

45、重用技术,是一个应用软件系统的部分或整体的可重用设计。 框架的具体表现为一组抽象类以及其实例 (对象)之间 的相互作用方式。 它是对于一个软件系统的全部或部分的可复用设 计。在一个专用领域内构造框架时,把握框架的共同点是关键因素。框架一旦被建立, 其适应性和可扩展性就被提到了首要地位。 框架的直接目的是 被复用,以减少建立一个新应用系统的工作量。 只有当理解一个框架的代价少于 建立一个新系统的代价时, 框架的复用才成为可能。 构造框架是一个逐渐积累的 过程,就是说不断有新发现的共同点和新的构件被加入, 同时那些老的、 不必要 的部件被删除, 以此来保证整个应用系统的性能, 这样新旧构件之间的接

46、口直接 影响框架的适应性和可扩展性。 任何框架都不能被直接复用, 除非要建立的应用 系统非常简单或与框架极为相似, 除此之外, 都要对框架进行或多或少的修改和 扩展才能被复用。框架和类库的一些主要区别与联系如下:在类库中是由用户实例化抽象类,类库构件被单独使用;而在框架中要有抽象类的一些具体子类, 应用软件开发者通过修改现存的类或定义新 的子类以扩展现存的类来使用框架。在类库中是用户在需要的时候调用函数, 不预定义控制流; 而框架使用了与用户之间的反向控制流, 使用框架 时,通常只是实现一些回调函数或使一些类适用于上下文, 然后调用一个单一的 方法或过程, 框架将完成其余的工作, 在适当的时候

47、和地点调用必要的函数或方 法 。 这 就 是 框 架 的 Hollywood 法 则 ( “ Don t call us , w ll call you”)。使用类库只需要了解类的外部接口,但必须要定义应用软件的整体结构; 而框架的使用者要了解框架的抽象设计和类的内部结构来进行修 改和扩展, 因此学习框架要比类库更加困难, 同时有被错误使用的危险, 但框架 被复用的潜力大大超过了类库。在类库中没有定义缺省行为,而在框架中提供缺省行为。知识模块:面向对象方法 第 21 题:当( ) 时,用例是捕获系统需求最好的选择。A. 系统具有很少的用户B. 系统具有很少的接口C. 系统算法复杂,功能单一D.

48、 系统有很多参与者参考答案: D本题主要考查用例的基本知识。用例描述的是用户与系统的交互,是开发者与用户交流的工具, 可用来很好地定义系统的边界。参与者(角色、动作者、执行者 ) 是指存在于系统外部并与系统进行交互的任何事物,既可 以是使用系统的用户,也可以是其他外部系统和设备等外部实体。当系统参与者较多时候, 用例图能很好地描述出各参与者与系统的交换关系, 其实 就是系统应该要完成的功能。 因此,在系统有很多参与者时, 采用用例能够较好 地捕获系统需求。知识模块:面向对象方法 第 22 题:UML中接口可用于()。A. 提供构造型 (stereotype) 名称为 tefface 的具体类B

49、. Java和C+程序设计中,而C#程序设计中不支持C. 定义可以在多个类中重用的可执行逻辑D. 声明对象类所需要的服务参考答案: D本题主要考查对接口的理解。接口是描述某个类或构件的一个服务操作集,在接口中可以声明对象类所需要的服务。而接口不仅可以在 Java 和 C+ 程序设计中,也可以在C#等各种程序设计中使用。知识模块:面向对象方法第 23 题:下列模式中,属于行为模式的是 ( ) 。A. 原型模式B. 访问者模式C. 桥接模式D. 以上都不是参考答案: B设计模式可以分为创建型、 结构型和行为型模式。 其中,创建型模式对类的实例 化过程进行了抽象, 能够使软件模块做到与对象的创建和组

50、织无关; 结构型模式 描述类和对象之间如何进行有效的组织, 以形成良好的软件体系结构, 主要的方 法是使用继承关系来组织各个类, 一个最容易的例子就是如何用多个继承组织两 个以上的类, 结果产生的类结合了父类所有的属性, 结构型模式特别适用于和独 立的类库一起工作; 行为型设计模式描述类和对象之间如何交互以及如何分配职 责,实际上它所牵涉的不仅仅是类或对象的设计模式,还有它们之间的通信模 式。常见的创建型模式主要有工厂方法 (Factory Method) 、抽象工厂(Abstract Factory) 、单例(Singleton)、构建(Builder)、原型(Prototype)模 式;结

51、构型模式有适配器(Adapter)、合成(Composite)、装饰(Decorator)、代 理(Proxy)、享元(Flyweight)、门面(Facade)、桥接(Bridge)模式;行为型模式 有策略(Strategy)、模板方法(Template Method)、迭代器(Iterator)、责任链 (Chain of Responsibility)、命令(Command)备忘录(Memento)、状态(State)、 访问者(Visitor)、解释器(Interpreter) 、调停者(Mediator)、观察者(Observer) 模式。知识模块:面向对象方法 第24题:对于场景:

52、一个公司负责多个项目,每个项目(Project)由一个员工(Employee)团队(Team)来开发。下列UML既念图中,()最适合描述这一场景。A. 图AB. 图BC. 图CD. 图D参考答案:B本题主要考查类图和多重度的知识。在UML中,关联的多重度是指一个类的实例能够与另一个类的多少个实例相关联。它又称为重复度。多重度表示 为一个整数范围n.m,整数n定义所连接的最少对象的数目,而 m则为最多对 象数(当不知道确切的最大数时,最大数用*号表示)。最常见的多重性有0.1、 0.*、1和1.*。在本题中,根据题目的描述,不难看出有 4个类,而且由描述“一个公司负责多个项目”可知,公司和项目两

53、个类之间的关联是一 种一对多的关联,即项目端是多端,这样就可以排除答案C,另外公司和项目之间并不是一种继承的关系,这样就可以排除答案 D。而在A和B选项间,它们的区别就在于 A的关联牵涉了 3个类,但其实这种表达方式是不存在 的,而B选项中很好地表明了题目的意思,即一个项目由一个团队来开发而团队 中的成员个数至少是一个,或者是多个。知识模块:面向对象方法第25题:在面向对象技术中,对象具有以下特性:()0 清晰的边界 良好定义的行为 确定的位置和数量 可扩展性A. B. C. D. 参考答案:C对象是一组属性及这组属性上的专用操作的封装体,由对象标识、属性和服务三个要素组成。它是系统用来描述客

54、观事物的一个实体, 所以对象肯定是定义好了 相关行为和边界的,另外对象还应该具有可扩展性的特点, 这样就可以方便地为 对象添加一些新的功能,继承和组合都可以实现其可扩展性。知识模块:面向对 象方法 第26题:UML序列图是一种交互图,描述了系统中对象之间传递消息的时间次序。其 中,异步消息与同步消息不同,异步消息并不引起调用者终止执行而等待控制 权的返回。图5-2中()分别表示一条同步消息和一条异步消息。A. 1 和 4B. 2 和 3C. 1 和 3D. 2 和 4参考答案:C在本题中,首先要理解同步消息与异步消息的区别。 如果一个对象发送了一个同 步消息,那么它要等待对方对消息的应答, 收

55、到应答后才能继续自己的操作。 发 送异步消息的对象不需要等待对方对消息的应答便可以继续自己的操 作。在本题中,1表示的是同步消息,而2表示的是返回消息,3表示的是异步消息。一般情况下,在顺序图中,同步消息、异步消息、返回消息都是 用本题图中的箭头表示,请注意它们的区别。知识模块:面向对象方法_27设计模式将抽象部分与它的实现部分相分离,使它们都可以独立地变化。图5-1为该设计模式的类图,其中, _28 用于定义实现部分的接口。第27题:A. Singleton(单件)B. Bridge(桥接)C. Composite(组合)D. Facade(外观)参考答案:B第28题:A. Abstractio nB. C on cretelmpleme ntorAC. Con cretelmpleme ntorBD. lm pleme ntor参考答案:D本题主要考查设计模式的知识,这种题型是考试中常见的题型。桥接模式的意图是将抽象部分与 它的实现部分分离,使它们都可以独立 地变化。桥接模式的适用性如下:(1)避免抽象方法和实现方法绑定在一起。(2)类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。(3)对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。(4)想在多个对象间共享实现(可能使用引用计数),但同时要求客户并不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论