面向对象的技术与方法-答案
《面向对象技术(本)》课程第四阶段练习题答案

《面向对象技术(本)》课程第四阶段练习题答案一、填充题答案:1.private2.static3.import java.util.*;4.后期,前期5.Math.cos(30*3.14/180)二、选择题答案:1.B 2.A 3.C 4.D 5.C三、简答题答案:1.在面向对象的程序设计语言中,类是一种特殊属性类型,类可以看作具有共同属性和行为的事物的抽象。
在类中包含了变量和与变量有关的操作(方法)。
对象是类的实例。
类和对象的关系就如同属性类型和变量的关系。
例如,“电话”类代表电话这一类事物,而电话的对象代表一个具体的电话。
2.当外部的类可以没有限制地直接访问、修改类中变量时,是非常危险的。
因此必须限制类的外部程序对类内部成员的访问,这就是类的封装目的。
类把属性和方法封装起来,同时创建一些允许外部访问的方法,通过这样的方法来访问类的成员变量。
封装的另一目的是细节屏蔽,便于程序功能的扩展和程序的维护。
3.Java中有四种访问权限:公有的(public)、保护的(protected)、默认的、私有的(private)。
各种权限的访问级别如下表:4.null表示空对象,即没有创建类的任何实例。
当我们声明对象时,如果没有用new 实例化时,此时它就被初始化为一个特殊的值“null”。
而当我们在类的方法定义中需要引用正在使用该方法的对象时,可以用“this”表示。
uper表示对某个类的超类的引用,用super来引用被子类屏蔽的超类的成员。
5.不能被继承的类称为最终类。
在声明类时,用final将类声明为最终类,这样此方法不会在子类中被覆盖(即子类中不能有和此方法同名的方法)。
抽象类则是必须被子类覆盖的类。
在声明类或方法时,用关键字abstract可以将类或方法声明为抽象类或方法。
抽象方法没有方法体,含有抽象方法的类即为抽象类,它是不能实例化的类。
6.多态性是面向对象程序设计的重要特征,是指同一个名字的若干个方法,有不同的实现(即方法体中的代码不一样)。
C++面向对象技术复习题汇总(含答案)

面向对象程序设计C++复习资料与答案第一、二、六、七章习题一、选择题1、系统约定C++源程序文件名的缺省的扩展名为()A、bccB、c++C、cppD、vcc2、面向对象的程序设计将数据与( )放在一起,作为一个相互依存、不可分割的整体来处理.A、对数据的操作B、信息C、数据隐藏D、数据抽象3、当一个函数无返回值时,函数的类型应定义为()A、voidB、任意C、intD、无4、对于C++的函数,正确的叙述是:A、函数的定义不能嵌套,但函数的调用可以嵌套B、函数的定义不能嵌套,但函数的调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套5、下列语句中错误的是( )A、int *p=new int(10);B、int *p=new int[10]C、int *p=new int;D、int *p=new int[40](0);6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:()A、name[3]=’a’;B、name=”lin”;C、name=new char[5]; D、cout<〈name[3];7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:( )A、name[3]=’q';B、name=”lin”;C、name=new char[5];D、name=new char(‘q’);8、假设已经定义:const char *name=”chen”;,下面的语句中错误的是:( )A、name[3]=’q’;B、name=”lin”;C、name=new char[5];D、name=new char(‘q’);9、下面的类型声明中正确的是:( )A、int &a[4];B、int &*p;C、int &&qD、int i,*p=&i;10、假设定义了函数模板( )template 〈class T>T max(T x,T y){ return(x>y)?x:y;}并定义了int i;char c;错误的调用语句是:()A、max(i,i)B、max(c,c)C、max((int)c,i);D、max(i,c)11、模板的使用是为了( )A、提高代码的可重用性B、提高代码的运行效率C、加强类的封装性D、实现多态性12、设有二个语句:int x[‘a’];cin>>x;则编译器认为()A、说明语句int x[‘a’]错B、二个语句都错C、语句cin〉〉x 错D、二个语句正确,没有语法错13、设有语句:void f(int a[10],int &x);int y[10],*py=y,n;则对函数f的正确调用语句是( )A、f(py[10],n);B、f(py,n)C、f(*py,&n)D、f(py,&n)14、在C++中实现封装是借助于()A、枚举B、类C、数组D、函数15、对于下面几个函数:(1) void f(int x,float y){……}(2) int f(int a,float b){…… }(3) int f(int i,int j){……}(4) float k(int x){…… }是重载函数。
自测题-8(面向对象一)(答案)

