面向对象程序设计1

面向对象程序设计1
面向对象程序设计1

面向对象程序设计课程期末复习

一、填空题

1.Java源程序的扩展名是.java ,经过编译后的程序的扩展名是.class 。2.Socket通常也称为套接词,用于描述IP地址和端口。

3.线程的优先级在0 至31 之间,数值越大任务越紧急

4.构造方法是一种特殊的成员方法,构造方法名与类名相同

5.Java语言只允许单继承,指每个类只能有一个父类。

6. 在面向对象方法中,类描述的是具有相似属性与操作的一组对象。

7. 对象是Java程序中基本的结构单位。

8. 组件不能独立地显示出来,必须将组件放在一定的容器中才能显示。

9. 能将显示空间分成很多层的布局管理器是CardLatyout。

10. 任何一个Java程序都默认引入一个包,这个包的名字叫 https://www.360docs.net/doc/4916594456.html,ng。

11. Java语言中,有一个类是所有类或接口的父类,这个类的名称是Object。

12. 只能被同一包中的类访问的类中定义的成员变量是default成员

13. J2EE是大型企业级用容器管理专用组件的应用平台。

14. 在Java语言中,用abstract修饰符定义的类为抽象类。

15.Swing中用来表示面板的类是

16.

Collection的接口和类的API

18.main方法的声明格式包括public static void main(String[]args)

19.下列程序中构造了一个SET并且调用其方法add(),输出结果是 ( 1 )

public class A{

public int hashCode(){return 1;}

public Boolean equals(Object b){return true}

public static void main(String args[]){ Set set=new HashSet();

set.add(new A());

set.add(new A());

set.add(new A());

System.out.println(set.size());

}

}

20.下列程序的运行结果是

class A{

class Dog{

private String name;

private int age;

public int step;

Dog(String s,int a)

{

name=s;

age=a;

step=0;

}

public void run(Dog fast)

{

fast.step++;

}

}

public static void main (String args[])

{

A a=new A();

Dog d=a.new Dog("Tom",3);

d.step=25;

d.run(d);

System.out.println(d.step);

}

}

21.Java语言中, final 类不能被继承。

22.Java中的构造方法名必须与类名同名,它没有返回值。

23.AWT中用来表示对话框的类是 java.awt.Dialong 。

24.Frame框架窗口的默认布局管理器是 BorderLayout 。

25.点击窗口内的按钮时,产生的事件是 ActionEvent 。

三、多项选择

1.执行下列代码后,哪个结论是正确的 String[] s=new String[10]; BD

A、 s[10] 为 "";

B、 s[9] 为 null;

C、 s[0] 为未定义

D、 s.length 为10

2.下面的表达式哪个是正确的? AE

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+;

E、. String s=null; int i=(s!=null)&&(s.length>0)?s.length():0;

3.选出合理的标识符AC

A、 _sys1_lll

B、 2mail

C、 $change

D、 class

4.哪个布局管理器使用的是组件的最佳尺寸( preferred size)AE

A、 FlowLayout

B、 BorderLayout

C、 GridLayout

D、 CardLayout

E、GridBagLayout

5.下列哪个方法可用于创建一个可运行的类? AE

A、 public class X implements Runable{ public void run(){ ......} }

B、 public class X implements Thread{ public void run(){ ......} }

C、 public class X implements Thread{ public int run(){ ......} }

D、public class X implements Runable{ protected void run(){ ......} }

E、public class X implements Thread{ public void run(){ ......} }

6.下面哪个方法可以在任何时候被任何线程调用? DEF

A、 notify()

B、 wait()

C、 notifyAll()

D、 sleep()

E、yield()

F、synchronized(this)

7.构造BufferedInputStream的合适参数是哪个? AC

A BufferedInputStream

B BufferedOutputStream

C FileInputStream

D FileOuterStream

E. File

8.下列说法正确的是BC

A https://www.360docs.net/doc/4916594456.html,ng.Clonable是类

B https://www.360docs.net/doc/4916594456.html,ng.Runnable是接口

C Double对象在https://www.360docs.net/doc/4916594456.html,ng包中

D Double a=1.0是正确的java语句

9.指出正确的表达式AB

A double a=1.0;

B Double a=new Double(1.0);

C byte a = 340;

D Byte a = 120;

10.定义一个类名为"MyClass.java"的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为:CD

A private class MyClass extends Object

B class MyClass extends Object

C public class MyClass

D public class MyClass extends Object

