软件设计师分类模拟题面向对象方法学(一)有答案
- 格式:docx
- 大小:153.85 KB
- 文档页数:23
软件设计师试题及参考答案一、选择题1. 以下哪一项不是软件工程的基本目标?A. 提高软件的生产率B. 提高软件的可维护性C. 减少软件的复杂性D. 提高软件的性能答案:D2. 下面哪种方法不属于软件需求分析的方法?A. 结构化分析方法B. 数据流图C. 实体关系图D. 原型法答案:C3. 以下哪种编程范式主要关注函数的一等公民和不可变性?A. 面向对象编程B. 过程式编程C. 函数式编程D. 逻辑编程答案:C4. 在软件测试过程中,以下哪个阶段是测试计划的制定阶段?A. 单元测试B. 集成测试C. 系统测试D. 测试计划答案:D5. 以下哪种设计模式主要用于解决接口污染问题?A. 单例模式B. 工厂模式C. 策略模式D. 适配器模式答案:D二、填空题1. 软件开发过程中的瀑布模型主要包括以下阶段:需求分析、______、设计、编码、测试、维护。
答案:可行性研究2. 在面向对象编程中,继承、封装和多态是三大基本特性,其中______是指允许不同类的对象对同一消息做出响应。
答案:多态3. 软件设计模式分为创建型、结构型和行为型三种类型,其中创建型模式主要关注对象的创建过程,结构型模式主要关注类和对象之间的______。
答案:关系4. 在软件测试过程中,回归测试是指对已经通过的测试用例进行再次测试,以验证修改后的软件是否仍然保持原有的______。
答案:功能5. 以下哪种编程语言是函数式编程语言的代表?答案:Haskell三、判断题1. 在软件开发过程中,需求分析是整个项目的基础,它决定了项目的成功与否。
(正确)2. 软件设计模式是针对特定问题的通用解决方案,它可以帮助我们提高代码的可复用性和可维护性。
(正确)3. 在面向对象编程中,继承意味着子类可以继承父类的属性和方法。
(正确)4. 软件测试的目的是找出软件中的错误,而不是证明软件是正确的。
(正确)5. 单元测试是针对软件中最小的可测试单元进行的测试,它可以帮助我们确保每个模块的功能正确。
面向对象软件工程答案【篇一:软件工程考试试题与答案】txt> 一、单项选择题1.好的软件结构应该是()a.低耦合、低内聚b.高耦合、高内聚c.高耦合、低内聚d.低耦合、高内聚答案: d2.需求分析中开发人员要从用户那里了解()a.软件的规模b.软件做什么c.用户使用界面d.输入的信息答案: b3.软件调试技术包括()a.演绎法b .循环覆盖c .边界值分析 d .集成测试答案: a4.软件需求规格说明书的内容不应包括对()的描述。
a.用户界面及运行环境b .主要功能c .算法的详细过程 d .软件的性能答案: c5.常用动词或动词词组来表示()a.属性b.关联c.类d.对象答案: b6.软件可行性研究实质上是要进行一次()需求分析、设计过程。
a.详细的b.深入的c.彻底的d.简化、压缩的答案: d7.软件部分的内部实现与外部可访问性分离,这是指软件的()a.继承性b.共享性c.抽象性d.封装性答案: d8.软件部分的内部实现与外部可访问性分离,这是指软件的()a.共享性b.继承性c.抽象性d.封装性答案: d9.在详细设计阶段,经常采用的工具有()a.pdlb. dfdc.scd.sa答案: a10.数据字典是对数据定义信息的集合,它所定义的对象都包含于()a.软件结构b .程序框图c .方框图d .数据流图答案: d11.软件工程结构化生命周期方法,提出将软件生命周期划分为计划、开发和运行三个时期,下述()工作应属于软件开发期的内容。
a.问题定义b.可行性研究c.都不是d.总体设计答案: d12 .应用执行对象的操作可以改变该对象的()a.功能b .数据c .属性d .行为答案: c13 .软件质量因素不包括()a.可理解性b .可测试性 c .正确性 d .高性能答案: d14 .软件可行性研究实质上是要进行一次()需求分析、设计过程。
a.详细的b .彻底的c .深入的d .简化、压缩的答案: d15 .结构化设计是一种面向()的设计方法。
软件设计师模拟试题及解析试题一:1. 下列关于面向对象编程语言的说法,不正确的是:A. 封装是面向对象的特征之一B. 继承是面向对象的特征之一C. 多态是面向对象的特征之一D. 面向对象编程不支持封装特性试题分析及解析:本题考察对面向对象编程语言的理解。
在面向对象编程中,封装是将数据和操作封装在一个对象中,使之成为一个独立的实体;继承是通过定义一个新类来继承现有类的属性和方法;多态是指同一操作作用于不同的对象上,可以产生不同的结果。
因此,选项D“面向对象编程不支持封装特性”是不正确的。
正确答案:D试题二:2. 下列关于软件开发生命周期的说法,不正确的是:A. 瀑布模型是一种线性的开发方式,开发过程中各个阶段依次进行B. 敏捷开发是一种迭代的开发方式,通过迭代的方式不断更新和改进软件C. 增量开发是将软件划分为多个模块,每个模块分别进行开发和测试D. 螺旋模型是将软件开发过程分为多个迭代周期,每个周期包含计划、风险分析、开发和评估等阶段试题分析及解析:本题考察对软件开发生命周期的了解。
瀑布模型是一种线性的开发方式,各个阶段需要依次进行;敏捷开发是通过迭代的方式不断更新和改进软件;增量开发是将软件划分为多个模块,分别进行开发和测试;螺旋模型将软件开发过程分为多个迭代周期,每个周期包含计划、风险分析、开发和评估等阶段。
因此,选项C“增量开发是将软件划分为多个模块,每个模块分别进行开发和测试”是不正确的。
正确答案:C试题三:3. 在软件开发中,下列哪个是正确的代码注释格式?A. //这是一段注释B. /* 这是一段注释 */C. <!-- 这是一段注释 -->D. ##这是一段注释试题分析及解析:本题考察对代码注释格式的理解。
在大多数编程语言中,单行注释使用“//”符号,多行注释使用“/* */”符号,不同的语言可能有所差异。
因此,选项A“//这是一段注释”是正确的代码注释格式。
正确答案:A综上所述,本文介绍了三道软件设计师模拟试题及解析。
面向对象软件工程答案【篇一:软件工程考试试题与答案】txt> 一、单项选择题1.好的软件结构应该是()a.低耦合、低内聚b.高耦合、高内聚c.高耦合、低内聚d.低耦合、高内聚答案: d2.需求分析中开发人员要从用户那里了解()a.软件的规模b.软件做什么c.用户使用界面d.输入的信息答案: b3.软件调试技术包括()a.演绎法b .循环覆盖c .边界值分析 d .集成测试答案: a4.软件需求规格说明书的内容不应包括对()的描述。
a.用户界面及运行环境b .主要功能c .算法的详细过程 d .软件的性能答案: c5.常用动词或动词词组来表示()a.属性b.关联c.类d.对象答案: b6.软件可行性研究实质上是要进行一次()需求分析、设计过程。
a.详细的b.深入的c.彻底的d.简化、压缩的答案: d7.软件部分的内部实现与外部可访问性分离,这是指软件的()a.继承性b.共享性c.抽象性d.封装性答案: d8.软件部分的内部实现与外部可访问性分离,这是指软件的()a.共享性b.继承性c.抽象性d.封装性答案: d9.在详细设计阶段,经常采用的工具有()a.pdlb. dfdc.scd.sa答案: a10.数据字典是对数据定义信息的集合,它所定义的对象都包含于()a.软件结构b .程序框图c .方框图d .数据流图答案: d11.软件工程结构化生命周期方法,提出将软件生命周期划分为计划、开发和运行三个时期,下述()工作应属于软件开发期的内容。
a.问题定义b.可行性研究c.都不是d.总体设计答案: d12 .应用执行对象的操作可以改变该对象的()a.功能b .数据c .属性d .行为答案: c13 .软件质量因素不包括()a.可理解性b .可测试性 c .正确性 d .高性能答案: d14 .软件可行性研究实质上是要进行一次()需求分析、设计过程。
a.详细的b .彻底的c .深入的d .简化、压缩的答案: d15 .结构化设计是一种面向()的设计方法。
(完整版)⾯向对象分析与设计练习题含答案⾯向对象分析与设计试题B卷⼀、单项选择题( 在每⼩题的四个备选答案中,选出⼀个正确答案,并将正确答案的序号填在题⼲的括号内。
每⼩题2 分,共20 分)/* 上个世纪80年代开始⾄今还盛⾏的以Smalltalk,C++等为代表的⾯向对象软件开发⽅法(00)*/1.到20世纪末,⾯向对象软件⼯程已经逐渐发展成熟,特别是(D)的形成和⼴泛使⽤,采⽤⾯向对象分析与编程的软件开发⽅法已成为软件开发的主流⽅法。
A. Simula67语⾔(20世纪70年代的Simula-67是第⼀个⾯向对象的语⾔)B. Smalltalk语⾔(80年代初的Smalltalk语⾔)C. Java语⾔(对流⾏的语⾔进⾏⾯向对象的扩充得到的语⾔或C++)D. 统⼀建模语⾔(UML)的标准2. ⾯向对象的运动产⽣了多种⾯向对象的语⾔, 其中(C)是⼀种混合性⾯向对象语⾔, 既⽀持⾯向过程的程序设计⽅法,⼜⽀持⾯向对象的程序设计⽅法,有⼴泛应⽤的基础和丰富开发环境的⽀持,因⽽使⾯向对象的程序设计能得到很快普及。
A. SmalltalkB. EiffelC. C++D. Java3.下列不属于⾯向对象技术的基本特征的是(B)。
A. 封装性B. 模块性C. 多态性D. 继承性4. ⾯向对象程序设计将描述事物的数据与( C ) 封装在⼀起,作为⼀个相互依存、不可分割的整体来处理。
A. 信息B. 数据隐藏C. 对数据的操作D. 数据抽象5. 关于⾯向对象⽅法的优点,下列不正确的叙述是(C)。
A. 与⼈类习惯的思维⽅法⽐较⼀致B. 可重⽤性好C. 以数据操作为中⼼D.可维护性好6.(D)是从⽤户使⽤系统的⾓度描述系统功能的图形表达⽅法。
A. 类图C. 序列图D. ⽤例图7. (C ) 是表达系统类及其相互联系的图⽰,它是⾯向对象设计的核⼼,建⽴状态图、协作图和其他图的基础。
A.对象图 B. 组件图 C. 类图 D. 配置图**8.(D)描述了⼀组交互对象间的动态协作关系,它表⽰完成某项⾏为的对象和这些对象之间传递消息的时间顺序。
《面向对象程序设计》模拟题一.单选题1.如果一个类中包含纯虚函数,则该类称为().A.抽象类B.虚基类C.派生类D.子类[答案]:A2.在类中将show声明为不带返回值的纯虚函数,则正确的写法是().A.virtual void show()=0;B.virtual show()=0;C.virtual void show();D.void show()=0 virtual;[答案]:A3.虚函数必须是类的().A.构造函数B.友元函数C.成员函数D.私有成员函数[答案]:C4.下列关于虚函数的描述中,()是正确的.A.虚函数一定不能有函数体B.含有虚函数的类,不能定义该类对象C.虚函数只能被重载,不能被继承D.基类中声明虚函数后,派生类中可以不重载该虚函数[答案]:D5.在C++中要实现动态联编,可以使用()调用虚函数.A.类名B.派生类指针C.对象名D.基类指针[答案]:D6.下列函数中,不能说明为虚函数的是().A.私有成员函数B.公有成员函数C.构造函数D.析构函数[答案]:C7.一个类中的某个函数被声明为virtual,则该函数在该类的所有派生类中().A.都是虚函数B.重载后才是虚函数C.被重新说明为virtual时才是虚函数D.不是虚函数[答案]:A8.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p 是一个指向类A的指针,则p->func()将().A.调用类A中的函数func()B.调用类B中的函数func()C.根据p实际所指对象类型确定调用A或B类中的函数func()D.同时调用A类和B类中的函数func()[答案]:C9.下列关于虚函数的说明中,正确的是().A.从虚基类继承的函数都是虚函数B.虚函数不能是静态成员函数C.通过对象不能调用虚函数D.抽象类中的函数都是虚函数[答案]:B10.有一个重载运算符的函数参数表中,没有任何参数,则可以断定被重载的运算符函数是().A.单目友元函数B.单目成员函数C.双目友元函数D.双目成员函数[答案]:B11.下列关于运算符函数返回值类型的描述中,错误的是().A.可以是类类型B.可以是int类型C.可以是void类型D.可以是float类型[答案]:C12.友元运算符obj1>obj2被C++编译器解释为().A.operator>(obj1,obj2)B.>(obj1,obj2)C.obj1.operator>(obj2)D.obj2.operator>(obj1)[答案]:C13.在表达式x+y*z中,+作为成员函数重载的运算符,*作为友元函数重载的运算符,以下叙述中正确的是().A.operator+有2个参数,operator*有2个参数B.operator+有2个参数,operator*有1个参数C.operator+有1个参数,operator*有2个参数D.operator+有1个参数,operator*有1个参数[答案]:C14.重载赋值运算符时,应声明为()函数.A.友元B.虚C.成员D.多态[答案]:C15.在成员函数中进行双目运算符重载时,参数表中应有()个参数.A.0B.1C.2D.3[答案]:B16.双目运算符重载为友元函数时,参数表中应有()个参数.A.0B.1C.2D.抽象类中的函数都是虚函数[答案]:C17.若表达式a+b中的”+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为().A.a.operator+(b)B.b.operator+(a)C.operator+(a,b)D.双目成员函数[答案]:A18.假定M是一个类名,且M中重载了操作符=,可以实现M对象间的连续赋值,如”m1=m2=m3;”.重载操作符=的函数原型最好是().A.int operaotor=(constM);B.int operator=(constM&);C.Moperator=(constM&);D.可以是float类型19.下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是().A.Value operator+(Value,Value);B.Value operator+(Value,int);C.Value &operator+(Value,Value);D.obj2.operator>(obj1)[答案]:A20.类模板允许我们创建一系列相关的().A.类B.变量C.数组D.operator+有1个参数,operator*有1个参数[答案]:A21.关于异常,以下叙述中正确的是().A.友元B.当异常被一个catch块处理后,执行流程进入下一个catch块C.当一个异常被抛出后,其后的第一个catch块执行D.多态22.以下关于函数模板叙述正确的是().A.函数模板也是一个具体类型的函数B.函数模板的类型参数与函数的参数是同一个概念C.通过使用不同的类型参数,函数模板可以生成不同类型的函数D.用函数模板定义的函数没有类型[答案]:C23.有如下函数模板定义,则下列函数调用中错误的是().template<typnameT>Tfunc(T x,T y){returnx*x+y*y;}A.func(3,5);B.func(3,3.5)C.func<int>(3,5.5);D.func<double>(3,3.5);[答案]:B24.下列关于函数模板的描述中,错误的是().A.函数模板必须由程序员实例化为可执行的模板函数B.函数模板的实例化由编译器完成C.一个类定义中,只要有一个函数模板,则这个类是类模板D.类模板的成员函数都是函数模板25.下列模板声明中,正确的是().A.template<typenameT1,T2>B.template<classT1,T2>C.template<T1,T2>D.template<typenameT1,typenameT2>[答案]:D26.类模板的使用实际上是将类模板实例化为一个().A.函数B.对象C.类D.抽象类[答案]:C27.下列关于异常的叙述中,错误的是().A.编译错属于异常,可以抛出B.运行错属于异常C.抛出异常后,将跳过函数中的其它代码D.抛出的异常可以不被捕获[答案]:A28.在C++程序中使用的cin标识符是系统类库中定义的()类中的一个对象.A.istreamB.ostreamC.iostreamD.fstream[答案]:A29.要进行文件的输入输出,除了包含头文件iostream外,还需要包含头文件().A.ifstreamB.fstreamC.ostreamD.cstdio[答案]:B30.定义char*p=“abcd”,能输出p的值(字符串地址)的语句为().A.cout<<&p;B.cout<<p;C.cout<<(char*)p;D.cout<<const_cast<void*>(p);[答案]:D31.用于打开二进制文件的标志是().A.ios::binaryB.ios::inC.ios::outD.ios::trunc[答案]:A32.下列输出字符’B’的方法中,错误的是().A.cout.put(‘B’);B.chara=’B’;cout<<a;C.cout<<put(‘B’);D.cout<<’B’;[答案]:C33.使用setw()等操作函数设置数据输出格式时,应包含头文件().A.<iomanip>B.<iostream>C.<fstream>D.<ostream>[答案]:A34.可设置输出宽度的方法是().A.setfill()B.setw()C.setprecision()D.oct[答案]:B35.面向对象程序设计思想的主要特征不包括().A.继承性B.功能分解,逐步求精C.封装性和信息隐藏D.多态性[答案]:B36.下列能用作C++标识符的是().A._123B.forC.caseD.virtual[答案]:A37.以下工具中,()将C++源代码转换为目标文件.A.编译器B.链接器C.编辑器D.集成开发环境[答案]:A38.C++程序主函数名称是().A.MainB.mainC.MAIND.用户自定义函数[答案]:B39.main函数的返回值类型是().A.charB.doubleC.intD.无返回类型[答案]:C40.下列关于相同类型指针的运算中,()是非法的.A.两个指针进行相等或不等的运算B.将NULL赋值给某个指针变量C.一个指针加上一个整数D.两个指针相加[答案]:D41.下列关于动态联编的叙述中,()是错误的.A.动态联编是以虚函数为基础的B.动态联编在程序运行时确定所调用的函数代码块C.动态联编调用多态函数时,传递的是基类对象的指针或基类对象引用D.动态联编是在编译时确定调用某个函数的[答案]:D42.下列描述中,()是抽象类的特征.A.可以声明虚函数B.不能说明其对象C.可以定义友元函数D.可以进行构造函数重载[答案]:B43.在派生类中重载一个虚函数时,要求函数名.参数个数.参数类型和函数返回值().A.相同B.不同C.相容D.部分相同[答案]:A44.下列关于抽象类的说明中,不正确的是().A.含有纯虚函数的类称为抽象类B.抽象类不能被实例化C.抽象类的派生类一定可以实例化D.可以声明抽象类的指针[答案]:C45.下列运算符中,不能使用友元函数实现的是().A.+B.=C.*D.<<[答案]:B46.若表达式a==b中的”==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为().A.a.operator==(b)B.b.operator==(a)C.operator==(a,b)D.operator==(b,a)[答案]:C47.对于int *p[5],以下叙述正确的是().A.p是一个指向数组的指针,所指向的数组是5个int型元素B.p是一个指向某数组中下标为5的元素的指针,该元素为int型C.p[5]表示某个数组的第5个元素的值D.p是一个具有5个元素的指针数组,每个元素是一个int型指针[答案]:D48.若一个函数无返回值,则定义它时函数的类型应该为().A.voidB.任意C.intD.无[答案]:A49.在VC环境下,int型占用的字节数为().A.1B.2C.4D.8[答案]:C50.类型修饰符unsigned修饰()类型是错误的.A.charB.intC.longintD.float[答案]:D51.已有int m=10;则属于合法引用定义的是().A.int &rm=m;B.int &rm=10;C.int &rm;rm=m;D.int &rm=&m;[答案]:A52.在C++中,下列关于设置参数默认值的叙述中,正确的是().A.不允许设置参数的默认值B.设置参数默认值时,应先设置右边的再设置左边的C.设置参数默认值时,要么全部设置,要么一个也不设置D.设置参数默认值时,应先设置左边的再设置右边的[答案]:B53.下列对重载函数的描述中,()是错误的.A.重载函数中不允许使用缺省参数B.重载函数不能通过返回值类型区分不同的版本C.编译系统根据参数表确定函数版本D.类的析构函数不能重载[答案]:A54.下面动态分配内存的代码执行后,正确的描述是().Int *p;p=new int[5];A.动态开辟5个int元素,初值不确定B.动态开辟初值为5的一个int元素C.动态开辟5个int元素,初值为0D.释放p所指向内存的代码为:delete p;[答案]:A55.重载函数在调用时选择的依据中,()是错误的.A.参数个数B.参数类型C.函数名字D.函数的类型[答案]:D56.已知数组定义,int array[10];则最小数组下标为().A.0B.1C.9D.10[答案]:A57.字符串”ab”在内存中占用的字节数为().A.1B.2C.3D.4[答案]:C58.1条return语句,可以返回()值.A.1个B.多个C.1个或多个D.任意[答案]:A59.以下表达式中,结果为false的是().A.3.15B.-0.5C.0D.‘0’[答案]:C60.已知数组定义,int array[10];()是非法的数组元素访问.A.array[10]B.array[1]C.array[0]D.array[9][答案]:A61.下列的符号常量定义中,错误的定义是().A.int constM=10;B.const intM=20;C.const char ch;D.const bool mark=true;[答案]:C62.设array为一个数组,则表达式sizeof(array)/sizeof(array[0])的结果为().A.array数组首地址B.array数组中元素个数C.array数组中每个元素所占的字节数D.array数组占的总字节数[答案]:B63.用new运算符创建一个含10个元素的一维整型数组的正确语句是().A.int *p=new a[10];B.int *p=new float[10];C.int *p=new int[10];D.int *p=new int[10]={1,2,3,4,5}[答案]:C64.假定指针变量p定义为”int *p=new int[30];”,要释放p所指向的动态内存,应使用语句().A.delete p;B.delete *p;C.delete &p;D.delete[]p;[答案]:D65.采用重载函数的目的是().A.实现共享B.减少空间C.提高速度D.使用方便,提高可读性[答案]:D66.关于封装,下列说法中不正确的是().A.通过封装,对象的全部属性和操作结合在一起,形成一个整体B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)C.通过封装,每个对象都成为相对独立的实体D.通过封装,对象的属性都是不可见的[答案]:D67.面向对象方法的多态性是指().A.一个类可以派生出多个特殊类B.一个对象在不同的运行环境中可以有不同的变体C.针对一消息,不同的对象可以以适合自身的方式加以响应D.一个对象可以是由多个其他对象组合而成的[答案]:C68.在类作用域中能够通过直接使用该类的()成员名进行访问.A.私有B.公有C.保护D.任何[答案]:D69.假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为().A.px(a)B.px[a]C.px->aD.px.a[答案]:C70.类的析构函数是一个对象被()时自动调用的.A.建立B.销毁C.赋值D.引用[答案]:B71.设px是指向一个类对象的指针变量,则执行”delete px;”语句时,将自动调用该类的().A.无参构造函数B.带参构造函数C.析构函数D.拷贝构造函数[答案]:C72.类的析构函数可以带有()个参数.A.0B.1C.2D.任意[答案]:A73.静态成员函数对类的数据成员访问().A.是不允许的B.只允许是静态数据成员C.只允许是非静态数据成员D.可允许是静态数据成员或非静态数据成员[答案]:B74.假定AB为一个类,则执行”AB a(2),b[3],*p[4];”语句时共调用该类构造函数的次数为().A.3B.4C.5D.9[答案]:B75.假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为().A.int AA::a()B.int AA:a()C.AA::a()D.AA::inta()[答案]:A76.类中具有数据操作功能的是().A.常数据成员B.函数成员C.数据成员D.静态成员[答案]:B77.关键字()定义允许在类外部使用的成员数据和成员函数.A.virtualB.classC.publicD.private[答案]:C78.下列对构造函数的描述中,()是错误的.A.函数名与类名完全相同B.构造函数允许重载C.返回类型应该为voidD.构造函数允许使用缺省参数[答案]:C79.已知print是某个类的常成员函数,返回值类型为void,正确的定义形式是().A.void const print();B.const void print();C.void print() const;D.void print(const);[答案]:C80.假定MyClass为一个类,执行”MyClassa[3],*p;”语句时会自动调用该类型构造函数()次.A.2B.3C.4D.5[答案]:B81.下列运算符中,必须使用友元函数实现的是().A.+B.++C.*D.<<[答案]:D82.如果表达式a++中的”++”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为().A.a.operator++()B.operator++(a)C.operator++(a,1)D.operator++(1,a)[答案]:C83.在C++程序中使用的cout标识符是系统类库中定义的()类中的一个对象.A.istreamB.ostreamC.iostreamD.fstream[答案]:B84.假定AB为一个类,则执行”AB x;”语句时将自动调用该类的().A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载运算符[答案]:B85.类的构造函数可以带有()个参数.A.0B.1C.2D.任意[答案]:D86.对类对象成员的初始化是通过构造函数中给出的()实现的.A.函数体B.初始化列表C.参数表D.初始化列表或函数体[答案]:B87.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为().A.AB(){a=0;}B.AB(int aa=0):a(aa){}C.AB(int aa):a(aa){}D.AB(){}[答案]:D88.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为().A.abcB.*thisC.thisD.this&[答案]:C89.下列关于析构函数的描述中,()是正确的.A.一个类中可以重载多个版本析构函数B.析构函数名与类名完全相同C.析构函数可以有1个或多个参数D.析构函数不能指定返回值类型[答案]:D90.假定AB为一个类,x是AB类的一个对象,则执行”AB y=x;”语句时将自动调用该类的().A.复制构造函数B.析构函数C.缺省构造函数D.赋值运算符函数[答案]:A91.若有类Test,该类的复制构造函数声明为().A.Test();B.Test (constCTest&);C.void Test(constCTest&t);D.Test(constCTest*t);[答案]:B92.以下选项中,()不是类的成员函数.A.构造函数B.析构函数C.友元函数D.复制构造函数[答案]:C93.构造函数在()时被调用.A.程序编译B.程序装入内存C.创建类D.创建对象[答案]:D94.用户能够为类定义()个析构函数.A.1B.0C.2D.多个[答案]:A95.下列函数原型中,可以作为类AA构造函数的是().A.void AA(int);B.int AA();C.AA(int)const;D.AA(int);[答案]:D96.友元的作用是().A.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏D.增加成员函数的种类[答案]:A97.被非静态成员函数访问的类的数据成员().A.可以是非静态数据成员或静态数据成员B.不可能是类的静态数据成员C.只能是类的非静态数据成员D.只能是类的静态数据成员[答案]:A98.使用关键字()修饰的数据成员,允许当前类及其派生类访问,而不允许在类的外部访问.A.publicB.protectedC.privateD.不指定[答案]:B99.派生类的成员函数可以直接访问基类的()成员.A.公有B.保护C.公有和保护D.私有[答案]:C100.下列叙述中,()不符合赋值兼容性规则.A.基类的对象可以赋值给派生类对象B.派生类对象可以赋值给基类的对象C.派生类对象可以初始化基类对象的引用D.派生类对象的地址可以赋值给基类的对象指针[答案]:A101.如果采用公有继承,通过派生类对象,可以访问基类的().A.私有成员B.所有成员C.保护成员D.公有成员[答案]:D102.派生类构造函数的成员初始化列表中不能包含().A.基类的构造函数B.派生类中成员对象的初始化C.基类成员对象的初始化D.派生类中一般数据成员的初始化[答案]:D103.当保护继承时,基类的()在派生类中成为保护成员,不能通过派生类对象来直接访问.A.任何成员B.公有成员和保护成员C.公有成员和私有成员D.私有成员[答案]:B104.设置虚基类的目的是().A.简化程序B.消除二义性C.提高运行效率D.减少目标代码[答案]:B105.下列虚基类的声明中,()是正确的.A.class virtualB:publicAB.classB:virtual publicAC.virtual classB:publicAD.classB:publicA virtual[答案]:B106.类O定义了私有函数F1.P和Q为O类的派生类,定义为classP:public){…};classQ:protectedO{…}.则()可以访问F1.A.O的对象B.P类内C.O类内D.Q类内[答案]:C107.派生类采用()继承方式可以使基类保护成员成为自己的私有成员.A.私有继承B.保护继承C.公有继承D.私有.保护.公有均可[答案]:A108.从一个基类派生出的各个类的对象之间().A.共享所有数据成员,每个对象还包含基类的所有属性B.共享部分数据成员,每个对象还包含基类的所有属性C.不共享任何数据成员,但每个对象还包含基类的所有属性D.共享部分数据成员和函数成员[答案]:C109.建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为()的构造函数.A.自己所属类.对象成员所属类.基类B.对象成员所属类.基类.自己所属类C.基类.对象成员所属类.自己所属类D.基类.自己所属类.对象成员所属类[答案]:C110.当派生类中有和基类一样名字的成员时,一般来说,().A.将产生二义性B.派生类的同名成员将覆盖基类的成员C.是不能允许的D.基类的同名成员将覆盖派生类的成员[答案]:B111.下列关于运算符重载的描述中,正确的是().A.运算符重载可以改变操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构[答案]:D112.下列关于模板的描述,错误的是().A.模板把数据类型作为一个设计参数B.模板定义中支持多个参数类型C.模板定义中只能支持一个参数D.模板参数列表中可以有类型参数和非类型参数[答案]:C113.read函数的功能是从输入流中读入().A.一个字符B.当前字符C.一行字符D.指定若干字符[答案]:D114.要求打开文件”D:\file.dat”,并能写入数据的正确语句是().A.if streamin file(“D:\\file.data”,ios::in);B.if streamin file(“D:\\file.data”,ios::out);C.of streamin file(“D:\\file.data”,ios::out);D.if streamin file(“D:\\file.data”,ios::in|ios::out);[答案]:D115.编译器将C++源代码翻译为().A.目标文件B.可执行文件C.头文件D.资源文件[答案]:A116.C++源程序文件的缺省扩展名为().A..libB..objC..exeD..cpp[答案]:D117.假定一个二维数组的定义语句为”int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为().A.2B.4C.6D.8[答案]:C118.函数重载是指().A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C.两个以上的函数名字不同,但形参的个数或类型相同D.两个以上的函数取相同的函数名,并且函数的返回类型相同[答案]:A119.假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为().A.x(a)B.x[a]C.x->aD.x.a[答案]:D120.类的实例化是指().A.定义类B.创建类的对象C.调用类的成员D.指明具体类[答案]:B二.问答题1.写出下面程序的执行结果.#include <iostream>using namespace std;int f(int n){if(n<=0) throw n;int s=1;for(int i=1;i<=n;i++) s*=i;return s;}int main(){try{ cout<<“4!=“<<f(4)<<endl;cout<<“-2!=“<<f(-2)<<endl;}catch(int n){ cout<<“n=“<<n<<“不能计算n!”<<endl; cout<<“程序执行结束”<<endl;}return 0;}[答案]:4!=24n=-2不能计算n!程序执行结束2.下面程序执行后,假定用户输入”Every student love C++”,写出程序执行后文件”D:\1.txt”中存储的内容.#include <iostream>#include<fstream>using namespace std;int main(){charbuf[100];cin>>buf;ofstreamof;of.open(“D:\\1.txt”);of<<buf;of.close();return 0;}[答案]:Every3.写出下面程序的执行结果.#include <iostream>int main(){int number = 267;int digit, tens, hundreds;digit = number %10;tens =(number/10)%10;hundreds = (number/100)%10;cout<<"Result:"<<hundreds<<", "<<tens<<", "<<digit<<endl;return 0;}[答案]:Result: 2, 6, 74.写出下面程序的执行结果.#include <iostream>using namespace std;double func( double pData[ ], int size);int main(){ doublearray[]={2.2, 3.8, 6, 5.4}; cout<<"Result: "<<func(array, 4)<<endl;cout<<"Result: "<<func(array, 3)<<endl; return 0;}double func( double pData[ ], int size){ double result=0; int i; for(i=0; i<size; ++i){result+=pData[i]; } result /= size; return result;}[答案]: Result: 4.35 Result: 45.写出下面程序的输出结果.#include <iostream>using namespace std;class Base {public:void display() {cout<<“Base display”<<endl; } }; class Derived : public Base { public:void display() { cout<<“Derived display”<<endl; }};void display(Base & rr){rr.display();}intmain(){Base b;Derived d;display(b);display(d);return 0;}[答案]:Base display Base display6.写出程序输出结果.#include <iostream>using namespace std;class Base{private:int base;public:Base(int b) {base=b;cout<<“base=“<<b<<endl;}~Base() { }};class Derived : public Base{private:Base bb;int derived;public:Derived(int d,intb,int c) : bb(c) , Base(b){derived=d;cout<<“derived=“<<derived<<endl;}~Derived(){}};int main(){Derived d(3,4,5);return 0;}[答案]: base=4 base=5 derived=3。
《面向对象程序设计》模拟试题及答案0《面向对象程序设计》模拟试题及答案一、单项选择题(每小题2分,共20分)1. C++程序的基本功能模块为()。
A. 表达式B. 标识符C. 语句D. 函数2. 当处理特定问题的循环次数已知时,通常采用()来解决。
A. for循环B. while循环C. do循环D. switch语句3. 下面函数原型语句正确的是()。
A. int Function(void a);B. void Function (int);C. int Function(a);D. int(double a);4. 假定变量m定义为“int m=7;”,则定义变量p的正确语句为()。
A. int p=&mB. int *p=&mC. int &p=*m;D. int *p=m;5. 假定变量a和pa定义为“double a[10], *pa=a;”,要将12.35赋值给数组a中的下标为5的元素,不正确的语句是()。
A. pa[5]=12.35;B. a[5]=12.35;C. *(pa+5)=12.35;D. *(a[0]+5)=12.35;6. 假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为()。
A. x.aB. x.a()C. x->GetValue()D. x.GetValue()7. 类的构造函数是在定义该类的一个( )时被自动调用执行的。
A. 成员函数B. 数据成员C. 对象D. 友元函数8. 假定AB为一个类,则执行“AB x;”语句时将自动调用该类的( )。
A. 带参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数9. 假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为( )。
A. AB() {a=0;}B. AB(int aa=0): a(aa) {}C. AB(int aa): a(aa) {}D. AB() {}10. 如果表达式a++中的“++”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为()。
《面向对象程序设计》练习题及答案1. 单选题1. 数组的大小在创建以后( )。
A. 可以改变B. 不能改变C. 使用new方法可以改变D. 有些可以改变正确答案:B2. 已知如下代码:boolean m = true;if ( m = false ) System.out.println("False");else System.out.println("True");执行结果是( )A. FalseB. TrueC. NoneD. 出错正确答案:B3. 下列代码中,将引起一个编译错误的行是( ) 1)public class Test{ 2) int m,n; 3) public Test(){} 4) public Test(int a){m=a;} 5) public static void main(String args[]){ 6) Test t1,t2; 7) int j,k; 8) j=0;k=0; 9) t1=new Test(); 10) t2=new Test(j,k); 11) }12) }A. 第3行B. 第5行C. 第6行D. 第10行正确答案:D4. 如果类中的成员变量可以被同一包访问,则使用如下哪个约束符( )。
A. privateB. publicC. protectedD. no modifier正确答案:D5. 下列哪个类声明是正确的( )A. abstract final class Hl{…}B. abstract private move(){…}C. protected private numberD. public abstract class Car{…}正确答案:D6. 下列构造方法的调用方式中,正确的是( )。
A. 按照一般方法调用B. 由用户直接调用C. 只能通过new 自动调用D. 被系统调用正确答案:C7. 以下有关构造方法的说法,正确的是( )A. 一个类的构造方法可以有多个B. 构造方法在类定义时被调用C. 构造方法只能由对象中的其它方法调用D. 构造方法可以和类同名,也可以和类名不同正确答案:A8. 设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( )A. 3B. 3.5C. 4D. 5正确答案:A9. 下面的表达式哪个是正确的( )A. String s="你好";int i=3; s+=i;B. String s="你好";int i=3; if(i==s){ s+=i};C. String s="你好";int i=3; s=i+s;D. String s="你好";int i=3; s=i+;正确答案:A10. 下列正确的句子是( )。
第9章面向对象方法学一、填空题(10小题)1、对象具有状态,描述对象的状态用它的()。
答案:属性值2、类具有属性,描述类的属性用()。
答案:数据结构3、子类自动共享父类的属性和操作的机制称为()。
答案:继承4、封装性是指所有软件部件内部都有明确的()以及清楚的()。
每个软件部件都有友好的(),软件部件的()与()分离。
答案:范围、外部边界、界面接口、内部实现、外部可访问性5、结构化方法的本质是(),其()、可修改性和可重用性都比较差。
答案:功能分解、稳定性6、动态模型描述了系统的()。
答案:动态行为7、类具有属性,它是对象的()的抽象,用()来描述类的属性。
答案:状态、数据结构8、动态模型描述了系统的()结构。
答案:控制9、对象具有状态,对象用()来描述它的状态。
答案:数据值10、在C++和C中有一个()函数,可以使用这个过程来说明构成系统主要对象的那些类的实例。
答案:main()二、单项选择题(20小题)1、在确定类时,所有()是候选的类。
A、名词B、形容词C、动词D、代词答案:A2、面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统,一个类的上层可以有父类,下层可以有子类,这种层次结构系统的一个重要性质是(),一个类获得其父类的全部描述(数据和操作)。
A、传递性B、继承性C、复用性D、并行性答案:B3、对象是面向对象开发方法的基本成分,每个对象可用它本身的一组()和它可以执行的一组操作来定义。
A、服务B、参数C、属性D、调用答案:C4、面向对象开发方法子概念和表示上的一致性保证了分析和设计的()过渡。
A、困难B、不容易C、平滑D、顺序答案:C5、以下说法正确的是()。
A、组装结构可用来描述现实世界中的一般的抽象关系B、分类结构可用来描述现实世界中的类的组成的抽象关系C、面向对象的继承性是子类自动共享父类数据结构和方法的机制D、面向对象的唯一性是指将具有一致性的数据结构(属性)和行为(操作)的对象抽象成类答案:C6、与事件联系在一起的瞬时操作是()。
软件设计师分类模拟题面向对象方法学(一) 单项选择题 1. 已知3个类A、B和C,其中类A由类B的一个实例和类C的一个或多个实例构成。能够正确表示类A、B和C之间关系的UML类图是______。 A.
B. C. D. 答案:A 2. 在uML语言中,图5-3中的a、b、c三种图形符号按照顺序分别表示______。
A.边界对象、实体对象、控制对象 B.实体对象、边界对象、控制对象 C.控制对象、实体对象、边界对象 D.边界对象、控制对象、实体对象
答案:C 当不适合采用生成子类的方法对已有的类进行扩充时,可以采用 3 设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用 4 设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用 5 设计模式将该类的接口转换成我们希望的接口。3. A.命令(Command) B.适配器(Adapter) C.装饰(Decorator) D.享元(Flyweight) 答案:C 4. A.命令(Command) B.适配器(Adapter) C.装饰(Decorator) D.享元(Flyweight)
答案:D 5. A.命令(Command) B.适配器(Adapter) C.装饰(Decorator) D.享元(Flyweight)
答案:B
6. 下列关于一个类的静态成员的描述中,不正确的是______。 A.该类的对象共享其静态成员变量的值 B.静态成员变量可被该类的所有方法访问 C.该类的静态方法只能访问该类的静态成员变量 D.该类的静态数据成员变量的值不可修改
答案:D 开-闭原则(0pen-Closed Principle,OCP)是面向对象的可复用设计的基石。开-闭原则是指一个软件实体应当对 7 开放,对 8 关闭;里氏代换原则(Liskov Substitution Principle,LSP)是指任何 9 可以出现的地方, 10 一定可以出现。依赖倒转原则(Dependence Inversion Principle,DIP)就是要依赖于 11 而不依赖于 12 ,或者说要针对接口编程,不要针对实现编程。7. A.修争 B.扩展 C.分析 D.设计
答案:B 8. A.修 B.扩展 C.分析 D.设计
答案:A 9. A.变量 B.常量 C.基类对象 D.子类对象
答案:C 10. A.变量 B.常量 C.基类对象 D.子类对象
答案:D 11. A.程序设计语言 B.建模语言 C.实现 D.抽象
答案:D 12. A.程序设计语言 B.建模语言 C.实现 D.抽象
答案:C
13. 以下关于类和对象的叙述中,错误的是______。 A.类是具有相同属性和服务的一组对象的集合 B.类是一个对象模板,用它仅可以产生一个对象 C.在客观世界中实际存在的是类的实例,即对象 D.类为属于该类的全部对象提供了统一的抽象描述 答案:B 下面给出了4种设计模式的作用。 外观(Facade):为子系统中的一组功能调用提供一个一致的接口,这个接口使得这个子系统更加容易使用; 装饰(Decorator):当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能; 单例(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点; 模板方法(Template Method):在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现。请根据下面叙述的场景选用适当的设计模式。若某面向对象系统中的某些类有且只有一个实例,那么采用 14 设计模式能够有效达到该目的;该系统中的某子模块需要为其他模块提供访问不同数据库系统(Oracle、SQL Server、DB2 UDB等)的功能,这些数据库系统提供的访问接口有一定的差异,但访问过程都是相同的,例如,先连接数据库,再打开数据库,最后对数据进行查询, 15 设计模式可抽象出相同的数据库访问过程;系统中的文本显示类(TextView)和图片显示类(PictureView)都继承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚动条,或者带有黑色边框,或者既有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增加3个类, 16 设计模式可以实现该目的。14. A.外观 B.装饰 C.单例 D.模板方法
答案:C 15. A.外观 B.装饰 C.单例 D.模板方法
答案:D 16. A.外观 B.装饰 C.单例 D.模板方法
答案:B
17 反映了类间的一种层次关系,而 18 反映了一种整体与部分的关系。17. A.继承 B.组合 C.封装 D.多态
答案:A 18. A.继承 B.组合 C.封装 D.多态 答案:B
19. ______将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 A.Adapter(适配器)模式 B.Command(命令)模式 C.Singleton(单例)模式D.Strategy(策略)模式
答案:A
20. 在面向对象程序设计中,常常将接口的定义与接口的实现相分离,可定义不同的类实现相同的接口。在程序运行过程中,对该接口的调用可根据实际的对象类型调用其相应的实现。为达到上述目的,面向对象语言需提供______机制。 A.继承和过载(overloading) B.抽象类 C.继承和重置(overtiding) D.对象自身引用
答案:C 21. ______表示了系统与参与者之间的接口。在每一个用例中,该对象从参与者处收集信息,并将之转换为一种被实体对象和控制对象使用的形式。 A.边界对象 B.可视化对象 C.抽象对象 D.实体对象
答案:A 22. ______不是面向对象分析阶段需要完成的。 A.认定对象 B.组织对象 C.实现对象及其相互关系 D.描述对象间的相互作用
答案:C 23. 对于如图5-1所示的UML类图,正确的描述是______。
A.类B的实例中包含了对类C的实例的引用 B.类A的实例中包含了对类B的实例的引用 C.类A的实例中包含了对类C的实例的引用 D.类B的实例中包含了对类A的实例的引用
答案:B 24 设计模式将抽象部分与它的实现部分相分离,使它们都可以独立地变化。图5-5所示为该设计模式的类图,其中, 25 用于定义实现部分的接口。
24. A.Singleton(单例) B.Bridge(桥接) C.Composite(组合)D.Facade(外观)
答案:B 25. A.Abstraction B.ConcreteImplementorA C.ConcreteImplementorB D.Implementor
答案:D
若类A仅在其方法Method1中定义并使用了类B的一个对象,类A其他部分的代码都不涉及类B,那么类A与类B的关系应为 26 ;若类A的某个属性是类B的一个对象,并且类A对象消失时,类B对象也随之消失,则类A与类B的关 系应为 27 。26. A.关联 B.依赖 C.聚合 D.组合
答案:B 27. A.关联 B.依赖 C.聚合 D.组合
答案:D
28. 以下关于面向对象设计的叙述中,错误的是______。 A.高层模块不应该依赖于底层模块 B.抽象不应该依赖于细节 C.细节可以依赖于抽象 D.高层模块无法不依赖于底层模块
答案:D 29. 面向对象分析的第一步是______。 A.定义服务 B.确定附加的系统约束 C.确定问题域 D.定义类和对象
答案:C 采用 30 设计模式可保证一个类仅有一个实例;采用 31 设计模式可将对象组合成树形结构以表示“部分-整体”的层次结构,使用户对单个对象和组合对象的使用具有一致性;采用 32 设计模式可动态地给一个对象添加一些额外的职责。30. A.命令(Command) B.单例(Singleton) C.装饰(Decorator) D.组合(Composite)
答案:B 31. A.命令(Command) B.单例(Singleton) C.装饰(Decorator) D.组合(Composite)
答案:D 32. A.命令(Command)