自测题-8(面向对象一)(答案)C/C++测试题面向对象选择题:C++概述1、以下C++新增的关键字为。
A break B continue C stuctD inline //答案:D2、面向对象程序设计将数据与______放在一起,作为相互依存、不可分割的整体来处理。
A对数据的操作B信息C数据隐藏D数据抽象//答案:A3、面向对象程序设计优于传统的结构化程序设计,其优越性主要表现在,它有希望解决软件工程的两个主要问题:软件复杂性和______。
A 软件生产率的提高B 精化已有的代码C 共享代码D 编写可重用代码//答案:A4、面向对象系统的______是一种信息隐藏技术,目的在与将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需用设计者提供的协议命令对象去做即可。
A多态性B 封装性C继承性D复用性//答案:B5、______不是面向对象系统所包含的要素A重载B对象C 类D继承//答案:A6、关于C++与C语言的关系的描述中,______是错误的。
A C语言是C++的一个子集B C++与C语言是兼容的C C++对C语言进行了一些改进D C++与C语言都是面向对象的//答案:D7、下面关于对象概念的表述中,______是错误的。
A 对象就是C语言中的结构变量B 对象代表着正在创建的系统中的一个实体C 对象是一个状态和操作(或方法)的封装体D 对象之间的信息传递是通过信息进行的//答案:A8、下面关于类概念的表述中,______是错误的。
A 类是抽象数据类型的实现B 类是具有共同行为的若干对象的统一描述体C 类是创建对象的样板D 类就是C语言中的结构类型//答案:D9、下列关于C++类的描述中错误的是______。
A 类与类之间可以通过一些手段进行通信和联络 B 类用于描述事物的属性和对事物的操作C 类与类之间必须是平等关系,而不能组成层次关系D 类与类之间可以通过封装而具有明确的独立性//答案:C10、下列关键字中,_______既在C语言中使用,又在C++语言中使用 A inline B break C private D public //答案:B11、C++对C语言做了很多改进。
软件工程试题及答案

4. 面向对象的分析方法主要是建立三类模型,即( D )。
A) 系统模型、ER模型、应用模型B) 对象模型、动态模型、应用模型C) E-R模型、对象模型、功能模型D) 对象模型、动态模型、功能模型5. 在E-R模型中,包含以下基本成分( )。
A) 数据、对象、实体B) 控制、联系、对象C) 实体、联系、属性D) 实体、属性、操作9.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0, 1.0],现从输入的角度考虑一组测试用例:-1.001, -1.0, 1.0, 1.001.设计这组测试用例的方法是( c )A.条件覆盖法 B.等价分类法C.边界值分析法 D.错误推测法10、详细设计的基本任务是确定每个模块的( d )A.功能B.调用关系C.输入输出数据 D.算法11.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。
对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:( a )A.模块化的根据B.逐步求精的根据C.抽象的根据D.信息隐藏和局部化的根据13.面向数据流的设计方法把( D )映射成软件结构。
A.数据流B.系统结构C.控制结构D.信息流14.内聚程度最低的是( A.偶然 )内聚A.偶然 B.过程 C.顺序 D.时间15.确定测试计划是在( D )阶段制定的.A.总体设计 B.详细设计 C.编码 D.测试16.需求分析的产品是( D )A.数据流程图案B.数据字典C.判定表D.需求规格说明书17.数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( C )A.数据库设计B.数据通信C.数据定义D.数据维护18.( D )引入了“风险驱动”的思想,适用于大规模的内部开发项目。
A.增量模型B.喷泉模型C.原型模型D.螺旋模型(×)2、系统测试的主要方法是白盒法,主要进行功能测试、性能测试、安全性测试及可靠性等测试。
华东理工-面向对象技术(本) -2017年秋季网上作业1