11.指出下列哪个方法与方法public void add(int a){}为合理的重载方法。CD

A public int add(int a)

B public void add(long a)

C public void add(int a,int b)

D public void add(float a)

12.如果下列的方法能够正常运行,在控制台上将显示什么?ACD

public void example(){

try{

unsafe();

System.out.println("Test1");

}

catch(SafeException e)

{System.out.println("Test 2");}

finally{System.out.println("Test 3");}

System.out.println("Test 4");

}

A Test 1

B Test 2

C Test 3

D Test 4

13.下列哪些情况可以终止当前线程的运行?ABD

A 抛出一个例外时。

B 当该线程调用sleep()方法时。

C 当创建一个新线程时。

D 当一个优先级高的线程进入就绪状态时。

四、程序阅读与填空题

1. 阅读程序给出结果

下列程序段用来计算Fibonacci序列的第0,1,2,…各项

public class Fibonacci {

public static void main(String args[]) {

System.out.println("Fibonacci 第4项="+ fib(4)); }

static int fib(int n) {

if (n==0||n==1) {

return n;

}

else {

int sum=fib(n-1)+fib(n-2);

return sum;

}

}

}

输出结果为:

(2)3

2. 按注释提示完成文件复制的程序

//FileStream源代码如下:

import java.io.*;

class FileStream {

public static void main(String args[]) {

try{

File inFile=new File("file1.txt"); //指定源文件

File outFile=new File("file2.txt"); //指定目标文件

FileInputStream fis=(1)new FileInputStream(inFile); FileOutputStream fos=new FileOutputStream(outFile);

int c;

//逐字节从源文件中输入,再输出到fos流

while((c=fis.read())!=-1)

(2)fos.write(c) ;

fis.close();

fos.close();

}

catch(Exception e) {

System.out.println("FileStreamsTest: "+e);

}

}}

3. 阅读程序,给出结果

//B.java源代码如下:

class A{

int x=100;

}

class B extends A{

int x=200;

void prt(){

System.out.println("SubClass: "+x);

System.out.println("SuperClass: "+super.x);

}

public static void main(String args[]){

new B().prt();

}

}

结果:SubClass:200 SuperClass: 100

4. 阅读程序,给出结果:

// AbstractClassDemo.java源代码如下:

abstract class Shape { //定义抽象类Shape和抽象方法display

abstract void display();

}

class Circle extends Shape {

void display() { //实现抽象类的方法

System.out.println("Circle");

}

}

