1、软件水平考试(中级)软件设计师上午(基础知识)历年真题试卷汇编 6 及答案解析(总分:68.00,做题时间:90 分钟)一、选择题(总题数:23,分数:68.00)1.选择题()下列各题 A、B、C、D 四个选项中,只有一个选项是正确的,请将此选项涂写在答题卡相应位置上,答在试卷上不得分。_2.在多态的几种不同形式中,(37)多态是一种特定的多态,指同一个名字在不同上下文中可代表不同的含义。(分数:2.00)A.参数B.包含C.过载D.强制3.在面向对象技术中,对象具有以下特性:(37)。清晰的边界良好定义的行为确定的位置和数最可扩展性(分数:2.00)A.B.C.D.4.以下关于封装在软件复
2、用中所充当的角色的叙述,正确的是(38)。(分数:2.00)A.封装使得其他开发人员不需要知道一个软件组织内部是如何 1 二作B.封装使得软件组织更有效地工作C.封装使得软件开发人员不需要编制开发文档D.封装使得软件组件开发更加容易5.在有些程序设计语言中,过程调用和响应调用需执行的代码的绑定直到运行时才进行,这种绑定称为(39)。(分数:2.00)A.静态绑定B.动态绑定C.过载绑定D.强制绑定6.面向对象分析的第一步是(37)(分数:2.00)A.定义服务B.确定附加的系统约束C.确定问题域D.定义类和对象7.下列关于一个类的静态成员的描述中,不正确的是(38)。(分数:2.00)A.类的
3、静态方法只能访问该类的静态数据成员B.静态数据成员可被该类的所有方法访问C.该类的对象共享其静态数据成员的值D.该类的静态数据成员的值不可修改8.以下关于面向对象方法中继承的叙述中,错误的是(37)。(分数:2.00)A.继承是父类和子类之间共享数据和方法的机制B.继承定义了一种类与类之间的关系C.继承关系中的子类将拥有父类的全部属性和方法D.继承仅仅允许单重继承,即不允许一个子类有多个父类9.(41)不是面向对象分析阶段需要完成的。(分数:2.00)A.认定对象B.组织对象C.实现对象及其相互关系D.描述对象间的相互作用10.某程序设计语言规定在源程序中的数据都必须具有类型,然而,(28)并
4、不是做出此规定的理由。(分数:2.00)A.为数据合理分配存储单元B.可以定义和使用动态数据结构C.可以规定数据对象的取值范围及能够进行的运算D.对参与表达式求值的数据对象可以进行合法性检查11.以下关于变量和常量和叙述中,错误的是(20)。(分数:2.00)A.变量的取值在程序运行过程中可以改变,常量则不行B.变量具有类型属性,常量则没有C.变量具有对应的存储单元,常量则没有D.可以对变量赋值,不能对常量赋值12.以下关于可视化程序设计的叙述中,错误的是(49)。(分数:2.00)A.可视化程序设计使开发应用程序无需编写程序代码B.可视化程序设计基于面向对象的思想,引入了控件和事件驱动C.在
5、可视化程序设计中,构造应用程序界面就像搭积木D.在可视化程序设计中,采用解释方式可随时查看程序的运行效果13.以下关于面向对象设计的叙述中,错误的是(42)。(分数:2.00)A.面向对象设计应在面向对象分析之前,因为只有产生了设计结果才可对其进行分析B.面向对象设计与面向对象分析是面向对象软件过程中两个重要的阶段C.面向对象设计应该依赖于面向对象分析的结果D.面向对象设计产生的结果在形式上可以与面向对象分析产生的结果类似,例如都可以使用 UML 表达14.采用面向对象开发方法时,对象是系统运行的基本实体。以下关于对象的叙述中,正确的是(37)。(分数:2.00)A.对象只能包括数据(属性)B
6、.对象只能包括操作(行为)C.对象一定有相同的属性和行为D.对象通常由对象名、属性和操作三个部分组成15.基于构件的软件开发,强调使用可复用的软件“构件”来设计和构建软件系统,对所需的构件进行合格性检验、(15),并将它们集成到新系统中。(分数:2.00)A.规模度量B.数据验证C.适应性修改D.正确性测试16.采用面向对象方法开发软件的过程中,抽取和整理用户需求并建立问题域精确模型的过程叫(16)。(分数:2.00)A.面向对象测试B.面向对象实现C.面向对象设计D.面向对象分析17.以下关于 UML 部署图的叙述中,正确的是(40)。(分数:2.00)A.因为一条消息总是有某种响应,部署组
7、件之间的依赖是双向的B.部署组件之间的依赖关系类似于包图C.部署图不用于描述代码的物理模块D.部署图不用于描述系统在不同计算机系统的物理分布继承是父类和子类之间共享数据和方法的机制。以下关于继承的叙述中,不正确的是(38)。有关图 91中 doIt()方法的叙述中,正确的是(39)。 (分数:4.00)(1).(38)(分数:2.00)A.一个父类可以有多个子类,这些子类都是父类的特例B.父类描述了这些子类的公共属性和操作C.子类可以继承它的父类(或祖先类)中的属性和操作而不必自己定义D.子类中可以定义自己的新操作而不能定义和父类同名的操作(2).(39)(分数:2.00)A.doIt()必须
8、由 Thing3 实现,同时可能由 Thing4 实现B.doIt()必须由 Thing5 实现C.doIt()必须由 Thing2、Thing3、Thing4 和 Thing5 实现D.dolt()已经由 Thing1 实现,因此无需其他类实现在面向对象技术中,(38)说明一个对象具有多种形态,(39)定义超类与子类之间的关系。(分数:4.00)(1).(38)(分数:2.00)A.继承B.组合C.封装D.多态(2).(39)(分数:2.00)A.继承B.组合C.封装D.多态一个类是(38)。在定义类时,将属性声明为 private 的目的是(39)。(分数:4.00)(1).(38)(分数
9、:2.00)A.一组对象的封装B.表示一组对象的层次关系C.一组对象的实例D.一组对象的抽象定义(2).(39)(分数:2.00)A.实现数据隐藏,以免意外更改B.操作符重载C.实现属性值不可更改D.实现属性值对类的所有对象共享在面向对象技术中,(41)定义了超类和子类之间的关系,子类中以更具体的方式实现从父类继承来的方法称为(42),不同类的对象通过(43)相互通信。(分数:6.00)(1).(41)(分数:2.00)A.覆盖B.继承C.消息D.多态(2).(42)(分数:2.00)A.覆盖B.继承C.消息D.多态(3).(43)(分数:2.00)A.覆盖B.继承C.消息D.多态不同的对象收
10、到同一消息可以产生完全不同的结果,这一现象叫做(38)。绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定在编译时进行,叫做(39);而(40)则在运行时进行,即一个给定的过程调用和执行代码的结合直到调用发生时才进行。(分数:6.00)(1).(38)(分数:2.00)A.继承B.多态C.动态绑定D.静态绑定(2).(39)(分数:2.00)A.继承B.多态C.动态绑定D.静态绑定(3).(40)(分数:2.00)A.继承B.多态C.动态绑定D.静态绑定开一闭原则(OpenClosedPrincipie,OCP)是面向对象的可复用设计的基石。开一闭原则是
11、指一个软件实体应当对(37)开放,对(28)关闭;里氏代换原则(LiskovSubstitutionPrinciple,LSP)是指任何 13 业可以出现的地方,(40)一定可以出现。依赖倒转原则(DependenceInversionPrinciple,DIP)就是要依赖于(41)而不依赖于(42),或者说要针对接口编程,不要针对实现编程。(分数:12.00)(1).(37)(分数:2.00)A.修改B.扩展C.分析D.设计(2).(38)(分数:2.00)A.修改B.扩展C.分析D.设计(3).(39)(分数:2.00)A.变量B.常量C.基类对象D.子类对象(4).(40)(分数:2.0
12、0)A.变量B.常量C.基类对象D.子类对象(5).(41)(分数:2.00)A.程序设计语言B.建模语言C.实现D.抽象(6).(42)(分数:2.00)A.程序设计语言B.建模语言C.实现D.抽象软件水平考试(中级)软件设计师上午(基础知识)历年真题试卷汇编 6 答案解析(总分:68.00,做题时间:90 分钟)一、选择题(总题数:23,分数:68.00)1.选择题()下列各题 A、B、C、D 四个选项中,只有一个选项是正确的,请将此选项涂写在答题卡相应位置上,答在试卷上不得分。_解析:2.在多态的几种不同形式中,(37)多态是一种特定的多态,指同一个名字在不同上下文中可代表不同的含义。(
13、分数:2.00)A.参数B.包含C.过载 D.强制解析:解析:一般将多态分为通用多态和特殊多态。其中通用多态包括参数多态和包含多态,参数多态利用泛型编程,是发散式的,是静态绑定的,让相同的实现代码应用于不同的场合,看重的是算法的普适性,包含多态利用 00P,是收敛式的,是动态绑定的,让不同的实现代码应用于相同的场合,看重的是接口与实现的分离度。特殊多态包括强制多态和过载多态,其中强制多态即一种类型的变量在作为参数传递时隐式转换成另一种类型,比如一个整型变量可以匹配浮点型变量的函数参数;过载多态即同一个名(操作符、函数名)在不同的上下文中有不同的类型。程序设计语言中基本3.在面向对象技术中,对象
14、具有以下特性:(37)。清晰的边界良好定义的行为确定的位置和数最可扩展性(分数:2.00)A.B.C. D.解析:解析:对象是类的实例,具有清晰的边界、良好定义的行为和可扩展性。4.以下关于封装在软件复用中所充当的角色的叙述,正确的是(38)。(分数:2.00)A.封装使得其他开发人员不需要知道一个软件组织内部是如何 1 二作 B.封装使得软件组织更有效地工作C.封装使得软件开发人员不需要编制开发文档D.封装使得软件组件开发更加容易解析:解析:封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都足类的成员
15、。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。5.在有些程序设计语言中,过程调用和响应调用需执行的代码的绑定直到运行时才进行,这种绑定称为(39)。(分数:2.00)A.静态绑定B.动态绑定 C.过载绑定D.强制绑定解析:解析:绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。静态绑定:在程序执行前方法已经被绑定,此时由编译器或其他连接程序实现。动态绑定:在运行时根据具体对象的类型进行绑定。若一种语言实现了动态绑定,同时必须提供一些机制,可在运行期间判断对象的类型,并分别调用适当的方法。也就是说,编译器此时依然
16、不知道对象的类型,但方法调用机制能自己去调查,找到正确的方法主体。不同的语言对动态绑定的实现方法是有所区别的。6.面向对象分析的第一步是(37)(分数:2.00)A.定义服务B.确定附加的系统约束C.确定问题域 D.定义类和对象解析:解析:面向对象分析(OOA)需要将真实世界进行抽象,通过问题的叙述,将真实世界系统加以描述。分析的目的是为了构造一个系统属性和系统行为的模型,该模型是根据对象和对象之间的关系、动态控制和功能转移来确定的。OOA 应该包含以下几个步骤:分析问题域,建立用例模型。发现和定义对象和类。识别对象的内部特征。识别对象的外部联系。识别对象之间的交互。面向对象分析的基础就是问题
17、域以及用户的需求,研究问题域和系统需求的主要目的是通过对问题域的深入研究,建立一个能够满足用户需求的系统模犁。面向对象分析的第。步就是分析用户7.下列关于一个类的静态成员的描述中,不正确的是(38)。(分数:2.00)A.类的静态方法只能访问该类的静态数据成员B.静态数据成员可被该类的所有方法访问C.该类的对象共享其静态数据成员的值D.该类的静态数据成员的值不可修改 解析:解析:在面向对象程序设计中,可以通过类的静态成员来解决同,一个类的对象之间共享数据的问题。静态数据成员是属于类的,因此,静态数据成员可以在没有任何对象的情况下就可以访问到。类的静态方法可以不以捆绑对象的形式调用,在调用时没有
18、当前对象的信息,所以静态方法只能访问静态成员,不能访问非静态的数据成员和方法。静态数据成员的值可以修改,选项 D 错误。8.以下关于面向对象方法中继承的叙述中,错误的是(37)。(分数:2.00)A.继承是父类和子类之间共享数据和方法的机制B.继承定义了一种类与类之间的关系C.继承关系中的子类将拥有父类的全部属性和方法D.继承仅仅允许单重继承,即不允许一个子类有多个父类 解析:解析:面向对象技术中,继承是父类和子类之间共享数据和方法的机制。这是类之间的一种关系,在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。可以
19、存在多重继承的概念,但不同的程序设计语言可以有自己的规定。9.(41)不是面向对象分析阶段需要完成的。(分数:2.00)A.认定对象B.组织对象C.实现对象及其相互关系 D.描述对象间的相互作用解析:解析:面向对象分析包含 5 个活动:认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息。实现对象及其相互关系应该归入到系统的实现阶段,不属于分析阶段的任务。10.某程序设计语言规定在源程序中的数据都必须具有类型,然而,(28)并不是做出此规定的理由。(分数:2.00)A.为数据合理分配存储单元B.可以定义和使用动态数据结构 C.可以规定数据对象的取值范围及能够进行的运算D
20、.对参与表达式求值的数据对象可以进行合法性检查解析:解析:若一种程序设计语言规定其程序中的数据必须具有类型,则有利于在翻译程序的过程中为数据合理分配存储单元、对参与表达式计算的数据对象进行检查、规定数据对象的取值范围及能够进行的运算。动态数据结构是在程序运行过程中动态地定义和使用,在编译或解释过程中不会涉及到,因此答案选择 B。11.以下关于变量和常量和叙述中,错误的是(20)。(分数:2.00)A.变量的取值在程序运行过程中可以改变,常量则不行B.变量具有类型属性,常量则没有C.变量具有对应的存储单元,常量则没有 D.可以对变量赋值,不能对常量赋值解析:解析:常量是在程序运行过程中值不可以改
21、变的数据。根据数组的组织类型的不同,可以将数据分为基本数据类型、用户自定义数据类型、构造类型等。变量具有类型属性,常量也有数据类型,如整数常量、字符串常量等。12.以下关于可视化程序设计的叙述中,错误的是(49)。(分数:2.00)A.可视化程序设计使开发应用程序无需编写程序代码 B.可视化程序设计基于面向对象的思想,引入了控件和事件驱动C.在可视化程序设计中,构造应用程序界面就像搭积木D.在可视化程序设计中,采用解释方式可随时查看程序的运行效果解析:解析:可视化(visual)程序设计是一种全新的程序设计方法,它主要是让程序设计人员利用软件本身所提供的各种控件,像搭积木式地构造应用程序的各种
22、界面。可视化程序设计以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序与结果的调整同步。可视化编程语言的特点主要表现在两个方面:一是基于面向对象的思想,引入了控件的概念和事件驱动;二是程序开发过程一般遵循以下步骤,即先进行界面的绘制工作,再基于事件编写程序代码,以响应鼠标、键盘的各种动作。可视化程序设计最大的优点是设计人员可以不用编写或13.以下关于面向对象设计的叙述中,错误的是(42)。(分数:2.00)A.面向对象设计应在面向对象分析之前,因为只有产生了设计结果才可对其进行分析 B.面向对象设计与面向对象分析是面向对象软件过程中两个重要的阶段C.面向对象设
23、计应该依赖于面向对象分析的结果D.面向对象设计产生的结果在形式上可以与面向对象分析产生的结果类似,例如都可以使用 UML 表达解析:解析:面向对象分析与设计是面向对象软件开发过程中的两个重要阶段,面向对象分析产生分析模型,该分析模型可以使用 LIML 表达,面向对象设计以分析模型为基础,继续对分析模型进行加工,得到设计模型,其表达仍然可以采用 UML 建模语言。14.采用面向对象开发方法时,对象是系统运行的基本实体。以下关于对象的叙述中,正确的是(37)。(分数:2.00)A.对象只能包括数据(属性)B.对象只能包括操作(行为)C.对象一定有相同的属性和行为D.对象通常由对象名、属性和操作三个
24、部分组成 解析:解析:在面向对象的系统中,对象是基本的运行时的实体,它既包括数据(属性),也包括作用于数据的操作(行为)。一个对象通常可由对象名、属性和操作三个部分组成。15.基于构件的软件开发,强调使用可复用的软件“构件”来设计和构建软件系统,对所需的构件进行合格性检验、(15),并将它们集成到新系统中。(分数:2.00)A.规模度量B.数据验证C.适应性修改 D.正确性测试解析:解析:基于构件的软件开发,主要强调在构建软件系统时复用已有的软件“构件”,在检索到可以使用的构件后,需要针对新系统的需求对构件进行合格性检验、适应性修改,然后集成到新系统中。16.采用面向对象方法开发软件的过程中,
25、抽取和整理用户需求并建立问题域精确模型的过程叫(16)。(分数:2.00)A.面向对象测试B.面向对象实现C.面向对象设计D.面向对象分析 解析:解析:采用面向对象的软件开发,通常有面向对象分析、面向对象设计、面向对象实现。面向对象分析是为了获得对应用问题的理解,其主要任务是抽取和整理用户需求并建立问题域精确模型。面向对象设计是采用协作的对象、对象的属性和方法说明软件解决方案的一种方式,强调的是定义软件对象和这些软件对象如何协作来满足需求,延续了面向对象分析。面向对象实现主要强调采用面向对象程序设计语言实现系统。面向对象测试是根据规范说明来验证系统设计的正确性。17.以下关于 UML 部署图的
26、叙述中,正确的是(40)。(分数:2.00)A.因为一条消息总是有某种响应,部署组件之间的依赖是双向的B.部署组件之间的依赖关系类似于包图 C.部署图不用于描述代码的物理模块D.部署图不用于描述系统在不同计算机系统的物理分布解析:解析:部署图展现了运行处理节点以及其中的构件的配置。部署图给出了体系结构的静态实施视图。它与构件图相关,通常一个节点包含一个或多个构件即类似于包图,所以答案选 B。继承是父类和子类之间共享数据和方法的机制。以下关于继承的叙述中,不正确的是(38)。有关图 91中 doIt()方法的叙述中,正确的是(39)。 (分数:4.00)(1).(38)(分数:2.00)A.一个
27、父类可以有多个子类,这些子类都是父类的特例B.父类描述了这些子类的公共属性和操作C.子类可以继承它的父类(或祖先类)中的属性和操作而不必自己定义D.子类中可以定义自己的新操作而不能定义和父类同名的操作 解析:(2).(39)(分数:2.00)A.doIt()必须由 Thing3 实现,同时可能由 Thing4 实现 B.doIt()必须由 Thing5 实现C.doIt()必须由 Thing2、Thing3、Thing4 和 Thing5 实现D.dolt()已经由 Thing1 实现,因此无需其他类实现解析:解析:继承是父类和子类之间共享数据和方法的机制。这是类之问的一种关系,在定义和实现一
28、个类(子类)的时候,可以在一个已经存在的类(父类)的基础卜进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。一个父类可以有多个子类,这些子类都是父类的特例,父类描述了这些子类的共有属性和操作。一个子类可以继承它的父类(或祖先类)中的属性和操作,这些属性和操作在子类中不必定义,子类中还可以定义自己的属性和操作。所以 D 选项错误。题中的 Thing1 为接口,那么doIt()为接口中的抽象方法,必须由实现它的类去实现在面向对象技术中,(38)说明一个对象具有多种形态,(39)定义超类与子类之间的关系。(分数:4.00)(1).(38)(分数:2.00)A.继承B.组合C.封
29、装D.多态 解析:(2).(39)(分数:2.00)A.继承 B.组合C.封装D.多态解析:解析:在面向对象技术中,不同的对象收到同一消息可以产生完全不同的结果,这一现象叫做多态,这说明一个对象具有多种形态:继承是父类和子类之间共享数据和方法的机制,这是类之间的一种关系。一个类是(38)。在定义类时,将属性声明为 private 的目的是(39)。(分数:4.00)(1).(38)(分数:2.00)A.一组对象的封装B.表示一组对象的层次关系C.一组对象的实例D.一组对象的抽象定义 解析:(2).(39)(分数:2.00)A.实现数据隐藏,以免意外更改 B.操作符重载C.实现属性值不可更改D.
30、实现属性值对类的所有对象共享解析:解析:类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。类是对象的抽象,而对象是类的具体实例。在类中,可将数据声明为 prjvate、protect 和public,声明为 private 的数据为私有的,只能被类中的成员函数调用,不能在类外访问,从而实现数据隐藏的目的,可防止意外更改。在面向对象技术中,(41)定义了超类和子类之间的关系,子类中以更具体的方式实现从父类继承来的方法称为(42),不同类的对象通过(43)相互通信。(分数:6.00)(1).(41)(分数:2.00)A.覆盖B.继承 C.消息D.多态解析:(2
31、).(42)(分数:2.00)A.覆盖 B.继承C.消息D.多态解析:(3).(43)(分数:2.00)A.覆盖B.继承C.消息 D.多态解析:解析:本题主要考察面向对象的基本概念。继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。不同的对象收到同一消息可以产生完全不同的结果,这一现象叫做(38)。绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定在编译时进行,叫做(39);而(40)则在运行时进行,即一个给定的过程调用和执行代码的结合直到调用发生时才进行。(分数:6.00)(1).(38)(分数:2.00)A.继承B.
32、多态 C.动态绑定D.静态绑定解析:(2).(39)(分数:2.00)A.继承B.多态C.动态绑定D.静态绑定 解析:(3).(40)(分数:2.00)A.继承B.多态C.动态绑定 D.静态绑定解析:解析:在收到消息时,对象要予以响应。不同的对象收到同一消息可以产生完全不同的结果,这一现象叫做多态(polymoll)hism)。在使用多态的时候,用户可以发送一个通用的消息,而实现的细节则由接收对象自行决定。 这样,同一消息就可以调用不同的方法。绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定是在编译时进行的,叫做静态绑定。 动态绑定则是在运行时进行的,
33、因此,一个给定的过程调用和代码的结合直到调用发生时才进行。动态绑定是和类的继承以及多态相联系的。在继承关系中,子类是开一闭原则(OpenClosedPrincipie,OCP)是面向对象的可复用设计的基石。开一闭原则是指一个软件实体应当对(37)开放,对(28)关闭;里氏代换原则(LiskovSubstitutionPrinciple,LSP)是指任何 13 业可以出现的地方,(40)一定可以出现。依赖倒转原则(DependenceInversionPrinciple,DIP)就是要依赖于(41)而不依赖于(42),或者说要针对接口编程,不要针对实现编程。(分数:12.00)(1).(37)(
34、分数:2.00)A.修改B.扩展 C.分析D.设计解析:(2).(38)(分数:2.00)A.修改 B.扩展C.分析D.设计解析:(3).(39)(分数:2.00)A.变量B.常量C.基类对象 D.子类对象解析:(4).(40)(分数:2.00)A.变量B.常量C.基类对象D.子类对象 解析:(5).(41)(分数:2.00)A.程序设计语言B.建模语言C.实现D.抽象 解析:(6).(42)(分数:2.00)A.程序设计语言B.建模语言C.实现 D.抽象解析:解析:开一闭原则(OpenClosedPrincipie)可以说是面向对象设计的核心所在。开一闭原则的两个重要特点是“对扩展开放,对修改关闭”,即允许对程序作出扩展(以扩展的方式响应需求的变化),但拒绝对程序作出修改(即修改之前运行良好的程序)。实现“开一闭原则”的重要机制就是“抽象”与“多态”。通过对“变化”进行抽象隔离,使程序具有更好的扩展性与可维护性。里氏代换原则(LiskovSubstitutionPrincipie,L,SP)在实现继承时,子类(sLtbtype)必须能替换掉它们的基类(basety