B、getID()
C、getSource()
D、getItem()
标准答案:C
容:
在编写Java Applet程序时,需要在程序的开头写上( )语句
A、import java.awt.*
B、import java.applet.*
C、import java.io.*
D、import java.awt.event.*
标准答案:B
学员答案:B
本题得分:5
题号:6题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5
题号:1题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5
容:
在创建一个字体类对象的过程中,如果希望字体的式样为粗体,应选用下面的( )参数。
A、Font.PLAIN
B、Font.BOLD
C、Font.ITALIC
D、Font.BOLD和Font.ITALIC
标准答案:B
学员答案:B
本题得分:5
学员答案:C
本题得分:5
题号:12题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5
容:
关于接口,下面( )说法是错的。
A、接口中只有常量和抽象方法
B、一个接口可以被一个或多个类实现
C、类实现了接口,就必须实现接口中的部分方法
D、实现接口的关键字是implements
标准答案:C
学员答案:C
C、protected private movie
D、public abstract class Movie {···}
标准答案:D
学员答案:D
本题得分:5
题号:11题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5
软件工程试题答案

《软件工程模拟试题及参考答案》(一)一、单向选择题(四选一、每小题3分,共18分)1、面向对象(Object Oriented)方法是将现实世界的事物以对象的方式(B )到计算机世界的方法。
对应映射反映反射2、盒图也称为(D)或Chapin图。
这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题。
流程图框图判定表N-S图3、面向数据的设计方法就是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的(A)结构。
程序数据逻辑物理4、人机界面的风格大致经过了(B)代的演变。
三四五六5、以下不属于白盒测试技术的是(D)逻辑覆盖基本路径测试循环覆盖测试等价类划分6、为改正软件系统中潜藏的错误而进行的维护活动称为(A)。
纠错性维护适应性维护改善性维护预防性维护二、填空题(每空2分,共18分)1.文档—一种数据媒体和其上所记录的(数据)。
2.机器语言、汇编语言:依赖于机器,面向(机器)3.软件有效性,指软件系统的时间和(空间)效率。
4.软件定义过程可通过软件系统的(可行性研究)和需求分析两个阶段来完成。
5.软件定义的基本任务是确定软件系统的工程(需求),也就是要搞清“做什么”。
6.为了使用户需求逐步精细化、完全化、一致化,通常采用(需求建模技术)。
7.一个软件的深度是指其控制的(层数)。
8.以详细设计说明书为输入,将该输入用某种程序设计语言翻译成计算机可以理解并最终可运行的代码的过程叫(编码)过程。
9.软件维护是软件生命周期的(最后)一个阶段。
三、判断题(每小题2分,共24分,错误打X、正确打√)1.缺乏有力的方法学的指导和有效的开发工具的支持,这往往是产生软件危机的原因之一。
(√)2.一个好的开发人员应具备的素质和能力不包括具有良好的书面和口头表达能力。
(X)3.在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获取第一手资料,并从中提取出有价值的需求。
(√)4.快速原型技术的适用于软件产品要求大量的用户交互、或产生大量的可视输出、或设计一些复杂的算法等场合。
面向对象技术(答案)

●下面关于面向对象方法中消息的叙述,不正确的是____(2)__。
(2)A. 键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息C. 应用程序之间可以相互发送消息D.发送与接收消息的通信机制与传统的子程序调用机制不同正确答案:B【解析】在系统中既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此的通信,这样的方法才称为"面向对象的方法"。
●面向对象技术中,对象是类的实例。
对象有三种成份:____(3)____、属性和方法(或操作)。
(3) A. 标识B. 规则C. 封装D. 消息正确答案:A解析:对象有三种成份:标识(对象名)、属性和方法(或操作)。
●在面向对象技术中,类属是一种__(1)__机制。
一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与__(2)__的那些部分,而用变元来表示与__(3)__的那些部分。
(1)A.包含多态B.参数多态C.过载多态D.强制多态(2)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关(3)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关解析:在面向对象技术中,对象在收到信息后要予以响应。
不同的对象收到同一消息可产生完全不同的结果,这一现象称为多态。
多态有多种不同的形式,其中参数多态和包含多态称为通用多态,过载多态和强制多态成为特定多态。
参数多态应用比较广泛,被称为最纯的多态。
这是因为同一对象、函数或过程能以一致的形式用于不同的类型。
包含多态最常见的例子就是子类型化,即一个类型是另一类型的子类型。
过载多态是同一变量被用来表示不同的功能,通过上下文以决定一个类所代表的功能。
即通过语法对不同语义的对象使用相同的名,编译能够消除这一模糊。
强制多态是通过语义操作把一个变元的类型加以变换,以符合一个函数的要求,如果不做这一强制性变换将出现类型错误。
Java语言与面向对象技术复习资料