class Rectangle extends Shape {

void display() { //实现抽象类的方法 System.out.println("Rectangle"); }}

class Triangle extends Shape {

void display() { //实现抽象类的方法

System.out.println("Triangle");

}}

public class AbstractClassDemo{

public static void main(String args[]){

(new Circle()).display(); //定义无名对象来调用对应的display方法

(new Rectangle()).display();

(new Triangle()).display();

}}

结果:Circle Rectangle Triangle

五、判断题

F1. 下述代码是否正确

int b[5];

for(int i=0;i<5;i++)

b[i]=i;

F2. 下述代码是否正确

char b="A";

System.out.println("b = " + b);

T3.接口中的方法都是抽象方法。

F4.如果一个类实现了一个接口,则该类必须实现接口中的所有方法。

T5.Java中,https://www.360docs.net/doc/4916594456.html,ng.Object类是所有类的父类。

F6、public final abstract class FinalAndAbstract{ }

以上的类定义是正确的。

F7、以下类定义是正确的。

public class MyClass extends A, B{}

class A{}

class B{}

T8、关键字this表示的是当前对象,this只能用在方法中。

T9、在Java中,向上转型时不必使用强制类型转换。

如: class ParentClass{ }

class ChildClass extends ParentClass{ }

public class Test{

public static void main(String[] args){

ParentClass parent=new ParentClass();

ChildClass child=new ChildClass ();

parent=child;

} }

F10、在java中一个类不能继承一个类的同时实现3个接口。

F11、构造方法的返回值必须是void类型。

F12、以下定义的变量是正确的。float f=12.0;

T13、一个类的属性既可以是基本类型的变量,也可以是对象变量

T14.JRE 是java运行环境,JRE 是由JVM 和 java platform 核心类以及相关支撑文件组成。T15、Java中的字符使用的是 16 位的Unicode 编码。

T16、类是同种对象的集合和抽象。

T17、Java 仅支持类间的单重继承。

T18、接口是由常量和抽象方法组成的特殊类。

F19、构造函数的方法名可由编程人员任意命名。

F20、使用静态属性必须以类名做前缀。

F21、类的私有属性和私有方法可以被其子类访问。

F22、abstract 是抽象修饰符,可以用来修饰类及其属性和方法。

T23、Java 支持多线程机制。

F24、一个 Java 源程序中允许有多个公共类。

T25、Java 程序可以划分为两大类: Application 和 Applet

F26、for 语句中的循环体不能是空的。

F27、子类不能继承父类的构造函数。

F28、重载的方法可以通过它们的返回值类型的不同来区分。

T29、数组一定占用连续的内存空间。

F30. Java标识符允许以数字打头。

T31. 两个类在同一个包中定义,因此,其中的一个类就可以访问另一个类的私有成员变量。

F32. 接口的方法可以使用private进行修饰,接口中可以定义一般的成员变量。

F33. 在子类构造方法中使用super(…) 对父类构造方法进行调用时,super语句不必是子类构造方法的第一句。

T34. 一个适配器类实现并提供了一个事件监听器接口中所有的方法,而且这些方法都是空方法。

F35. Integer i=new Integer(256);

Integer j=new Integer(“256”);

则System.out.println(i==j);的结构应该是false.

F36. class A extends B 语句中表示B是A的子类。

T37. “覆盖”方法为子类提供了修改父类成员方法的能力。用来覆盖的子类方法应和被覆盖的方法保持同名、同返回值类型,以及相同的参数个数和参数类型。

T38.Java为程序提供了一种catch-Throw(捕获-抛出)异常处理方式。

六、编程题

1.定义一个类Student,具有以下属性和方法:

(1)三个private属性:姓名(name,String)、年龄(age,int)、性别(sex,String)

(2)8个public方法:1个带三个参数的构造方法、3个读取属性值的方法和3个设置属性值的方法、1个输出三个属性值的print方法

(3)main方法,创建一个实例student1,姓名为“张三”,年龄为30,性别为“男”,调用print方法输出student1的三个属性值。

public class Student {

private String name;

private int age;

private String sex;

public Student(String name, int age, String sex) {

super();

https://www.360docs.net/doc/4916594456.html, = name;

this.age = age;

this.sex = sex;

}

public String getName() {

return name;

}

public void setName(String name) {

https://www.360docs.net/doc/4916594456.html, = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public void print(){

System.out.println("姓名:"+https://www.360docs.net/doc/4916594456.html,+" 年龄:"+this.age+" 性别:"+this.sex);

}

public static void main(String[] args) {

Student student = new Student("张三",30,"男");

student.print();

}

}

定义Student的一个子类GradulateStudent(研究生),具有以下属性和方法:

(1)一个private属性:导师(teacher,String)

(2)4个public方法:1个带四个参数的构造方法、1个读取导师属性的方法和1个设置导师属性的方法、1个输出四个属性的print方法

(3)main方法,创建一个实例student2,姓名为“李四”,年龄为25,性别为“男”,导师为"王五",调用print方法输出student2的四个属性值。

2.编写类TxtFileDemo ,要求完成以下功能:

(1)使用学过的Writer、FileWriter 类,向c:\test.txt文件写入:"line 1\n"、"line 2\n"、"5678\n"、"true\n"

(2)利用Reader 、FileReader从文件c:\test.txt中读入数据到一个字符数组中,并将字符数组数据显示到屏幕上

注意:对可能出现的异常要用异常处理机制进行处理。

3.在各个应用系统中,读者应该可以看到用户登录程序的影子,下面就模拟一个简单的用户登录程序,为方便理解,使用初始化参数的方式输入用户名和密码。假定用户名为liuzhen,密码为123456。

注意:

①采用初始化参数的方式即:通过main(String args[])中的args数组带入参数。运行程序格式为:java LoginDemo1 用户名密码

②运行结果分如下几种情况为:

a.没有输入参数

输入的参数不正确,系统退出!

b.输入的用户名及密码错误

错误的用户名及密码

c.输入正确的用户名和密码

欢迎刘臻光临!

③分别采用面向过程的思想和面向对象的思想进行分析和程序设计

提示:采用面向过程的思想只需在main方法中按照步骤一步一步进行字符串比较,看是否符合。采用面向对象的思想需要考虑定义几个类,具体可参考如下:

class Check //主要功能是验证操作,只需要传入用户名和密码即可完成验证

{

public Boolean validate(……){……} /*执行具体的验证操作*/

}

class Operate{

private String info[];

public Operate(…){……} //构造方法

public Stirng login(){…….} //执行登录操作

public void isExit(){……} //退出系统(包括正常和非正常退出)

}

class LoginDemo //实例化对象进行测试

{

public static void main(String args[]){……}}

4.按照主题一中图书借阅系统的分析,要求对图书类和读者类进行封装。

要求:

①图书类中包括索引号、书名、作者、出版社、页数等信息。此外,还需要提供一种机制,能够获得并输出系统中已经存在的图书信息--class Book;

②读者类中包括学号、姓名、密码、学院、专业、年级等信息。提供一种机制用于获得并输出系统中已经存在的读者信息—class Users。

5.定义一个点类(Point)用来表示三维空间中的点(有三个坐标)。要求如下:

(1).可以生成具有特定坐标的点对象。

(2).提供可以设置三个坐标的方法。

(3).提供可以计算该“点”距原点距离的方法。

(4).编写程序验证上述三条。

6.采用面向对象的思想编写求解几何图形(包括三角形、矩形、圆形)的周长、面积的应用程序,要求尽量用到继承、接口、上转型对象和包等技术。

提示:采用面向对象的思想需要考虑如何将上述案例进行适当的整合,找出其中有共性的地方,具体可参考如下:

interface GetProperty //定义接口,将pi值、获取面积、获取周长、获取形状名字整合

{

……}

class Mpoint //定义点

{

……}

Abstract class Disp //定义屏幕输出需要的类

{……}

class Triangle implements GetProperty //定义三角形类

{……}

class Rectangle implements GetProperty //定义矩形类

{。。。。。。}

public class Drawing extends Disp //定义main()所在的类,并且要求根据相应的提示{……} //做出选择然后画出不同的图形。

7.有三类图书:教材类、文学类、科技类,它们的性质不同,借出期限不同,损坏赔偿价格不同。请设计出这三类图书的属性和方法。

提示:上述三种图书由于属性不同,计算公式不同,所以计算赔偿价格时采用的算法就不同,如果三种图书独立定义成各自没有关系的类的话,会使程序代码量增大。由于上述三个类都属于图书类,这时就可以通过使用抽象类,定义它们的变量和方法,然后分别在子类中进行实现。

Abstract class BookAll{

……}

class t_Book extends BookAll{

……}

……

《面向对象程序设计C 》期末试卷及标准答案

《面向对象程序设计C++》期末考试试卷(B) 一、单项选择题(每小题2分,共40分) 1、关于C++与C语言关系的描述中,()是错误的。 A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的 2、已知:int m=10; 下列表示引用的方法中,()是正确的。 A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m; 3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*'); 下面函数调用中,不合法的是()。 A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。 A.函数的返回值类型B.参数的类型C.函数名称D.参数个数 5、下列有关C++类的说法中,不正确的是()。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数或类的友元函数才能存取类中的私有成员 C.在类中,如果不做特别说明,所有成员的访问权限均为私有的 D.在类中,如果不做特别说明,所有成员的访问权限均为公用的 6、已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法,不正确的是()。 A.析构函数有且仅有一个 B.析构函数和构造函数一样可以有形参 C.析构函数的功能是在系统释放对象之前作一些内存清理工作 D.析构函数无任何函数类型

面向对象程序设计考前复习题及答案

简答题 1、传统的结构化程序设计的优点和缺点是什么? 优点: (1)这种程序设计方法力求算法描述准确。 (2)对每一子过程模块容易进行程序正确性证明。 缺点: (1)这种程序设计方法本质上是面向“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能直接反映人类求解问题的思路。 (2)程序代码可重用性差。程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。 (3)维护程序的一致性困难。该种方法将数据与对数据进行处理的程序代码分离。 2、什么是对象? 每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。对象的属性描述了对象的状态和特征,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。 3、什么是消息? 在面向对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。当一个对象需要另外一个对象提供服务时,它向对方发出一个服务请求,而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就称为消息。4、什么是多态性? 所谓多态性是指当程序中的其他部分发出同样的消息时,按照接收消息对象的不同能够自动执行类中相应的方法。其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大方便。 5、什么是面向对象的程序设计方法? 这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。 在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。 6、面向对象方法的特点是什么? (1)OOP以“对象”或“数据”为中心。由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响。 (2)引入了“类”(class)的概念。类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的全部性质,OOP中称这种机制为继承。 (3)OOP方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时降低了程序设计过程中出错的可能性,达到了事半功倍的效果。 7、面向对象的程序设计方法与结构化程序设计方法的比较 (1)传统的结构化程序设计方法以过程为中心构造应用程序,数据和处理数据的过程代码是分离的、相互独立的实体,设计出的程序可重用代码少,且当代码量增加时维护数据和代码的一致性困难。

什么是面向对象程序设计

1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

面向对象程序设计实验指导书讲解

面向对象程序设计实验指导书 实验一、C++开发环境应用入门(2学时)(选做) 1、实验目的 (1)了解C++开发工具的特点 (2)熟悉C++开发环境 (3)学习用C++编写标准的C++程序 2、实验任务 使用C++来建立一个非图形化的标准C++程序,编译、运行下例程序: #include void main(void) { cout<<”Hello!\n”; cout<<”Welcome to C++!\n”; } 3、实验步骤 (1)启动Visual C++或C++Builder开发环境 (2)创建一个项目 A)单击File菜单中的New选项,显示示新建对话框 B)选择Console Wizard(C++Builder) 或Win32 Console Application(VC++)。 C)选择项目所在路径及输入项目的名称 D)依次按‘下一步’直至完成为止。 (3)至此,C++Builder已经建立好工程相关的文件(请不要随意更改其自动生成的文件),在生成的main函数中写入必要的内容即可。 (4)对于VC,请继续下面的步骤: A)建立C++源程序文件 a)选选菜单命令Project|Add to Project|New,弹出New对话框 b)在New对话框的Files选项卡中选择C++ Source File,并填入文件名称,单击OK按钮,完成 新建C++源程序文件 B)编辑C++源程序文件 a)在文件编辑窗口中输入代码 b)完成后,选择菜单File|Save保存这个文件 C)建立并运行可执行程序 a)选择菜单命令Build,建立可执行程序 如果你正确输入了源程序,此时便成功地生成了可执行程序。 如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源 程序进行修改后,重新选择菜单命令Build建立可执行程序。 b)选择菜单命令Run,运行程序,观察屏幕显示内容。 D)关闭工作空间 选择菜单命令File|Colse WorkSpace关闭工作空间。

c面向对象程序设计试题和答案(经典题目)

一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”<

(A)指针(B)引用(C)枚举(D)结构 3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。 (A)share (B)public (C)private (D)protected 4、关于构造函数,下列说法不正确的是()。 (A)构造函数名字和类名相同 (B)构造函数在创建对象时自动执行 (C)构造函数无任何函数返回类型 (D)构造函数有且只有一个 5、派生类可以访问其基类的()。 (A)公有成员(B)保护成员 (C)私有派生(D)公有和保护成员 6、下列关于运算符重载的描述中,错误的是()。 (A)运算符重载不可以改变操作数的个数 (B)运算符重载不可以改变运算符的功能 (C)运算符重载不可以改变结合方向 (D)运算符重载不可以改变运算优先级 7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是() (A)面向过程(B)面向对象(C)安全性(D)复用性 8、对于类中定义的成员,其隐含访问权限为()。 A.public B.protected C.private D.static 9、下面有关重载函数的说法中正确的是() (A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表(D)重载函数名可以不同; 10、有如下的对类“CSample”的说明,其中()是错误的。 class CSample { A.int a=23; B.CSample(); public: C.CSample(int val); D.~ CSample(); 11、在int a=3,int *p=&a;中,*p的值是( ) A.变量a的地址值 B.无意义 C.变量p的地址值 D.3 12、每个类()构造函数。 (A)只能有一个(B)只可有公有的

(完整版)《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

《面向对象程序设计》实验指导书

《面向对象程序设计》课程实验指导书

实验一 Java开发环境的安装与配置 一、实验目的: 1. 掌握JDK、Eclipse的安装步骤。 2. 理解环境变量PATH, CLASSPATH的作用,以及Eclipse的配置。 3. 熟悉Eclipse的编辑、编译与调试环境,编写简单的Application程序 编译执行并完成调试。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序 (能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3. 调试程序、编译,运行后得到正确的结果 四、实验步骤: 1.从https://www.360docs.net/doc/4916594456.html,/technetwork/java/index.html上下载最新版本的JDK,并安装。 2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Eclipse环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System. out.println()方法,使程序输出一条问候信息; (2) 编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序)

实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。 (闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.金字塔:Pyramid.java 在屏幕上显示一个由星型符号“*”组成的金字塔图案,示例如下: * *** ***** ******* 要求:金字塔高度h,可以由用户设置。 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能 的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)允许用户设置金字塔高度。 4. 编译运行程序,观察输出结果是否正确。

面向对象程序设计第12章在线测试

《面向对象程序设计》第12章在线测试剩余时间:59:56 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、面向对象的程序设计语言必须具备的关键要素是( ) A、抽象和封装 B、抽象和多态性 C、抽象、封装、继承和多态性 D、抽象、封装和继承性 2、封装性应具有的条件是() A、有一个清晰的边界 B、有确定的接口 C、受保护的内部实现 D、以上所有 3、OOD的作用是() A、提取需求 B、逻辑建模 C、求解域建模 D、分析用例 4、按钮与电梯按钮的关系是() A、部分与整体 B、一般与特殊 C、实例连接 D、消息连接 5、面向对象模型不包括() A、静态模型 B、对象模型 C、功能模型 D、动态模型 第二题、多项选择题(每题2分,5道题共10分) 1、部分与整体的关系有()方式 A、组合 B、联合 C、聚合 D、整合

2、对象之间存在的关系包括() A、部分与整体 B、一般与特殊 C、实例连接 D、消息连接 3、关于多态的说法正确的是() A、不同类型的对象接收相同的消息产生不同的行为 B、多态的成员函数需要定义为虚函数 C、在C++中通过基类指针调用虚函数实现多态 D、多态是指对象的多种表现形式 4、关于软件生命周期的说法正确的是() A、开发程序就是直接编码 B、在程序设计之前需要先进行软件设计 C、软件投入使用后软件生命周期结束 D、软件维护也是软件生命周期的一个阶段 5、下面关于面向对象的特征说法正确的是() A、每一个对象都具有唯一的标识 B、任何类的划分都是客观的,程序员必须遵守其规定 C、继承性是子类自动共享父类数据结构和方法的机制 D、多态是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的 结果 第三题、判断题(每题1分,5道题共5分) 1、面向对象开发技术分三个阶段:面向对象分析,面向对象设计和面向对象实现。 正确错误 2、面向对象的要素包括抽象、封装。

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

C++面向对象程序设计实验报告

C++面向对象程序设计实验报告 学院:信息科学与技术学院 班级:卓越电子1201 姓名:刘强 学号:120910115 实验二 C++面向过程程序设计 实验目的 掌握函数声明、定义和使用的方法 掌握函数递归调用的方法 实验内容 1、编写一个函数,求数列运算中从n个不同的数中取r个数的所有选择的个数,要求如下:主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序结束; 能检查输入数据的合法性,要求n>=1并且n>=r; 能得到正确结果。 输入:5 3输出:10 输入:10 20;输出:Input Invalid !; 输入:-1 4;输出:Input Invalid!; 步骤: 利用一个函数fn(int n)计算n!, 利用另一个函数Cnr(int n, int r)计算Cnr,在该函数中调用fn(), 程序代码: #include int fn(int n) { int s=1; for(int i=1;i<=n;i++) { s=s*i; } cout<<"n!="<

int Cnr(int n,int r) { cout<<"Please input two numbers:"<>n>>r; if(n==0&&r==0) { cout<<"Programme shutdown."<=1&&n>=r) { int a; int b; int c; int d; a=fn(n); b=fn(r); c=fn(n-r); d=a/(b*c); cout<

《C面向对象程序设计》谭浩强版复习总结

第一章C++ 基础 endl 换行并刷新输出流 setw(n) 设置字段位数为n hex,oct,dec 十六进制,八进制,十进制表示 setfill 定义填充字符 setprecision 定义浮点数的精度 left,right 左对齐,右对齐 showpoint 强制显示小数点以及全部尾部0 C++通过给常量命名的方式定义常量: const<数据类型名><常量名>=<表达式> 用const定义的标识符常量时,一定要对其初始化。在说明时进行初始化是对这种常量置值的唯一方法,不能用赋值运算符对这种常量进行赋值。 函数声明的一般形式为 函数类型函数名(参数表) 函数模板的定义 template 函数定义 例子:template T max(T a,T b){ return(a>b)? a:b; } 定义函数模板时可以使用多个类型参数,每个类型参数前面只需加上关键字typename或class,用逗号分隔: template

例子:template T1 max(T1 a,T2 b){ return (a>b) ? a : (T1)b; } 有默认参数的函数:实参与形参的结合是从左至右进行的,因此指定默认值的参数必须放在形参列表中的最右端 引用 定义对变量起另外一个名字(别名alias),这个名字称为该变量的引用。 <类型> &<引用变量名> = <原变量名>; 其中原变量名必须是一个已定义过的变量。如: int max ; int &refmax=max; refmax并没有重新在内存中开辟单元,只是引用max的单元。max与refmax在内存中占用同一地址,即同一地址两个名字。 对引用类型的变量,说明以下几点: 1、引用在定义的时候要初始化 2、对引用的操作就是对被引用的变量的操作。 3、引用类型变量的初始化值不能是一个常数。 4、一旦引用被声明,它就不能再指向其它的变量。 5、对引用的初始化,可以用一个变量名,也可以用另一个引用。 6、引用同变量一样有地址,可以对其地址进行操作,即将其地址赋给一指针。 当&m的前面有类型符时(如int &m),它必然是对引用的声明;如果前面无类型符(如cout<<&m),则是取变量的地址。 7、对常量(用const声明)的引用使用如下方式: int i=5; const int &a=i;

面向对象程序设计课后答案(完整版)

第二章2-4 #include using namespace std; Add(int a,int b); int main() { int x,y,sum; cout<<"please input x and y:"; cin>>x>>y; sum = add(x,y); cout < using namespace std; int main() {

int *p,*init; int countp=0; int countn=0; p = new int[20]; init = p; for(int i=0;i<20;i++) { cin>>*p; p++; } p = p-20; for( i=0;i<20;i++) { if(*p>0) countp++; if(*p<0) countn++; cout<<*p<<" "; p++; } cout<<"正数有:"< //#include using namespace std; void checkagescore(string name,int age) { if (name == "exit") throw name; if(age<0||age>50) throw age;

面向对象程序设计实验报告完整版

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 综合实验报告 面向对象程序设计 专业名称: 物联网工程 ___班级: _____ 级2班__ ___________姓名: 你哥哥 学号: 02051928 信息科学与工程学院 二零一三年七月

第一题: (1) 1.1题目概述 (1) 1.2设计思路 (2) 1.3设计说明与调试分析 (2) 1.4编码实现 (2) 1.5程序运行结果 (5) 1.6设计心得 (5) 第二题: (6) 2.1题目概述 (6) 2.2设计思路 (7) 2.3设计说明与调试分析 (7) 2.4编码实现 (7) 2.5程序运行结果 (11) 2.6设计心得 (11)

第一题: 1.1题目概述 用抽象类设计计算二维平面图形图形面积的程序, 在基类TDshape中设计纯虚函数area()和printName(), area()用于计算几何图形的面积, printName()用于打印输出几何图形的类名, 如Triangle类的对象就打印输出”Triangle”。每个具体形状的类则从抽象类TDshape派生, 各自需要定义其它独有的数据成员和成员函数, 而且定义area()和printName()的具体实现代码, 如图所示。 要求编写以TDshape为接口的函数, 借以访问具体类如

Triangle和Rectangle类的成员函数area(), printName ()。1.2设计思路 由简到繁, 逐步实现。 1.3设计说明与调试分析 编写基类TDshape->编写虚函数->编写继承类Triangle ->实例化TDshape和Triangle ->调用基类虚函数实现调用继承类相应函数->同样的方式处理继承类Rectangle. 1.4编码实现 #include using namespace std; class TDshape{ public: virtual void area()=0; virtual void printName()=0; }; class Triangle:public TDshape{ private: double width,height;

面向对象程序设计复习题及参考答案

网络教育课程考试复习题及参考答案 面向对象程序设计 一、填空题: 1.创建类的对象时,使用运算符___________给对象分配内存空间。 2.Java通过来区分重载函数。 3.在子类中使用保留字_ _可调用被子类覆盖的父类中的方法。 4.使用保留字可以从一个构造方法中调用同一个类的另一个构造方法。 5.抽象类用修饰符定义。 6.类的数据成员的访问权限修饰符一般为 7.访问权限修饰符按照访问权限的大小从大到小分别为、、 、。 8.定义类的构造方法不能有,其名称与名相同。 9.抽象方法是的特征是。 10.Java中的所有异常都是从继承来的。 11.对象引用中存储的内容是。 12.下列程序段执行后, String str1 = new String("Java"); String str2 = new String("Java"); if (str1.equals(str2)) { System.out.println("They are equal"); } else { System.out.println("They are not equal"); } 输出结果为:。 13.下面循环执行后的sun值为 int count =0, sum = 0; while ( count <10 ) { sum += count; count ++; } 14.Java语言中关键字_ _表示双精度类型。 15.保留字_ _用于导入包中的类到程序中,供程序中使用。 16.Java语言中继承是用保留字表示。 17.面向对象程序设计中,类是指。 18.对象包含和。 19.若有类定义: class B extends A{ … } 则类B是类A的_ 。 20.Java语言中, 通常把可能发生异常的方法调用语句放到try块中,并用紧跟其后的_ 块来捕 获和处理异常。 21.多态是指。 22.声明常量时使用修饰符。 23.Java中异常抛出使用保留字。 24.一个类成员或者方法前面加上了修饰符,那说明该数据成员和方法可以直接通过类名 来访问和调用。

面向对象程序设计笔记

undeclared identifier “未声明的标识符” (1) 十进制整数:在一个整型常量后面加一个字母 l 或 L,则认为是 long int 型常量? (2) 八进制整数?在常数的开头加一个数字 0,就表示这是以八进制数形 式表示的常数? (3)十六进制整数?在常数的开头加一个数字0和一个英文字母X(或x), 就表示这是以十六进制数形式表示的常数? 2. 浮点数的表示方法 如果在实数的数字之后加字母 F 或f,表示此数为单精度浮点数,如1234F,-43f,占 4 个字节?如果加字母 L 或 l,表示此数为长双精度数(long double), 在Visual C++ 6.0 中占 8 个字节. (2) 指数形式(即浮点形式):用字母 e 表示其后的数是以 10 为底的幂,如 e12 表示 1012? 1.普通的字符常量:用单撇号括起来的一个字符就是字符型常量如′a′,′ #′,′%′,′D′都是合法的字符常量,在内存中占一个字节?“cout<<′\n′; ”将输出一个换行,其作用与“cout<

《面向对象程序设计C 》期末考试试卷

《面向对象程序设计C++》期末考试试卷 一、选择题(每小题3分,共48分。) 01、下列关于C++函数的叙述中,正确的是( C )。 A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值 C)函数在被调用之前必须先声明 D)函数不能自己调用自己 02、下列关于类和对象的叙述中,错误的是( A )。 A)一个类只能有一个对象 B)对象是类的具体实例 C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系 03、在C++中,用于实现运行时多态性的是( D )。 A)内联函数 B)重载函数 C)模板函数D)虚函数 04、下列关于运算符重载的叙述中,正确的是( B )。 A)通过运算符重载,可以定义新的运算符 B)有的运算符只能作为成员函数重载 C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参 05、对于语句 cout<

