第7章 面向对象技术
题库 9 · 章节 75 · 共 68 题
1. 面向对象______选择合适的面向对象程序设计语言,将程序组织为相互协作的对象集合, 每个对象表示某个类的实例,类通过继承等关系进行组织。
- A. 分析
- B. 设计
- C. 程序设计
- D. 测试
答案:C
解析:
本题考查面向对象的知识点。 面向对象程序设计(OOP)是一种实现方法,在这种方法中,程序被组织成许多相互协作的对象,每个对象代表某个类的一个实例,类则属于一个通过继承关系形成的层次结构。 面向对象分析(OOA)是一种分析方法,利用从问题域的词汇表中找到的类和对象来分析需求,重点是找到和描述问题域的对象或概念,然后构建真实世界的模型,利用面向对象的观点来看世界。 面向对象设计(OOD)是一种设计方法,包括面向对象分解的过程和一种表示法,这种表示法用于展现被设计系统的逻辑模型(类和对象结构)、物理模型(模块和处理架构)、静态模型和动态模型。
难度 2 · 作答 1743 次 · 正确率 67.6%
2. 进行面向对象设计时,以下______不能作为继承的类型。
- A. 多重继承
- B. 分布式继承
- C. 单重继承
- D. 层次继承
答案:B
解析:
单重继承(Single Inheritance)、多重继承(Multiple Inheritance)和层次继承(Hierarchical Inheritance)都是面向对象编程(OOP)中的继承类型,而分布式继承并不是一种常见的继承类型或概念。有些语言是支持多重继承的,如C++。 单重继承:一个类只能继承一个父类。多重继承:一个类可以同时继承多个父类,即一个派生类可以有多个基类。 层次继承:是指一个类从一个父类继承,同时这个继承的类又可以作为新的父类被其他类继承,这种继承方式形成了一个层次结构。
难度 2 · 作答 1539 次 · 正确率 61.5%
3. 以下关于方法重载(overload)和方法覆盖(Override)与多态的关系的叙述中,不正确的是______。
- A. 覆盖通过动态绑定机制实现多态
- B. 重载通过动态绑定机制实现多态
- C. 重载属于编译时多态,在一个类中定义多个名称相同而参数表不同的方法
- D. 覆盖属于运行时多态,子类重新定义父类中已定义的方法
答案:B
解析:
重置也称覆盖(重写,overriding),是在子类中重新定义父类中已经定义的方法。(重载:在一个类中,允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同))。动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。程序运行过程中,把函数(或过程)调用与响应调用所需要的代码相结合的过程称为动态绑定。
难度 2 · 作答 1633 次 · 正确率 55.8%
4. 在有些程序设计语言中,过程调用和响应调用需执行的代码的绑定直到运行时才能进行,这种绑定称为______。
- A. 静态绑定
- B. 动态绑定
- C. 过载绑定
- D. 强制绑定
答案:B
解析:
本题考查面向对象基础。 动态绑定(Dynamic Binding)是面向对象程序设计语言中的一种机制,绑定是在运行时进行的,即一个给定的过程调用和响应调用需执行的代码的结合直到调用发生时才进行。这种机制实现了方法的定义与具体的对象无关,而对方法的调用则可以关联到具体的对象。
难度 2 · 作答 1595 次 · 正确率 87.7%
5. ______绑定是指在运行时把过程调用和响应调用所需要执行的代码加以结合。
- A. 动态
- B. 过载
- C. 静态
- D. 参数
答案:A
解析:
本题考查面向对象基础。 在面向对象方法中,绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定是在编译时进行的,叫作静态绑定。动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合直到调用发生时才进行。动态绑定和类的继承以及多态相联系。
难度 2 · 作答 1428 次 · 正确率 89.1%
6. 下列关于一个类的静态成员的描述中,不正确的是______。
- A. 类的静态方法只能访问该类的静态数据成员
- B. 静态数据成员可被该类的所有方法访问
- C. 该类的对象共享其静态数据成员的值
- D. 该类的静态数据成员的值不可修改
答案:D
解析:
本题考查面向对象开发中静态成员的基本知识。 面向对象开发方法中,静态成员的含义是所修饰的成员是属于类的,而不是属于某对象的。静态数据成员对该类只有一份,该类的所有对象共享静态数据成员,可被该类的所有方法访问,其值可以修改,但是不论是通过对象还是类对静态数据成员值的修改,都会反应到整个类。类的静态方法只能访问该类的静态数据成员。
难度 2 · 作答 1690 次 · 正确率 52.6%
7. 采用面向对象开发方法时,对象是系统运行时的基本实体。以下关于对象的叙述中,正确的是______。
- A. 对象只能包括数据(属性)
- B. 对象只能包括操作(行为)
- C. 对象一定有相同的属性和行为
- D. 对象通常由对象名、属性和操作三个部分组成
答案:D
解析:
本题考查面向对象的基本知识。 采用面向对象开发方法时,对象是系统运行时的基本实体。它既包括数据(属性),也包括作用于数据的操作(行为)。一个对象通常可由对象名、属性和操作三个部分组成。
难度 2 · 作答 1485 次 · 正确率 95.2%
8. 一个类中,成员变量和成员函数有时也可以分别被称为______。
- A. 属性和活动
- B. 值和方法
- C. 数据和活动
- D. 属性和方法
答案:D
解析:
本题考查面向对象的基本知识。 面向对象方法中,对象是运行时实体,封装了数据(也称为属性)和作用域数据的操作(也称为行为),一组对象的共同特征加以抽象并存储在一个类中。而在面向对象程序设计时,首先接触的不是对象,而是定义类及类层次结构。定义类时,成员变量用来定义一组对象的属性,成员函数(或方法)用来定义作用于属性上的操作。
难度 2 · 作答 1490 次 · 正确率 85.5%
9. 面向对象程序设计语言C++、JAVA 中,关键字______可以用于区分同名的对象属性和局部变量名。
- A. private
- B. protected
- C. public
- D. this
答案:D
解析:
本题考查面向对象的基本知识。 属性又称成员变量,方法中的变量又称为局部变量。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this,用它可以对对象中同名的成员变量和局部变量进行区分。this只和特定的对象关联,而不是类关联,同一个类的不同对象有不同的this。
难度 2 · 作答 1508 次 · 正确率 80.7%
10. (复合题 1/2)(1)正确的选项是?
共用题干: 一个类是(1)。在定义类时,将属性声明为private的目的是(2)。
- A. 一组对象的封装
- B. 一组对象的层次关系
- C. 一组对象的实例
- D. 一组对象的抽象定义
答案:D
解析:
本题考查面向对象的基本知识。 在面向对象技术中,将一组大体上相似的对象定义为一个类。 把一组对象的共同特征加以抽象并存储在一个类中,是面向对象技术中的一个重要特点。一个所包含的方法和数据描述一组对象的共同行为和属性。在类定义时,属性声明private的目的是实现数据隐藏,以免意外更改。
难度 2 · 作答 1672 次 · 正确率 66.1%
11. (复合题 2/2)(2)正确的选项是?
共用题干: 一个类是(1)。在定义类时,将属性声明为private的目的是(2)。
- A. 实现数据隐藏,以免意外更改
- B. 操作符重载
- C. 实现属性值不可更改
- D. 实现属性值对类的所有对象共享
答案:A
解析:
本题考查面向对象的基本知识。 在面向对象技术中,将一组大体上相似的对象定义为一个类。 把一组对象的共同特征加以抽象并存储在一个类中,是面向对象技术中的一个重要特点。一个所包含的方法和数据描述一组对象的共同行为和属性。在类定义时,属性声明private的目的是实现数据隐藏,以免意外更改。
难度 2 · 作答 1631 次 · 正确率 86.8%
12. 用面向对象方法设计了一个父类File和两个子类DiskFile和TapeFile,这两个子类继承了其父类的open方法,并给出不同的实现。不同的子类执行open方法时,有不同的行为,这种机制称为______。
- A. 继承
- B. 多态
- C. 消息传递
- D. 关联
答案:B
解析:
本题考查对多态机制的理解。 多态性:是多种表现形式;多态性的实现,一般通过在派生类中重新定义基类的虚函数来实现。本题中给定一个方法,不同的子类行为不同,这是多态机制。
难度 2 · 作答 1433 次 · 正确率 87.7%
13. 多态有不同的形式,______的多态是指同一个名字在不同上下文中所代表的含义不同。
- A. 参数
- B. 包含
- C. 过载
- D. 强制
答案:C
解析:
本题考查多态的基本概念。
多态一共有四类,其中通用的多态有参数多态和包含多态,特定的多态有过载多态和强制多态。过载多态 :是指同一个名(操作符、函数名)在不同的上下文中有不同的类型,程序设计语言中基本类型的大多数操作符都是过载多态,比如C++中的函数重载就是过载多态。
强制多态
:是指编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求,比如,程序设计语言中基本类型的大多数操作符,在对不同类型的数据进行混合运算时,编译程序一般都会进行强制多态。
参数多态:采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。包含多态:同样的操作可用于一个类型及其子类型(注意是子类型,不是子类)。
包含多态:最常见的例子就是子类型化,也就是一个类型是另一个类型的子类型。一般需要进行运行时的类型检查。
难度 2 · 作答 1460 次 · 正确率 48.7%
14. 在面向对象的基本概念中,______体现对象间的交互,通过它向目标对象发送操作请求。
- A. 继承
- B. 多态
- C. 接口
- D. 消息
答案:D
解析:
本题考查面向对象的基本概念及开发方法。 面向对象开发方法的三个特征:多态、继承、封装。 多态:可以理解为事物存在的多种体现形式(父类类型的变量引用指向子类类型的对象)。 继承性:是子类自动共享父类之间数据和方法的机制。 接口:就是对操作规范的说明。 消息:是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。本题题干体现的是面向对象的消息机制。
难度 2 · 作答 1532 次 · 正确率 61.1%
15. 采用面向对象方法进行系统开发时,需要对两者之间关系创建新类的是______。
- A. 汽车和座位
- B. 主人和宠物
- C. 医生和病人
- D. 部门和员工
答案:C
解析:
本题考查面向对象技术的基本知识。 把一组对象的共同特征加以抽象并存储在一个类中,不同个数的类之间可能有不同的关系。关联关系是类之间的一种结构关系,描述了对象之间连接的一组链。一辆汽车中有多个座位,一个座位隶属于一辆汽车。一个主人可以养多只宠物,一只宠物有一个(或同一家庭的多个主人)。医生可以为多个病人看病,病人也可以去找多位医生看病,而且,同一个病人可以在不同时间多次找同一个医生看病,这一过程只通过关联关系难以建模出两者之间的关系,需要在关联关系上创建新的类。一个部门有多名员工,一个员工隶属于一个部门。
难度 2 · 作答 1495 次 · 正确率 58.3%
16. 采用面向对象方法进行系统开发时,以下与新型冠状病毒有关的对象中,存在"一般---特殊"关系的是______。
- A. 确诊病人和治愈病人
- B. 确诊病人和疑似病人
- C. 医生和病人
- D. 发热病人和确诊病人
答案:D
解析:
本题考查面向对象技术的基本知识。 A、B、C选项均代表了两类不同的对象,他们之间不具有一般和特殊的关系。在发热病人中存在特殊的一类人就是确诊病人,因此发热病人和确诊病人之间是一般和特殊的关系。
难度 2 · 作答 1590 次 · 正确率 70.6%
17. 进行面向对象系统设计时,在包的依赖关系图中不允许存在环,这属于______原则。
- A. 单一责任
- B. 无环依赖
- C. 依赖倒置
- D. 里氏替换
答案:B
解析:
本题考查的是面向对象设计原则相关内容。 单一责任原则:设计目的单一的类。 无环依赖原则:在包的依赖关系图中不允许存在环,即包之间的结构必须是一个直接的无环图形。本题描述的是B选项。 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。 里氏替换原则:子类可以替换父类。
难度 2 · 作答 1477 次 · 正确率 88.4%
18. 进行面向对象系统设计时,软件实体(类、模块、函数等)应该是可以扩展但不可修改的,这属于______设计原则。
- A. 共同重用
- B. 开放-封闭
- C. 接口分离
- D. 共同封闭
答案:B
解析:
本题考查面向设计的7种原则。 进行面向对象设计时,有一系列设计原则。 共同重用原则:一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。 开放-封闭原则:软件实体(类、模块、函数等)应该是可以扩展的,即开放的,但是不可修改的,即封闭的。 接口分离原则:不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于具体细节的依赖。这样做的好处在于可以最大限度地应对可能的变化。 共同封闭原则:包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。
难度 2 · 作答 1480 次 · 正确率 85.9%
19. 进行面向对象系统设计时,针对包中的所有类对于同一类性质的变化。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。这属于______设计原则。
- A. 共同重用
- B. 开放---封闭
- C. 接口分离
- D. 共同封闭
答案:D
解析:
本题考查面向设计的7种原则。 类的设计原则主要有开闭原则、里氏代换原则、迪米特原则(最少知道原则)、单职责原则、接口分隔原则、依赖倒置原则、组合/聚合复用原则。 开放封闭原则,指软件实体(类、模块、函数等)应该是可以扩展的,即开放的。但是不可修改的,即封闭的。 接口分离原则,是指不应该强迫客户依赖于他们不用的方法,接口属于客户,不属于它所在的类层次结构。即依赖于抽象,不依赖于具体,同时,在抽象级别,不应该有对于细节的依赖。 共同封闭原则,是指包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。 由此可见,题目里描述的是共同封闭原则,选择的答案是D。
难度 2 · 作答 1472 次 · 正确率 54.3%
20. 进行面向对象系统设计时,若存在包A依赖于包B,包B依赖于包C,包C依赖于包A,则此设计违反了______原则。
- A. 稳定抽象
- B. 稳定依赖
- C. 依赖倒置
- D. 无环依赖
答案:D
解析:
稳定依赖原则:朝着稳定的方向进行依赖。 稳定抽象原则:包的抽象程度应该和其稳定程度一致。 依赖倒置原则:抽象不应该依赖于细节,细节应该依赖于抽象。即高层模块不应该依赖于底层模块,二者都应该依赖于抽象。 无环依赖原则:在包的依赖关系图中不允许存在环,即包之间的结构必须是一个直接的无环图形。
难度 2 · 作答 1456 次 · 正确率 84.5%
21. 面向对象软件从不同层次进行测试。______层测试类中定义的每个方法,相当于传统软件测试中的单元测试。
- A. 模板
- B. 系统
- C. 类
- D. 算法
答案:D
解析:
面向对象测试可以分为四个层次: (1)算法层。用于测试类中定义的每个方法,基本上相当于传统软件测试中的单元测试。 (2)类层。用于测试封装在同一个类中的所有方法与属性之间的相互作用。在面向对象软件中,类是基本模块,因此可以认为这是面向对象测试中所特有的模块测试。 (3)模板层。用于测试一组协同工作的类之间的相互作用。大体上相当于传统软件测试中的集成测试,但是也有面向对象软件的特点,如对象之间通过发送消息相互作用。 (4)系统层。把各个子系统组装成完整的面向对象软件系统,在组装过程中同时进行测试。
难度 2 · 作答 1441 次 · 正确率 61.1%
22. 下面关于面向对象分析与面向对象设计的说法中,不正确的是______。
- A. 面向对象分析侧重于理解问题
- B. 面向对象设计侧重于理解解决方案
- C. 面向对象分析描述软件要做什么
- D. 面向对象设计一般不关注技术和实现层面的细节
答案:D
解析:
本题考查面向对象分析与设计的基本概念。 面向对象分析主要强调理解问题是什么,不考虑问题的解决方案,因此A、C选项是正确的;面向对象设计侧重于问题的解决方案,并且需要考虑实现中的细节问题,因此D选项的说法是不正确的。
难度 2 · 作答 1424 次 · 正确率 69.2%
23. 面向对象技术中,组合关系表示______。
- A. 包与其模型元素的关系
- B. 用例之间的一种关系
- C. 类与其对象的关系
- D. 整体与其部分之间的一种关系
答案:D
解析:
本题考查面向对象基础。 在面向对象技术中,组合关系表示整体与其部分之间的一种关系。包用于将关系紧密的模型元。素组织在一起,提供一个命名空间,以提供访问控制。用例之间有包含(include)、扩展(extend) 和泛化(generalization)三种相关性的关系。类是在对象之上的抽象,对象是类的具体化,对定义好的类的属性进行不同的赋值就可以得到该类的对象实例。
难度 2 · 作答 1459 次 · 正确率 68.4%
24. UML类图在软件建模时,给出软件系统的一种静态设计图,用______关系可明确表示两类事务之间存在的特殊/一般关系。
- A. 聚合
- B. 依赖
- C. 泛化
- D. 实现
答案:C
解析:

难度 2 · 作答 1612 次 · 正确率 70.9%
25. (复合题 1/2)(1)正确的选项是?
共用题干: 下图属于UML中的(1),其中,Account Management需要(2)。
- A. 组件图
- B. 部署图
- C. 类图
- D. 对象图
答案:A
解析:
本题考查UML语言基础知识。 UML 语言是标准的建模语言,通过图形化的方式展现系统的模型。本题是UML中的组件图,其表示的含义是组件Account Management需要调用Credit Card Services组件和Logger组件分别实现的Identity Verifier接口和Transaction Logger接口。
难度 2 · 作答 1596 次 · 正确率 72.4%
26. (复合题 2/2)(2)正确的选项是?
共用题干: 下图属于UML中的(1),其中,Account Management需要(2)。
- A. 实现Identity Verifier接口并被Credit Card Services调用
- B. 调用Credit Card Services实现的Identity Verifier接口
- C. 实现Identity Verifier接口并被Logger调用
- D. 调用 Logger实现的Identity Verifier接口
答案:B
解析:
本题考查UML语言基础知识。 UML 语言是标准的建模语言,通过图形化的方式展现系统的模型。本题是UML中的组件图,其表示的含义是组件Account Management需要调用Credit Card Services组件和Logger组件分别实现的Identity Verifier接口和Transaction Logger接口。
难度 2 · 作答 1629 次 · 正确率 64.8%
27. (复合题 1/3)(1)正确的选项是?
共用题干: UML的设计视图包含了类、接口和协作,其中,设计视图的静态方面由(1)和(2)表现;动态方面由交互图、(2)现。
- A. 类图
- B. 状态图
- C. 活动图
- D. 序列图
答案:A
解析:
本题考查统一建模语言(UML)的基本知识。 通常是用一组视图反映系统的各个方面,以完整地描述系统,每个视图代表系统描述中的一个抽象,显示系统中的一个特定的方面。UML2.0中提供了多种图形,从静态和动态两个方面表现系统视图。 类图展现了一组对象、接口、协作和它们之间的关系。对象图展现了一组对象以及其之间的关系,描述了在类图中所建立的事物的实例的静态快照。序列图是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。通信图和序列图同构,强调收发消息的对象的结构组织。状态图展现了一个状态机,由状态、转换、事件和活动组成,它关注系统的动态视图,强调对象行为的事件顺序。活动图是一种特殊的状态图,展现了在系统内从一个活动到另一个活动的流程,它专注于系统的动态视图。序列图、通信图、交互图和定时图均被称为交互图,它们用于对系统的动态方面进行建模。
难度 2 · 作答 1596 次 · 正确率 93.0%
28. (复合题 2/3)(2)正确的选项是?
共用题干: UML的设计视图包含了类、接口和协作,其中,设计视图的静态方面由(1)和(2)表现;动态方面由交互图、(2)现。
- A. 交互图
- B. 对象图
- C. 通信图
- D. 定时图
答案:B
解析:
本题考查统一建模语言(UML)的基本知识。 通常是用一组视图反映系统的各个方面,以完整地描述系统,每个视图代表系统描述中的一个抽象,显示系统中的一个特定的方面。UML2.0中提供了多种图形,从静态和动态两个方面表现系统视图。 类图展现了一组对象、接口、协作和它们之间的关系。对象图展现了一组对象以及其之间的关系,描述了在类图中所建立的事物的实例的静态快照。序列图是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。通信图和序列图同构,强调收发消息的对象的结构组织。状态图展现了一个状态机,由状态、转换、事件和活动组成,它关注系统的动态视图,强调对象行为的事件顺序。活动图是一种特殊的状态图,展现了在系统内从一个活动到另一个活动的流程,它专注于系统的动态视图。序列图、通信图、交互图和定时图均被称为交互图,它们用于对系统的动态方面进行建模。
难度 2 · 作答 1627 次 · 正确率 84.5%
29. (复合题 3/3)(3)正确的选项是?
共用题干: UML的设计视图包含了类、接口和协作,其中,设计视图的静态方面由(1)和(2)表现;动态方面由交互图、(2)现。
- A. 状态图和类图
- B. 类图和活动图
- C. 对象图和状态图
- D. 状态图和活动图
答案:D
解析:
本题考查统一建模语言(UML)的基本知识。 通常是用一组视图反映系统的各个方面,以完整地描述系统,每个视图代表系统描述中的一个抽象,显示系统中的一个特定的方面。UML2.0中提供了多种图形,从静态和动态两个方面表现系统视图。 类图展现了一组对象、接口、协作和它们之间的关系。对象图展现了一组对象以及其之间的关系,描述了在类图中所建立的事物的实例的静态快照。序列图是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。通信图和序列图同构,强调收发消息的对象的结构组织。状态图展现了一个状态机,由状态、转换、事件和活动组成,它关注系统的动态视图,强调对象行为的事件顺序。活动图是一种特殊的状态图,展现了在系统内从一个活动到另一个活动的流程,它专注于系统的动态视图。序列图、通信图、交互图和定时图均被称为交互图,它们用于对系统的动态方面进行建模。
难度 2 · 作答 1599 次 · 正确率 92.1%
30. (复合题 1/2)(1)正确的选项是?
共用题干: UML图中,对新开发系统的需求进行建模,规划开发什么功能或测试用例,采用(1)最适合。而展示交付系统的软件组件和硬件之间的关系的图是(2)。
- A. 类图
- B. 对象图
- C. 用例图
- D. 交互图
答案:C
解析:
本题考查统一建模语言(UML)的基本知识。 UML中提供了多种建模系统需求的图,体现系统的静态方面和动态方面。 类图(Class Diagram)展现了一组对象、接口、协作和它们之间的关系。在面向对象系统的建模中,最常见的就是类图,它给出系统的静态设计视图。对象图(Object Diagram)展现了某一时刻一组对象以及它们之间的关系。对象图描述了在类图中所建立的事物的实例的静态快照,给出系统的静态设计视图或静态进程视图。用例图(Use Case Diagram)展现了一组用例、参与者(Actor)以及它们之间的关系。这个视图主要支持系统的行为,即该系统在它的周边环境的语境中所提供的外部可见服务。用例图用于对一个系统的需求进行建模,包括说明这个系统应该做什么(从系统外部的一个视点出发),而不考虑系统应该怎样做。交互图用于对系统的动态方面进行建模。一张交互图表现的是一个交互,由一组对象和它们之间的关系组成,包含它们之间可能传递的消息。交互图表现为序列图、通信图、交互概览图和时序图,每种针对不同的目的,能适用于不同的情况。序列图是强调消息时间顺序的交互图;通信图是强调接收和发送消息的对象的结构组织的交互图;交互概览图强调控制流的交互图。时序图(Timing Diagram)关注沿着线性时间轴、生命线内部和生命线之间的条件改变。 部署图(Deployment Diagram)是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。组件图(Component Diagram)展现了一组组件之间的组织和依赖。
难度 2 · 作答 1646 次 · 正确率 74.5%
31. (复合题 2/2)(2)正确的选项是?
共用题干: UML图中,对新开发系统的需求进行建模,规划开发什么功能或测试用例,采用(1)最适合。而展示交付系统的软件组件和硬件之间的关系的图是(2)。
- A. 类图
- B. 部署图
- C. 组件图
- D. 网络图
答案:B
解析:
本题考查统一建模语言(UML)的基本知识。 UML中提供了多种建模系统需求的图,体现系统的静态方面和动态方面。 类图(Class Diagram)展现了一组对象、接口、协作和它们之间的关系。在面向对象系统的建模中,最常见的就是类图,它给出系统的静态设计视图。对象图(Object Diagram)展现了某一时刻一组对象以及它们之间的关系。对象图描述了在类图中所建立的事物的实例的静态快照,给出系统的静态设计视图或静态进程视图。用例图(Use Case Diagram)展现了一组用例、参与者(Actor)以及它们之间的关系。这个视图主要支持系统的行为,即该系统在它的周边环境的语境中所提供的外部可见服务。用例图用于对一个系统的需求进行建模,包括说明这个系统应该做什么(从系统外部的一个视点出发),而不考虑系统应该怎样做。交互图用于对系统的动态方面进行建模。一张交互图表现的是一个交互,由一组对象和它们之间的关系组成,包含它们之间可能传递的消息。交互图表现为序列图、通信图、交互概览图和时序图,每种针对不同的目的,能适用于不同的情况。序列图是强调消息时间顺序的交互图;通信图是强调接收和发送消息的对象的结构组织的交互图;交互概览图强调控制流的交互图。时序图(Timing Diagram)关注沿着线性时间轴、生命线内部和生命线之间的条件改变。 部署图(Deployment Diagram)是用来对面向对象系统的物理方面建模的方法,展现了运行时处理结点以及其中构件(制品)的配置。组件图(Component Diagram)展现了一组组件之间的组织和依赖。
难度 2 · 作答 1693 次 · 正确率 61.4%
32. (复合题 1/2)(1)正确的选项是?
共用题干: UML中有4种关系:依赖、关联、泛化和实现。 (1) 是一种结构关系,描述了一组链,链是对象之间的连接; (2) 是一种特殊/一般关系,使子元素共享其父元素的结构和行为。
- A. 依赖
- B. 关联
- C. 泛化
- D. 实现
答案:B
解析:
本题考查统一建模语言(UML)的基本知识。 UML是面向对象软件的标准化建模语言,由三个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制。UML的词汇表包含三种构造块:事物、关系和图。事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。其中关系包括4种:依赖、关联、泛化和实现。 依赖(Dependency)是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。关联(Association)是一种结构关系,它描述了一组链,链是对象之间的连接。泛化(Generalization)是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象,用这种方法,子元素共享了父元素的结构和行为。实现(Realization)是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。
难度 2 · 作答 1541 次 · 正确率 73.1%
33. (复合题 2/2)(2)正确的选项是?
共用题干: UML中有4种关系:依赖、关联、泛化和实现。 (1) 是一种结构关系,描述了一组链,链是对象之间的连接; (2) 是一种特殊/一般关系,使子元素共享其父元素的结构和行为。
- A. 依赖
- B. 关联
- C. 泛化
- D. 实现
答案:C
解析:
本题考查统一建模语言(UML)的基本知识。 UML是面向对象软件的标准化建模语言,由三个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制。UML的词汇表包含三种构造块:事物、关系和图。事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。其中关系包括4种:依赖、关联、泛化和实现。 依赖(Dependency)是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。关联(Association)是一种结构关系,它描述了一组链,链是对象之间的连接。泛化(Generalization)是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象,用这种方法,子元素共享了父元素的结构和行为。实现(Realization)是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。
难度 2 · 作答 1514 次 · 正确率 85.9%
34. (复合题 1/2)(1)正确的选项是?
共用题干: 下图所示UML图为(1),有关该图的叙述中,不正确的是(2)。
- A. 对象图
- B. 类图
- C. 组件图
- D. 部署图
答案:B
解析:
本题考查统一建模语言(UML)基本知识。 UML对象图、类图、组件图和部署图各自刻画系统的不同方面。其中,类图展现了一组对象、接口、协作及其之间的关系;对象图展现了某一时刻一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例的静态快照;组件图展示一组组件之间的组织和依赖,它与类图相关,通常可以把组件映射为一个或多个类、接口或协作;部署图展现了运行时处理结点以及其中构件的配置。 题图所示为在面向对象系统的建模中所建立的最常见的图,即UML类图。图中A和B分别表示两个类。类A和类B之间◆——表示聚集关系,是一种特殊类型的关联,描述了整体和部分间的结构关系,聚集上的多重度表示关联的实例的个数,即类A的一个实例为整体,由不同个数类B的实例聚集而成。A的一个实例可以与B的一个或多个实例关联;而B的一个实例仅与A的一个实例关联,只作为A的一个实例的部分;如果A的一个实例被删除,则所包含的B的实例都被删除。图中类B上存在一元关联,其上多重度表示B的一个实例可与B的其他一个或多个实例关联。
难度 2 · 作答 1575 次 · 正确率 63.9%
35. (复合题 2/2)有关该图的叙述中,不正确的是(2)。
共用题干: 下图所示UML图为(1),有关该图的叙述中,不正确的是(2)。
- A. 如果B的一个实例被删除,所有包含A的实例都被删除
- B. A的一个实例可以与B的一个实例关联
- C. B的一个实例被唯一的一个A的实例所包含
- D. B的一个实例可与B的另外两个实例关联
答案:A
解析:
本题考查统一建模语言(UML)基本知识。 UML对象图、类图、组件图和部署图各自刻画系统的不同方面。其中,类图展现了一组对象、接口、协作及其之间的关系;对象图展现了某一时刻一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例的静态快照;组件图展示一组组件之间的组织和依赖,它与类图相关,通常可以把组件映射为一个或多个类、接口或协作;部署图展现了运行时处理结点以及其中构件的配置。 题图所示为在面向对象系统的建模中所建立的最常见的图,即UML类图。图中A和B分别表示两个类。类A和类B之间◆——表示聚集关系,是一种特殊类型的关联,描述了整体和部分间的结构关系,聚集上的多重度表示关联的实例的个数,即类A的一个实例为整体,由不同个数类B的实例聚集而成。A的一个实例可以与B的一个或多个实例关联;而B的一个实例仅与A的一个实例关联,只作为A的一个实例的部分;如果A的一个实例被删除,则所包含的B的实例都被删除。图中类B上存在一元关联,其上多重度表示B的一个实例可与B的其他一个或多个实例关联。
难度 2 · 作答 1565 次 · 正确率 63.4%
36. 观察者(Observer)模式适用于______。
- A. 访问一个聚合对象的内容,而无需暴露他的内部表示
- B. 减少多个对象或类之间的通信复杂性
- C. 将对象的状态恢复到先前的状态
- D. 一对多对象依赖关系。当一个对象修改后,依赖他的对象都自动得到通知
答案:D
解析:
观察者模式(Observer): ●定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。 ●分类:行为型对象模式。
难度 2 · 作答 1426 次 · 正确率 77.7%
37. ______模式可以给对象动态地添加一些额外的职责,而不改变该对象的结构。
- A. 装饰(Decorator)
- B. 外观(Facade)
- C. 组合(Composite)
- D. 享元(Flyweight)
答案:A
解析:
装饰模式(Decorator) ●定义:动态地给一个对象添加一些额外的职责。 ●分类:结构型对象模式。 ●适用场景:①在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 ②处理那些可以撤销的职责。 ③当不能采用生成子类的方式进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是,由于类定义被隐藏,或类定义不能用于生成子类。
难度 2 · 作答 1327 次 · 正确率 90.3%
38. 在设计某购物中心的收银软件系统时,要求能够支持在不同时期推出打折、返利、满减等不同促销活动,则适合采用______模式。
- A. 策略(Strategy)
- B. 访问者(Visitor)
- C. 观察者(Observer)
- D. 中介者(Mediator)
答案:A
解析:
使用策略模式可以将不同时期的促销活动定义为一个个算法,进行封装,它们彼此可以互相替换,也能独立于使用它们的客户而变化。客户也不必知道算法使用的数据,避免暴露相关数据结构。
难度 2 · 作答 1282 次 · 正确率 86.9%
39. (复合题 1/3)(1)正确的选项是?
共用题干: 当不适合采用生成子类的方法对已有的类进行扩充时,可以采用(1)设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象造成很大的存储开销时,可以采用(2)设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用(3)设计模式将该类的接口转换成想要的接口。
- A. 命令(Command)
- B. 适配器(Adapter)
- C. 装饰(Decorator)
- D. 享元(Flyweight)
答案:C
解析:
本题考查23种设计模式。 装饰模式主要的目的是在无法生成子类的情况下,给一个对象动态地增加新的职责;享元设计模式是共享大量细粒度的对象;适配器设计模式则是将已有的接口转换为系统需要的接口形式。
难度 2 · 作答 1582 次 · 正确率 83.8%
40. (复合题 2/3)(2)正确的选项是?
共用题干: 当不适合采用生成子类的方法对已有的类进行扩充时,可以采用(1)设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象造成很大的存储开销时,可以采用(2)设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用(3)设计模式将该类的接口转换成想要的接口。
- A. 命令(Command)
- B. 适配器(Adapter)
- C. 装饰(Decorator)
- D. 享元(Flyweight)
答案:D
解析:
本题考查23种设计模式。 装饰模式主要的目的是在无法生成子类的情况下,给一个对象动态地增加新的职责;享元设计模式是共享大量细粒度的对象;适配器设计模式则是将已有的接口转换为系统需要的接口形式。
难度 2 · 作答 1574 次 · 正确率 87.7%
41. (复合题 3/3)(3)正确的选项是?
共用题干: 当不适合采用生成子类的方法对已有的类进行扩充时,可以采用(1)设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象造成很大的存储开销时,可以采用(2)设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用(3)设计模式将该类的接口转换成想要的接口。
- A. 命令(Command)
- B. 适配器(Adapter)
- C. 装饰(Decorator)
- D. 享元(Flyweight)
答案:B
解析:
本题考查23种设计模式。 装饰模式主要的目的是在无法生成子类的情况下,给一个对象动态地增加新的职责;享元设计模式是共享大量细粒度的对象;适配器设计模式则是将已有的接口转换为系统需要的接口形式。
难度 2 · 作答 1568 次 · 正确率 91.0%
42. (复合题 1/3)(1)正确的选项是?
共用题干: 在某系统中,不同组(Group)访问数据的权限不同,每个用户(User)可以是一个或多个组中的成员,每个组包含零个或多个用户。现要求在用户和组之间设计映射,将用户和组之间的关系由映射进行维修,得到如下所示的类图。该设计采用(1)模式,用一个对象来封装一系列的对象交互;使用户对象和组对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变它们之间地交互。该模式属于(2),该模式适用(3) 。
- A. 状态(State)
- B. 策略(Strategy)
- C. 解释器(Interpreter)
- D. 中介者(Mediator)
答案:D
解析:
本题考查23种常见设计模式的理解和应用场景。 中介者模式用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,这类似于"电话接线员"。中介者模式属于行为型对象模式,适应于下列情况:①一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解;②一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象;③想定制一个分布在多个类中的行为,而又不想生成太多的子类。第三个空中选项A是策略模式,选项B是解释器模式,选项C是状态模式。
难度 2 · 作答 1475 次 · 正确率 69.2%
43. (复合题 2/3)(2)正确的选项是?
共用题干: 在某系统中,不同组(Group)访问数据的权限不同,每个用户(User)可以是一个或多个组中的成员,每个组包含零个或多个用户。现要求在用户和组之间设计映射,将用户和组之间的关系由映射进行维修,得到如下所示的类图。该设计采用(1)模式,用一个对象来封装一系列的对象交互;使用户对象和组对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变它们之间地交互。该模式属于(2),该模式适用(3) 。
- A. 创建型类
- B. 创建型对象
- C. 行为型对象
- D. 行为型类
答案:C
解析:
本题考查23种常见设计模式的理解和应用场景。 中介者模式用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,这类似于"电话接线员"。中介者模式属于行为型对象模式,适应于下列情况:①一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解;②一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象;③想定制一个分布在多个类中的行为,而又不想生成太多的子类。第三个空中选项A是策略模式,选项B是解释器模式,选项C是状态模式。
难度 2 · 作答 1464 次 · 正确率 68.2%
44. (复合题 3/3)(3)正确的选项是?
共用题干: 在某系统中,不同组(Group)访问数据的权限不同,每个用户(User)可以是一个或多个组中的成员,每个组包含零个或多个用户。现要求在用户和组之间设计映射,将用户和组之间的关系由映射进行维修,得到如下所示的类图。该设计采用(1)模式,用一个对象来封装一系列的对象交互;使用户对象和组对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变它们之间地交互。该模式属于(2),该模式适用(3) 。
- A. 需要使用一个算法地不同变体
- B. 有一个语言需要解释执行,并且可将句子表示为一个抽象语法树
- C. 一个对象地行为决定于其状态且必须在运行时刻根据状态改变行为
- D. 一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解
答案:D
解析:
本题考查23种常见设计模式的理解和应用场景。 中介者模式用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,这类似于"电话接线员"。中介者模式属于行为型对象模式,适应于下列情况:①一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解;②一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象;③想定制一个分布在多个类中的行为,而又不想生成太多的子类。第三个空中选项A是策略模式,选项B是解释器模式,选项C是状态模式。
难度 2 · 作答 1432 次 · 正确率 73.3%
45. (复合题 1/4)(1)正确的选项是?
共用题干: 某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但制作过程相同。前台服务员(Waiter)调度厨师制作套餐。欲开发一软件,实现该制作过程,设计如下所示类图。该设计采用(1)模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。其中,(2)构造一个使用Builder 接口的对象。该模式属于(3)模式,该模式适用于(4)的情况。
- A. 生成器(Builder)
- B. 抽象工厂(Abstract Factory)
- C. 原型(Prototype)
- D. 工厂方法(Factory Method)
答案:A
解析:
在软件系统中,有时候面临着"复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。这种情况下可使用建造者模式(Builder Pattern),建造者模式也称生成器模式,它使用多个简单的对象一步一步构建成一个复杂的对象,这种类型的设计模式属于创建型模式。 本例中,Waiter对象聚合(菱形+实线箭头)PizzaBuilder接口,使得Waiter对象通过调用PizzaBuilder 接口,实现不同的儿童套餐,也就是同样的Waiter实例化(构建)过程,可以创建不同的儿童套餐(表示)而HawalianPizzaBuilder接口与SpicyPizzalBuilder接口对PizzaBuilder进行了继承,并依赖于Pizza对象。 生成器模式适用于两种情况,一是当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时,二是当构造过程必须允许被构造的对象有不同的表示时。
难度 2 · 作答 1627 次 · 正确率 55.3%
46. (复合题 2/4)(2)正确的选项是?
共用题干: 某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但制作过程相同。前台服务员(Waiter)调度厨师制作套餐。欲开发一软件,实现该制作过程,设计如下所示类图。该设计采用(1)模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。其中,(2)构造一个使用Builder 接口的对象。该模式属于(3)模式,该模式适用于(4)的情况。
- A. PizzaBuilder
- B. SpicyPizzaBuilder
- C. Waiter
- D. Pizza
答案:C
解析:
在软件系统中,有时候面临着"复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。这种情况下可使用建造者模式(Builder Pattern),建造者模式也称生成器模式,它使用多个简单的对象一步一步构建成一个复杂的对象,这种类型的设计模式属于创建型模式。 本例中,Waiter对象聚合(菱形+实线箭头)PizzaBuilder接口,使得Waiter对象通过调用PizzaBuilder 接口,实现不同的儿童套餐,也就是同样的Waiter实例化(构建)过程,可以创建不同的儿童套餐(表示)而HawalianPizzaBuilder接口与SpicyPizzalBuilder接口对PizzaBuilder进行了继承,并依赖于Pizza对象。 生成器模式适用于两种情况,一是当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时,二是当构造过程必须允许被构造的对象有不同的表示时。
难度 2 · 作答 1621 次 · 正确率 47.9%
47. (复合题 3/4)(3)正确的选项是?
共用题干: 某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但制作过程相同。前台服务员(Waiter)调度厨师制作套餐。欲开发一软件,实现该制作过程,设计如下所示类图。该设计采用(1)模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。其中,(2)构造一个使用Builder 接口的对象。该模式属于(3)模式,该模式适用于(4)的情况。
- A. 创建型对象
- B. 结构型对象
- C. 行为型对象
- D. 结构型类
答案:A
解析:
在软件系统中,有时候面临着"复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。这种情况下可使用建造者模式(Builder Pattern),建造者模式也称生成器模式,它使用多个简单的对象一步一步构建成一个复杂的对象,这种类型的设计模式属于创建型模式。 本例中,Waiter对象聚合(菱形+实线箭头)PizzaBuilder接口,使得Waiter对象通过调用PizzaBuilder 接口,实现不同的儿童套餐,也就是同样的Waiter实例化(构建)过程,可以创建不同的儿童套餐(表示)而HawalianPizzaBuilder接口与SpicyPizzalBuilder接口对PizzaBuilder进行了继承,并依赖于Pizza对象。 生成器模式适用于两种情况,一是当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时,二是当构造过程必须允许被构造的对象有不同的表示时。
难度 2 · 作答 1573 次 · 正确率 68.8%
48. (复合题 4/4)(4)正确的选项是?
共用题干: 某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但制作过程相同。前台服务员(Waiter)调度厨师制作套餐。欲开发一软件,实现该制作过程,设计如下所示类图。该设计采用(1)模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。其中,(2)构造一个使用Builder 接口的对象。该模式属于(3)模式,该模式适用于(4)的情况。
- A. 当一个系统应该独立于它的产品创建、构成和表示时
- B. 当一个类希望由它的子类来指定它所创建的对象的时候
- C. 当要强调一系列相关的产品对象的设计以便进行联合使用时
- D. 当构造过程必须允许被构造的对象有不同的表示时
答案:D
解析:
在软件系统中,有时候面临着"复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。这种情况下可使用建造者模式(Builder Pattern),建造者模式也称生成器模式,它使用多个简单的对象一步一步构建成一个复杂的对象,这种类型的设计模式属于创建型模式。 本例中,Waiter对象聚合(菱形+实线箭头)PizzaBuilder接口,使得Waiter对象通过调用PizzaBuilder 接口,实现不同的儿童套餐,也就是同样的Waiter实例化(构建)过程,可以创建不同的儿童套餐(表示)而HawalianPizzaBuilder接口与SpicyPizzalBuilder接口对PizzaBuilder进行了继承,并依赖于Pizza对象。 生成器模式适用于两种情况,一是当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时,二是当构造过程必须允许被构造的对象有不同的表示时。
难度 2 · 作答 1595 次 · 正确率 49.0%
49. (复合题 1/3)(1)正确的选项是?
共用题干: 以下设计模式中, (1) 模式使多个对象都有机会处理请求,将这些对象连成一条链, 并沿着这条链传递该请求,直到有一个对象处理为止,从而避免请求的发送者和接收者之间的耦合关系; (2) 模式提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示。这两种模式均为 (3) 。
- A. 责任链(Chain of Responsibility)
- B. 解释器(Interpreter)
- C. 命令(Command)
- D. 迭代器(Iterator)
答案:A
解析:
本题考查23种常见设计模式的理解和应用场景。
按照设计模式的目的可以分为创建新模式、结构型模式以及行为型模式三大类。结构型模式涉及如何组合类和对象以获得更大的结构,行为模式涉及算法和对象间职责的分配。每种设计模式都有特定的意图和适用情况。
责任链的主要意图是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止,其结构图如下图所示。
解释器模式的主要意图是给定一个语言,定义其文法的一种表示,并定义一个使用该表示来解释语言中句子的解释器。其结构图如下图所示。
命令模式的主要意图是将一个请求封装为一个对象,从而使得可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作,其结构图如下图所示。
迭代器模式的主要意图是提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示,其结构图如下图所示。
责任链模式、解释器模式、命令模式和迭代器模式均为行为型设计模式,其中解释器模式为行为型类模式,其他三种模式均为行为型对象模式。
难度 2 · 作答 1365 次 · 正确率 95.2%
50. (复合题 2/3)(2)正确的选项是?
共用题干: 以下设计模式中, (1) 模式使多个对象都有机会处理请求,将这些对象连成一条链, 并沿着这条链传递该请求,直到有一个对象处理为止,从而避免请求的发送者和接收者之间的耦合关系; (2) 模式提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示。这两种模式均为 (3) 。
- A. 责任链(Chain of Responsibility)
- B. 解释器(Interpreter)
- C. 命令(Command)
- D. 迭代器(Iterator)
答案:D
解析:
本题考查23种常见设计模式的理解和应用场景。
按照设计模式的目的可以分为创建新模式、结构型模式以及行为型模式三大类。结构型模式涉及如何组合类和对象以获得更大的结构,行为模式涉及算法和对象间职责的分配。每种设计模式都有特定的意图和适用情况。
责任链的主要意图是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止,其结构图如下图所示。
解释器模式的主要意图是给定一个语言,定义其文法的一种表示,并定义一个使用该表示来解释语言中句子的解释器。其结构图如下图所示。
命令模式的主要意图是将一个请求封装为一个对象,从而使得可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作,其结构图如下图所示。
迭代器模式的主要意图是提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示,其结构图如下图所示。
责任链模式、解释器模式、命令模式和迭代器模式均为行为型设计模式,其中解释器模式为行为型类模式,其他三种模式均为行为型对象模式。
难度 2 · 作答 1452 次 · 正确率 73.6%
51. (复合题 3/3)(3)正确的选项是?
共用题干: 以下设计模式中, (1) 模式使多个对象都有机会处理请求,将这些对象连成一条链, 并沿着这条链传递该请求,直到有一个对象处理为止,从而避免请求的发送者和接收者之间的耦合关系; (2) 模式提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示。这两种模式均为 (3) 。
- A. 创建型对象模式
- B. 结构型对象模式
- C. 行为型对象模式
- D. 行为型类模式
答案:C
解析:
本题考查23种常见设计模式的理解和应用场景。
按照设计模式的目的可以分为创建新模式、结构型模式以及行为型模式三大类。结构型模式涉及如何组合类和对象以获得更大的结构,行为模式涉及算法和对象间职责的分配。每种设计模式都有特定的意图和适用情况。
责任链的主要意图是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止,其结构图如下图所示。
解释器模式的主要意图是给定一个语言,定义其文法的一种表示,并定义一个使用该表示来解释语言中句子的解释器。其结构图如下图所示。
命令模式的主要意图是将一个请求封装为一个对象,从而使得可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作,其结构图如下图所示。
迭代器模式的主要意图是提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示,其结构图如下图所示。
责任链模式、解释器模式、命令模式和迭代器模式均为行为型设计模式,其中解释器模式为行为型类模式,其他三种模式均为行为型对象模式。
难度 2 · 作答 1429 次 · 正确率 71.1%
52. (复合题 1/4)(1)正确的选项是?
共用题干: 欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形,该绘图软件的扩展性要求将不断扩充新的图形和新的绘图程序,以绘制直线和图形为例,得到如下图所示的类图,该设计采用(1)模式将抽象部分与其实现部分分离,使它们都可以独立地变化。其中(2)定义了实现类地接口,该模式适用于(3)的情况,该模式属于(4)模式。
- A. 适配器(Adapter)
- B. 装饰(Decorator)
- C. 桥接(Bridge)
- D. 组合(Composite)
答案:C
解析:
本题考查23种常见设计模式的理解和应用场景。
按照设计模式的目的可以分为创建型模式、结构型模式以及行为型模式三大类。结构型模式涉及如何组合类和对象以获得更大的结构,行为模式涉及算法和对象间职责的分配。适配器((Adapter)模式、装饰器(Decorator)模式、桥接((Bridge)模式和组合(Composite)模式均为结构型设计模式,其中适配器模式有适配器类模式和对象模式,其他三个均为结构型对象模式。每种设计模式都有特定的意图和适用情况。
适配器模式的主要意图是:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。类适配器使用多重继承对一个接口与另一个接口进行匹配,对象适配器依赖于对象组合,对象适配器结构图如下所示。
其中,Target定义Client使用的与特定领域相关的接口;Client与符合Target接口的对象协同;Adaptee定义一个已经存在的接口,这个接口需要适配;Adapter对Adaptee的接口与Target接口进行适配。
适配器模式适用于:①想使用一个已经存在的类,而它的接口不符合要求;②想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;③(仅适用于对象Adapter)想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口,对象适配器可以适配它的父类接口。
装饰模式的主要意图是:动态地给一个对象添加一些额外的职责。就增加功能而言,Decorator模式比生成子类更加灵活。其结构图如下所示。
其中,Component定义一个对象接口,可以给这些对象动态地添加职责;ConcreteComponent定义一个对象,可以给这个对象添加一些职责;Decorator维持一个指向Component对象的指针,并定义一个与Component接口一致的接口;ConcreteDecorator向组件添加职责。
装饰模式适用于:①在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责;②处理那些可以撤销的职责;③当不能采用生成子类的方式进行扩充时。
桥接模式的主要意图是:将抽象部分与其实现部分分离,使它们都可以独立地变化。其结构图如下所示。
其中,客户程序(Client)使用的主要接口是Abstraction,它定义抽象类的接口,维护一个指向Implementor类型对象的指针(引用),这一关系是组成关系,此实现遵循的"优先选用组合而不是继承"这一原则;RefinedAbstraction扩充由Abstraction定义的接口;Implementor定义实现类的接口,该接口不一定要与Abstraction的接口完全一致;事实上这两个接口可以完全不同。一般来说,Implementor接口仅提供基本操作,而Abstraction定义了基于这些基本操作的较高层次的操作;Concretelmplementor实现Implementor接口并定义它的具体实现。
桥接模式适用于:①不希望在抽象和它的实现部分之间有一个固定的绑定关系;②类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充;③对一个抽象的实现部分的修改应对客户不产生影响,即客户代码不必重新编译;④想对客户完全隐藏抽象的实现部分;⑤有许多类要生成的类层次结构。
组合模式的主要意图是:将对象组合成树型结构以表示"部分---整体"的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。其结构图如下所示。
其中,Component为组合中的对象声明接口,提供给Client操纵组合组件的对象;在适当情况下实现所有类共有接口的默认行为;声明一个接口用于访问和管理Component的子组件。Leaf在组合中表示叶结点对象,叶结点没有子结点;在组合中定义图元对象的行为。Composite定义有子组件的那些组件的行为,存储子组件,在Component接口中实现与子组件有关的操作。
组合模式适用于:①欲表示对象的部分---整体层次结构;②希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
本题描述绘图软件要求使用不同的绘图程序绘制不同的图形,其扩展性要求将不断扩充新的图形和新的绘图程序。题图所示的类图中,设计采用了桥接模式,将抽象图形部分与绘制实现部分分离。Shape对应桥接模式中的Abstraction,定义图形抽象类接口,维护一个指向Drawing的指针(引用),其子类Rectangle和Circle等为具体形状;Drawing对应Implementor,定义绘图实现的接口;V1Drawing和V2Drawing则为实现Drawing接口的具体绘图实现。
难度 2 · 作答 1451 次 · 正确率 62.0%
53. (复合题 2/4)(2)正确的选项是?
共用题干: 欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形,该绘图软件的扩展性要求将不断扩充新的图形和新的绘图程序,以绘制直线和图形为例,得到如下图所示的类图,该设计采用(1)模式将抽象部分与其实现部分分离,使它们都可以独立地变化。其中(2)定义了实现类地接口,该模式适用于(3)的情况,该模式属于(4)模式。
- A. Shape
- B. Circle和Rectangle
- C. V1Drawing和V2Drawing
- D. Drawing
答案:D
解析:
本题考查23种常见设计模式的理解和应用场景。
按照设计模式的目的可以分为创建型模式、结构型模式以及行为型模式三大类。结构型模式涉及如何组合类和对象以获得更大的结构,行为模式涉及算法和对象间职责的分配。适配器((Adapter)模式、装饰器(Decorator)模式、桥接((Bridge)模式和组合(Composite)模式均为结构型设计模式,其中适配器模式有适配器类模式和对象模式,其他三个均为结构型对象模式。每种设计模式都有特定的意图和适用情况。
适配器模式的主要意图是:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。类适配器使用多重继承对一个接口与另一个接口进行匹配,对象适配器依赖于对象组合,对象适配器结构图如下所示。
其中,Target定义Client使用的与特定领域相关的接口;Client与符合Target接口的对象协同;Adaptee定义一个已经存在的接口,这个接口需要适配;Adapter对Adaptee的接口与Target接口进行适配。
适配器模式适用于:①想使用一个已经存在的类,而它的接口不符合要求;②想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;③(仅适用于对象Adapter)想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口,对象适配器可以适配它的父类接口。
装饰模式的主要意图是:动态地给一个对象添加一些额外的职责。就增加功能而言,Decorator模式比生成子类更加灵活。其结构图如下所示。
其中,Component定义一个对象接口,可以给这些对象动态地添加职责;ConcreteComponent定义一个对象,可以给这个对象添加一些职责;Decorator维持一个指向Component对象的指针,并定义一个与Component接口一致的接口;ConcreteDecorator向组件添加职责。
装饰模式适用于:①在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责;②处理那些可以撤销的职责;③当不能采用生成子类的方式进行扩充时。
桥接模式的主要意图是:将抽象部分与其实现部分分离,使它们都可以独立地变化。其结构图如下所示。
其中,客户程序(Client)使用的主要接口是Abstraction,它定义抽象类的接口,维护一个指向Implementor类型对象的指针(引用),这一关系是组成关系,此实现遵循的"优先选用组合而不是继承"这一原则;RefinedAbstraction扩充由Abstraction定义的接口;Implementor定义实现类的接口,该接口不一定要与Abstraction的接口完全一致;事实上这两个接口可以完全不同。一般来说,Implementor接口仅提供基本操作,而Abstraction定义了基于这些基本操作的较高层次的操作;Concretelmplementor实现Implementor接口并定义它的具体实现。
桥接模式适用于:①不希望在抽象和它的实现部分之间有一个固定的绑定关系;②类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充;③对一个抽象的实现部分的修改应对客户不产生影响,即客户代码不必重新编译;④想对客户完全隐藏抽象的实现部分;⑤有许多类要生成的类层次结构。
组合模式的主要意图是:将对象组合成树型结构以表示"部分---整体"的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。其结构图如下所示。
其中,Component为组合中的对象声明接口,提供给Client操纵组合组件的对象;在适当情况下实现所有类共有接口的默认行为;声明一个接口用于访问和管理Component的子组件。Leaf在组合中表示叶结点对象,叶结点没有子结点;在组合中定义图元对象的行为。Composite定义有子组件的那些组件的行为,存储子组件,在Component接口中实现与子组件有关的操作。
组合模式适用于:①欲表示对象的部分---整体层次结构;②希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
本题描述绘图软件要求使用不同的绘图程序绘制不同的图形,其扩展性要求将不断扩充新的图形和新的绘图程序。题图所示的类图中,设计采用了桥接模式,将抽象图形部分与绘制实现部分分离。Shape对应桥接模式中的Abstraction,定义图形抽象类接口,维护一个指向Drawing的指针(引用),其子类Rectangle和Circle等为具体形状;Drawing对应Implementor,定义绘图实现的接口;V1Drawing和V2Drawing则为实现Drawing接口的具体绘图实现。
难度 2 · 作答 1458 次 · 正确率 44.7%
54. (复合题 3/4)(3)正确的选项是?
共用题干: 欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形,该绘图软件的扩展性要求将不断扩充新的图形和新的绘图程序,以绘制直线和图形为例,得到如下图所示的类图,该设计采用(1)模式将抽象部分与其实现部分分离,使它们都可以独立地变化。其中(2)定义了实现类地接口,该模式适用于(3)的情况,该模式属于(4)模式。
- A. 不希望在抽象和它的实现部分之间有一个固定绑定关系
- B. 想表示对象的部分---整体层次结构
- C. 想使用一个已经存在的类,而它的接口不符合要求
- D. 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
答案:A
解析:
本题考查23种常见设计模式的理解和应用场景。
按照设计模式的目的可以分为创建型模式、结构型模式以及行为型模式三大类。结构型模式涉及如何组合类和对象以获得更大的结构,行为模式涉及算法和对象间职责的分配。适配器((Adapter)模式、装饰器(Decorator)模式、桥接((Bridge)模式和组合(Composite)模式均为结构型设计模式,其中适配器模式有适配器类模式和对象模式,其他三个均为结构型对象模式。每种设计模式都有特定的意图和适用情况。
适配器模式的主要意图是:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。类适配器使用多重继承对一个接口与另一个接口进行匹配,对象适配器依赖于对象组合,对象适配器结构图如下所示。
其中,Target定义Client使用的与特定领域相关的接口;Client与符合Target接口的对象协同;Adaptee定义一个已经存在的接口,这个接口需要适配;Adapter对Adaptee的接口与Target接口进行适配。
适配器模式适用于:①想使用一个已经存在的类,而它的接口不符合要求;②想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;③(仅适用于对象Adapter)想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口,对象适配器可以适配它的父类接口。
装饰模式的主要意图是:动态地给一个对象添加一些额外的职责。就增加功能而言,Decorator模式比生成子类更加灵活。其结构图如下所示。
其中,Component定义一个对象接口,可以给这些对象动态地添加职责;ConcreteComponent定义一个对象,可以给这个对象添加一些职责;Decorator维持一个指向Component对象的指针,并定义一个与Component接口一致的接口;ConcreteDecorator向组件添加职责。
装饰模式适用于:①在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责;②处理那些可以撤销的职责;③当不能采用生成子类的方式进行扩充时。
桥接模式的主要意图是:将抽象部分与其实现部分分离,使它们都可以独立地变化。其结构图如下所示。
其中,客户程序(Client)使用的主要接口是Abstraction,它定义抽象类的接口,维护一个指向Implementor类型对象的指针(引用),这一关系是组成关系,此实现遵循的"优先选用组合而不是继承"这一原则;RefinedAbstraction扩充由Abstraction定义的接口;Implementor定义实现类的接口,该接口不一定要与Abstraction的接口完全一致;事实上这两个接口可以完全不同。一般来说,Implementor接口仅提供基本操作,而Abstraction定义了基于这些基本操作的较高层次的操作;Concretelmplementor实现Implementor接口并定义它的具体实现。
桥接模式适用于:①不希望在抽象和它的实现部分之间有一个固定的绑定关系;②类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充;③对一个抽象的实现部分的修改应对客户不产生影响,即客户代码不必重新编译;④想对客户完全隐藏抽象的实现部分;⑤有许多类要生成的类层次结构。
组合模式的主要意图是:将对象组合成树型结构以表示"部分---整体"的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。其结构图如下所示。
其中,Component为组合中的对象声明接口,提供给Client操纵组合组件的对象;在适当情况下实现所有类共有接口的默认行为;声明一个接口用于访问和管理Component的子组件。Leaf在组合中表示叶结点对象,叶结点没有子结点;在组合中定义图元对象的行为。Composite定义有子组件的那些组件的行为,存储子组件,在Component接口中实现与子组件有关的操作。
组合模式适用于:①欲表示对象的部分---整体层次结构;②希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
本题描述绘图软件要求使用不同的绘图程序绘制不同的图形,其扩展性要求将不断扩充新的图形和新的绘图程序。题图所示的类图中,设计采用了桥接模式,将抽象图形部分与绘制实现部分分离。Shape对应桥接模式中的Abstraction,定义图形抽象类接口,维护一个指向Drawing的指针(引用),其子类Rectangle和Circle等为具体形状;Drawing对应Implementor,定义绘图实现的接口;V1Drawing和V2Drawing则为实现Drawing接口的具体绘图实现。
难度 2 · 作答 1395 次 · 正确率 65.4%
55. (复合题 4/4)(4)正确的选项是?
共用题干: 欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形,该绘图软件的扩展性要求将不断扩充新的图形和新的绘图程序,以绘制直线和图形为例,得到如下图所示的类图,该设计采用(1)模式将抽象部分与其实现部分分离,使它们都可以独立地变化。其中(2)定义了实现类地接口,该模式适用于(3)的情况,该模式属于(4)模式。
- A. 创建型对象
- B. 结构型对象
- C. 行为型对象
- D. 结构型类
答案:B
解析:
本题考查23种常见设计模式的理解和应用场景。
按照设计模式的目的可以分为创建型模式、结构型模式以及行为型模式三大类。结构型模式涉及如何组合类和对象以获得更大的结构,行为模式涉及算法和对象间职责的分配。适配器((Adapter)模式、装饰器(Decorator)模式、桥接((Bridge)模式和组合(Composite)模式均为结构型设计模式,其中适配器模式有适配器类模式和对象模式,其他三个均为结构型对象模式。每种设计模式都有特定的意图和适用情况。
适配器模式的主要意图是:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。类适配器使用多重继承对一个接口与另一个接口进行匹配,对象适配器依赖于对象组合,对象适配器结构图如下所示。
其中,Target定义Client使用的与特定领域相关的接口;Client与符合Target接口的对象协同;Adaptee定义一个已经存在的接口,这个接口需要适配;Adapter对Adaptee的接口与Target接口进行适配。
适配器模式适用于:①想使用一个已经存在的类,而它的接口不符合要求;②想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;③(仅适用于对象Adapter)想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口,对象适配器可以适配它的父类接口。
装饰模式的主要意图是:动态地给一个对象添加一些额外的职责。就增加功能而言,Decorator模式比生成子类更加灵活。其结构图如下所示。
其中,Component定义一个对象接口,可以给这些对象动态地添加职责;ConcreteComponent定义一个对象,可以给这个对象添加一些职责;Decorator维持一个指向Component对象的指针,并定义一个与Component接口一致的接口;ConcreteDecorator向组件添加职责。
装饰模式适用于:①在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责;②处理那些可以撤销的职责;③当不能采用生成子类的方式进行扩充时。
桥接模式的主要意图是:将抽象部分与其实现部分分离,使它们都可以独立地变化。其结构图如下所示。
其中,客户程序(Client)使用的主要接口是Abstraction,它定义抽象类的接口,维护一个指向Implementor类型对象的指针(引用),这一关系是组成关系,此实现遵循的"优先选用组合而不是继承"这一原则;RefinedAbstraction扩充由Abstraction定义的接口;Implementor定义实现类的接口,该接口不一定要与Abstraction的接口完全一致;事实上这两个接口可以完全不同。一般来说,Implementor接口仅提供基本操作,而Abstraction定义了基于这些基本操作的较高层次的操作;Concretelmplementor实现Implementor接口并定义它的具体实现。
桥接模式适用于:①不希望在抽象和它的实现部分之间有一个固定的绑定关系;②类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充;③对一个抽象的实现部分的修改应对客户不产生影响,即客户代码不必重新编译;④想对客户完全隐藏抽象的实现部分;⑤有许多类要生成的类层次结构。
组合模式的主要意图是:将对象组合成树型结构以表示"部分---整体"的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。其结构图如下所示。
其中,Component为组合中的对象声明接口,提供给Client操纵组合组件的对象;在适当情况下实现所有类共有接口的默认行为;声明一个接口用于访问和管理Component的子组件。Leaf在组合中表示叶结点对象,叶结点没有子结点;在组合中定义图元对象的行为。Composite定义有子组件的那些组件的行为,存储子组件,在Component接口中实现与子组件有关的操作。
组合模式适用于:①欲表示对象的部分---整体层次结构;②希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
本题描述绘图软件要求使用不同的绘图程序绘制不同的图形,其扩展性要求将不断扩充新的图形和新的绘图程序。题图所示的类图中,设计采用了桥接模式,将抽象图形部分与绘制实现部分分离。Shape对应桥接模式中的Abstraction,定义图形抽象类接口,维护一个指向Drawing的指针(引用),其子类Rectangle和Circle等为具体形状;Drawing对应Implementor,定义绘图实现的接口;V1Drawing和V2Drawing则为实现Drawing接口的具体绘图实现。
难度 2 · 作答 1426 次 · 正确率 57.7%
56. (202505)采用面向对象设计方法开发电商平台,设计负责处理用户订单的类OrderService,它不仅处理订单创建,还负责记录订单日志和发送确认邮件,OrderService类违反了面向对象设计的 原则。
- A. 单一职责
- B. 接口隔离
- C. 开闭原则
- D. 里氏替换
答案:A
解析:
面向对象设计的原则: (1)单一职责原则:修改某个类的原因有且只有一个,让一个类只做一种责任。 (2)开放-封闭原则(open-close原则):对扩展是开放的,对修改是封闭的。 (3)里氏替换原则:子类型必须能够替换父类型。 (4)依赖倒置原则:抽象不应该依赖于细节,细节应该依赖于抽象。即高层模块不应该依赖于底层 模块,二者都应该依赖于抽象。 (5)接口分离原则:客户不应该依赖于它不需要的接口,类间的依赖关系应该建立在最小的接口上。 (6)迪米特法则(最少知识原则):一个软件实体应当尽可能少地与其他实体发生相互作用。 (7)组合重用原则:要尽量使用组合,而不是继承关系达到重用的目的。 (8)重用发布等价原则:重用的粒度就是发布的粒度。 (9)共同封闭原则:包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。 (10)共同重用原则:一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。 (11)无环依赖原则:在包的依赖关系图中不允许存在环,即包之间的结构必须是一个直接的无环图形。 (12)稳定依赖原则:朝着稳定的方向进行依赖。 (13)稳定抽象原则:包的抽象程度应该和其稳定程度一致。
难度 1 · 作答 802 次 · 正确率 93.3%
57. (202505)描述某一时刻一组对象之间的关系或一组静态对象的是 。
- A. 部署图
- B. 部署图
- C. 状态图
- D. 对象图
答案:D
解析:
对象图描述了某一时刻一组对象和它们之间的关系,是类图的一个快照。
难度 1 · 作答 974 次 · 正确率 70.7%
58. (202505)在一个气象监测系统中,天气变化会影响多种显示设备(如PC应用和手机应用)。这些设备需要及时更新。这一需求适合采用 设计模式进行设计。
- A. 观察者(Observer)
- B. 备志录(Memento)
- C. 策略(Strategy)
- D. 状态(State)
答案:A
解析:
- 观察者模式(Observer) ●定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
难度 1 · 作答 866 次 · 正确率 75.5%
59. (202505)某软件中的排序功能要求,能根据数据规模等特性采用合适的排序算法,针对此需求,设计类图如下所示。该设计采用 (1) 模式,该模式属于 (2) 模式,其主要意图是 (3) 。适用于 (4) 。配置具体排序算法的是 (5) 。 (1)正确的选项是 。 
- A. 备忘录(Memento)
- B. 策略(Strategy)
- C. 中介者(Mediator)
- D. 观察者(Observer)
答案:B
解析:
使用策略模式可以将不同数据规模对应的排序算法定义为一个个算法,进行封装,它们彼此可以互相替换,也能独立于使用它们的客户而变化。
难度 1 · 作答 808 次 · 正确率 74.0%
60. (202505)某软件中的排序功能要求,能根据数据规模等特性采用合适的排序算法,针对此需求,设计类图如下所示。该设计采用 (1) 模式,该模式属于 (2) 模式,其主要意图是 (3) 。适用于 (4) 。配置具体排序算法的是 (5) 。 (2)正确的选项是 。 
- A. 对象结构型
- B. 类行为型
- C. 类结构型
- D. 对象行为型
答案:D
解析:
- 策略模式(Strategy) ●定义:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。它使得算法可以独立于使用它们的客户而变化。 ●分类:行为型对象模式。 ●适用场景: ①许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。 ②需要使用一个算法的不同变体。 ③算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。 ④一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现,将相关的条件分支移入它们各自的Strategy类中,以代替这些条件语句。
难度 1 · 作答 891 次 · 正确率 58.6%
61. (202505)某软件中的排序功能要求,能根据数据规模等特性采用合适的排序算法,针对此需求,设计类图如下所示。该设计采用 (1) 模式,该模式属于 (2) 模式,其主要意图是 (3) 。适用于 (4) 。配置具体排序算法的是 (5) 。 (3)正确的选项是 。 
- A. 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换
- B. 用一个中介对象来封装一系列的对象交互
- C. 在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存状态
- D. 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
答案:A
解析:
策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 中介者模式:用一个中介对象来封装一系列的对象交互。 备忘录模式:在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存状态。 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
难度 1 · 作答 802 次 · 正确率 79.6%
62. (202505)某软件中的排序功能要求,能根据数据规模等特性采用合适的排序算法,针对此需求,设计类图如下所示。该设计采用 (1) 模式,该模式属于 (2) 模式,其主要意图是 (3) 。适用于 (4) 。配置具体排序算法的是 (5) 。 (4)正确的选项是 。 
- A. 对一个对象的改变需要同时改变未知数量的其他对象
- B. 需要使用一个算法的不同变体
- C. 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象
- D. 必须保存一个对象在某一个时刻的状态,使得需要时能恢复到先前的状态
答案:B
解析:
观察者模式适用于对一个对象的改变需要同时改变未知数量的其他对象。 策略模式适用于需要使用一个算法的不同变体。 中介者模式适用于一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。 备忘录模式适用于必须保存一个对象在某一个时刻的状态,使得需要时能恢复到先前的状态。
难度 1 · 作答 762 次 · 正确率 74.3%
63. (202505)某软件中的排序功能要求,能根据数据规模等特性采用合适的排序算法,针对此需求,设计类图如下所示。该设计采用 (1) 模式,该模式属于 (2) 模式,其主要意图是 (3) 。适用于 (4) 。配置具体排序算法的是 (5) 。 (5)正确的选项是 。 
- A. Sort
- B. BubbleSort/QuickSort/MergeSort
- C. Client
- D. SortingContext
答案:D
解析:
根据类图,SortingContext类中有方法setSort(:Sort),即设置排序算法。
难度 1 · 作答 971 次 · 正确率 34.3%
64. (202511)UML中描述实体属性和行为的是 。
- A. 用例图
- B. 活动图
- C. 类图
- D. 关系
答案:C
解析:
类图:描述类、类的特性以及类之间的关系。其中类的特性主要指的是类的属性和行为。
难度 1 · 作答 450 次 · 正确率 62.4%
65. (202511)以下 不是面向对象设计的原则。
- A. 过程优先
- B. 单一职责
- C. 依赖倒置
- D. 开发-封闭
答案:A
解析:
面向对象设计的原则: (1)单一职责原则:修改某个类的原因有且只有一个,让一个类只做一种责任。 (2)开放-封闭原则(open-close原则):对扩展是开放的,对修改是封闭的。 (3)里氏替换原则:子类型必须能够替换父类型。 (4)依赖倒置原则:抽象不应该依赖于细节,细节应该依赖于抽象。即高层模块不应该依赖于底层模块,二者都应该依赖于抽象。 (5)接口分离原则:客户不应该依赖于它不需要的接口,类间的依赖关系应该建立在最小的接口上。 (6)迪米特法则(最少知识原则):一个软件实体应当尽可能少的与其他实体发生相互作用。 (7)组合重用原则:要尽量使用组合,而不是继承关系达到重用的目的。 (8)重用发布等价原则:重用的粒度就是发布的粒度。 (9)共同封闭原则:包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。 (10)共同重用原则:一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。 (11)无环依赖原则:在包的依赖关系图中不允许存在环,即包之间的结构必须是一个直接的无环图形。 (12)稳定依赖原则:朝着稳定的方向进行依赖。 (13)稳定抽象原则:包的抽象程度应该和其稳定程度一致。 过程优先是过程式编程范式的特点,强调以过程或函数为中心组织代码,不是面向对象设计的原则。
难度 1 · 作答 431 次 · 正确率 87.7%
66. 2026上半年 以动物分类为例,猫是一种动物,猫不需要重新定义“呼吸”和“睡觉”的方法,直接使用动物类的“呼吸”和“睡觉”方法,这一面向对象技术是 。
- A. 实例化
- B. 继承
- C. 封装
- D. 依赖
答案:B
解析:
猫类(子类)从动物类(父类)继承了"呼吸"和"睡觉"方法,无需重新定义——这正是继承的核心特征:子类自动拥有父类的属性和方法。
难度 1 · 作答 126 次 · 正确率 94.4%
67. 2026上半年 以下关于面向对象技术中类和对象的关系描述,正确的是 。
- A. 类是对象的具体实例
- B. 一个类只能创建一个对象
- C. 类是模板,对象是根据模板创建的实例
- D. 对象是抽象的,类是具体的
答案:C
解析:
类是抽象的模板,对象是根据类创建出的具体实例。A 说反了,B 错误(一个类可以创建多个对象),D 也说反了。
难度 1 · 作答 125 次 · 正确率 80.0%
68. 体现了类和对象的关系。
- A. 汽车颜色和那一辆白色比亚迪
- B. 汽车和刹车功能
- C. 汽车和汽车颜色
- D. 汽车和那一辆白色比亚迪
答案:D
解析:
"汽车"是类(抽象概念), "那一辆白色比亚迪"是对象(具体实例)。这正好体现了类与对象的关系。A 是属性与属性值的关系,B 是类与方法的关系,C 是类与属性的关系。
难度 1 · 作答 142 次 · 正确率 81.7%