Java语⾔与⾯向对象技术复习资料⼀、单项选择题。
1、下列哪个是Java应⽤程序主类中正确的main⽅法?()A.public void main(String args[])B.static void main(String args[])C.public static void Main(String args[])D.public static void main(String args[])2、下列哪项是正确的float变量的声明?()A.float foo=-1; B.float foo=1.0;C.float foo=2.02f; D.float foo=0x0123;3、对于int a[]=new int[3];下列哪个叙述是错误的?()A.a.length的值是3。
B.a[1]的值是1。
C.a[0]的值是0。
D.a[a.length-1]的值等于a[2]的值。
4、下列哪个叙述是正确的?()A.5.0/2+10的结果是double型数据。
B.(int)5.8+1.0的结果是int型数据。
C.’苹’+’果’的结果是char型数据。
D.(short)10+’a’的结果是short型数据。
5、对于下列Hello类,哪个叙述是正确的?()A.Hello类有2个构造⽅法。
B.Hello类的int Hello()⽅法是错误的⽅法。
C.Hello类没有构造⽅法。
D.Hello⽆法通过编译,因为其中的hello⽅法的⽅法头是错误的(没有类型)。
class Hello {Hello (int m) {}int Hello() {Return 20;}hello() {}}6、下列哪个叙述是正确的?()A.成员变量的名字不可以和局部变量的名字相同。
B.⽅法的参数的名字可以和⽅法中声明的局部变量的名字相同。
C.成员变量没有默认值。
D.局部变量没有默认值。
7、下列哪个叙述是正确的?()A.⼦类继承⽗类的构造⽅法B.abstract类的⼦类必须是⾮abstract类C.⼦类继承的⽅法只能操作⼦类继承和隐藏的成员变量D.⼦类重写或新增的⽅法也能直接操作被⼦类隐藏的成员变量8、下列程序中注释的哪个代码(A,B,C,D)是错误的(⽆法通过编译)?()class A {static int m;static void f() {m=20; //A}}class B extends A {void f() //B{ m=222; //C}}class E {public static void main(String args[]) {A.f();}}9、将下列哪个代码(A,B,C,D)放⼊程序中标注的【代码】处将导致编译错误?()A.public float getNum() {return 4.0f;}B.public void getNum() {};C.public void getNum(double d) {}D.public double getNum(float d) {return 4.0d;}class A {public float getNum() {return 3.0f;}}public class B extends A {【代码】}10、下列哪个叙述是正确的?()A. ⼀个类最多可以实现两个接⼝B. 如果⼀个抽象类实现某个接⼝,那么它必须要重写接⼝中的全部⽅法C. 如果⼀个⾮抽象类实现某个接⼝,那么它可以只重写接⼝中的部分⽅法D. 允许接⼝中只有⼀个抽象⽅法⼆、程序填空题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int i;
int main()
{ i=9;
{ int i;
i=32;
cout<<"i="<<i<<endl;
}
cout<<"i="<<i;
return 0;
}
请写出程序的显示输出:
I= 32
I= 9
2. 源程序如下:
#include<iostream>
using namespace std;
2. 简述前置++运算符与后置++运算符的重载原理。
假设关于ClassA进行前置和后置++的重载,则其重载函数大概形式应如下:
ClassA&ClassA::operator++() //前置++
{
itsVal++;
return *this;
}
const ClassA ClassA::operator++(int) //后置++
保持已有类的特性而构造新类的过程称为继承
3.派生
在已有类的基础上新增自己的特性而产生新类的过程称为派生
被继承的已有类称为基类(或父类)。
派生出的新类称为派生类。
4.多态
多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在一般类及其各个特殊类中具有不同的语义。
1.封装
把对象的属性和服务结合成一个独立的系统单元。
尽可能隐蔽对象的内部细节。对外形成一个边界(或者说一道屏障),只保留有限的对外接口使之与外部发生联系
2.继承
继承对于软件复用有着重要意义,是面向对象技术能够提高软件开发效率的重要原因之一。
定义:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。
通过派生类的对象不能直接访问基类中的任何成员。
4. 简述虚函数与抽象类的概念与联系。
虚函数
虚函数是动态绑定的基础。
是非静态的成员函数。
在类的声明中,在函数原型之前写virtual。
virtual 只用来说明类声明中的原型,不能用在函数实现时。
具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。
5.拷贝构造函数
拷贝构造函数是一种特殊的构造函数,其形参为本类的对象引用。
class 类名
{ public :
类名(形参);//构造函数
类名(类名 &对象名);//拷贝构造函数
...
};
类名:: 类名(类名 &对象名)//拷贝构造函数的实现
{ 函数体 }
二.简答题(共4小题,每题5分,共20分)
1. 简述相对于面向过程设计思想,面向对象程序设计思想所具有的优势。
对于暂时无法实现的函数,可以声明为纯虚函数,留给派生类去实现。
注意
抽象类只能作为基类来使用。
不能声明抽象类的对象。
构造函数不能是虚函数,析构函数可以是虚函数。
三.程序分析(共4小题,每题10分,共40分,说明:阅读并分析各小题中的源程序,按要求写出程序执行结果。)
1. 源程序如下:
#include<iostream>
面向过程
有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。
面向对象程序
使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。
程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。
通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。
经重载后,表达式 oprd++ 相当于 oprd.operator ++(0)
3. 简述私有继承与公有继承之间的区别。
不同继承方式的影响主要体现在:
派生类成员对基类成员的访问权限
通过派生类对象对基类成员的访问权限
公有继承:
基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。
四川大学各级各类考试的监考人员,必须严格执行《四川大学考试工作管理办法》、《四川大学考场规则》和《四川大学监考人员职责》。有违反学校有关规定的,严格按照《四川大学教学事故认定及处理办法》进行处理。
题号
一
二
三
四
五
六
七
八
九
十
平时
总分
得分
考试时间
年 月 日
阅卷教师签名
一.名词解释(共5小题,每题4分,共20分)
本质:不是重载声用,执行时会
根据指针指向的对象的类,决定调用哪个函数。
抽象类
带有纯虚函数的类称为抽象类:
class 类名
{
virtual 类型 函数名(参数表)=0;
//纯虚函数
...
}
作用
抽象类为抽象和设计的目的而声明,将有关的数据和行为组织在一个继承层次结构中,保证派生类具有要求的行为。
void fun();
void main()
{ fun();
fun();
}
void fun()
{ static int a=6;
int i=3;
a++;
i++;
cout<<"i="<<i<<",a="<<a<<endl;
派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。
通过派生类的对象只能访问基类的public成员。
私有继承
基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可直接访问。
派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。
四川大学计算机(软件)学院工程硕士考试试题
(2014—2015学年第 2学期)
课程号:课序号:课程名称:面向对象的技术与方法任课教师:李征
适用专业:软件工程适用年级:学生人数:印题份数:学号:姓名:
考 试 须 知
四川大学学生参加由学校组织或由学校承办的各级各类考试,必须严格执行《四川大学考试工作管理办法》和《四川大学考场规则》。有考试违纪作弊行为的,一律按照《四川大学学生考试违纪作弊处罚条例》进行处理。
{
ClassA temp(*this);
itsVal++;
return temp;
}
为区别前置和后置运算符,需要在后置运算符重载函数中加参数“int”,虽然这个类型在此除了以示区别之外并不代表任何实际含义;
如果要重载 ++为类成员函数,使之能够实现表达式 oprd++,其中 oprd 为A类对象,则 ++应被重载为 A 类的成员函数,且具有一个 int 类型形参。