面向对象程序设计期末复习分析

一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1 分,共20 分) 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与(C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 8. 下列不属于类的成员函数的是( C )。 A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 9. 继承机制的作用是( C )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 14. (D )是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. (C ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作 图和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 16.(D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对 象之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 17.(D )就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示 系统中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 18. 在用UML进行数据库的分析与设计过程中,( B ) 就是进行数据库的需求分析,使用用 例图、类图、顺序图、活动图等建立业务模型。 A. 逻辑数据模型设计 B 业务Use Case模型设计 C. 物理数据模型设计 D. 物理实现设计 19. 使用UML进行关系数据库的(B )时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 20. UML的动态建模表示包含(C )种图。 A. 9 B. 5 C. 4 D. 2 二、填空题( 每空1 分,共20 分) 1. 面向对象开发方法一改过去传统的以_功能分析,面向过程_为基础的_对象_的结 构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为

面向对象程序设计实验

实验一C++基础1.1 实验目的 1.了解并熟悉开发环境,学会调试程序; 2.熟悉C++中简单的标准输入输出函数的使用方法; 3.理解const修饰符的作用并学会应用; 4.理解内联函数的优缺点并学会其使用场合; 5.理解并学会函数重载; 6.理解并熟练掌握使用new和delete来分配内存; 7.理解并熟练掌握引用的使用方法。 1.2 实验内容 1.2.1 程序阅读 1.理解下面的程序并运行,然后回答问题。 #include int max_def(int x, int y) { return (x>y?x:y); } int max_def(int x, int y, int z) { int temp = 0; return (temp=(x>y?x:y))>z?temp:z; } double max_def(double x, double y) { return (x>y?x:y); } int main()

{ int x1 = 0; int x2 = 0; double d1 = 0.0; double d2 = 0.0; x1 = max_def(5,6); x2 = max_def(2,3,4); d1 = max_def(2.1,5.6); d2 = max_def(12.3,3.4,7.8);-----------------------------------------------------①cout<<"x1="<

相关主题
相关文档
最新文档