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

上传人:b****3 文档编号:26748932 上传时间:2023-06-22 格式:DOCX 页数:38 大小:681.64KB
下载 相关 举报
《面向对象程序设计》实验指导书.docx_第1页
第1页 / 共38页
《面向对象程序设计》实验指导书.docx_第2页
第2页 / 共38页
《面向对象程序设计》实验指导书.docx_第3页
第3页 / 共38页
《面向对象程序设计》实验指导书.docx_第4页
第4页 / 共38页
《面向对象程序设计》实验指导书.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

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

《《面向对象程序设计》实验指导书.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》实验指导书.docx(38页珍藏版)》请在冰豆网上搜索。

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

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

实验一Java基础实验

实验二Java面向对象特性试验--Java中的类、对象和方法

实验三类的继承、多态、接口、访问控制符与修饰符

实验四Java资源及其利用

实验五Java语言的异常处理

实验六输入输出流

实验七图形用户界面设计

实验八JavaApplet及多线程试验

附录1实验报告格式

 

实验一Java基础实验

一、实验目的与要求

1.学习编写简单的Java程序。

2.学习掌握Java基本数据类型及其基本运算。

3.学习掌握Java的基本流程控制语句。

二、相关知识

1.了解JDK的工作环境,以及如何使用JDK进行编程。

2.熟悉集成软件eclipse3.5及其使用。

二、实验内容

1.编写Hello.java程序并运行。

2.用Java语言编写一个应用程序在屏幕上输出1000之内的素数。

3.一个数如果恰好等于它的因子之和,这个数就称为“完数”,比如28=1+2+4+7+14。

编写一个应用程序在屏幕上输出1000之内的完数。

4.求满足1!

+2!

+3!

+…+n!

≤9999的最大整数n。

5.一个三位的整数如果它的各位数字的立方之和等于这个三位数,就称此数为水仙花数,比如

,编写一个应用程序在屏幕上输出所有水仙花数。

6.下面程序的输出结果是什么?

实验二Java面向对象特性试验-Java中的类、对象和方法

一、实验目的与要求

1.掌握类的定义和使用。

2.掌握对象的声明、创建和使用。

3.掌握构造方法的定义和使用。

4.掌握类方法(静态方法)和非类方法(非静态方法)的区别和使用。

5.掌握成员变量和局部变量的区别和使用。

二、实验内容

1.编写一个Java程序,定义一个表示学生的类,类名Student,

其成员变量有:

学号、班级姓名、性别、年龄;

成员方法:

(1)获得班号

(2)获得姓名(3)获得年龄(4)修改年龄;

创建一个Student的对象,修改该对象的年龄,并输出该对象的年龄。

在Student.Java文件

2.为Student类定义构造方法,用于初始化所有成员变量,增加一个方法toString(),它的返回值是String,其功能是把一个Student类的对象的成员变量信息组合成一个字符串并输出。

3.简述构造函数的作用和特点。

下面是某同学为Student类编写的一个构造函数,请指出那些地方有错误:

voidStudent(intsno,Stringsname){

studentNo=sno;

studentName=sname;

returnsno;

}

4.编写一个日期类Date,要求:

(1)日期类Date的成员变量有:

year,month,day都是int型。

(2)日期类的方法有:

构造方法Date(),日期的默认值为2008年1月1日;

构造方法Date(inty,intm,intd),形参y,m,d分别为某个日期的年月日的初始值;

成员方法intgetYear():

获取日期的年数作为方法的返回值;

成员方法intgetMonth():

获取日期的月份作为方法的返回值;

成员方法intgetYear():

获取日期的日作为方法的返回值;

成员方法voidshowDate():

已“****年**月**日”的形式显示一个日期。

5.下面四个程序分别有什么错误?

publicclassShowErrors{

publicstaticvoidmain(Stringarg[]){

ShowErrorst=newShowErrors();

t.x();

}

}

publicclassShowErrors{

publicstaticvoidmain(Stringarg[]){

ShowErrorst=newShowErrors(5);

}

}

(1)

(2)

publicclassShowErrors{

publicstaticvoidmain(Stringarg[]){

Cc=newC(5.0);

system.out.println(c.value);

}

}

classC{

intvalue=2;

publicclassShowErrors{

publicvoidmethod1(){

Circlec;

System.out.println(“Whatisradius”+c.getRadius());

c=newCircle;

}

}

(3)

(4)

6.下列代码有什么错误?

7.下列程序的输出是什么?

8.假设Foo类如下图

(1)中定义,f是Foo的一个对象。

(2)中的哪些语句是正确的?

System.out.println(f.i);

System.out.println(f.s);

f.imethod();

f.smethod();

System.out.println(Foo.i);

System.out.println(Foo.s);

Foo.imethod();

Foo.smethod();

publicclassFoo{

inti;

staticStrings;

voidimethod(){

}

staticvoidsmethod(){}

}

(2)

(1)

9.如果合适的话,在“?

”处加入static关键字。

10.是否能在静态方法中调用成员方法或引用成员变量?

是否能在成员方法中调用静态方法或引用静态变量?

下面代码的错误是什么?

11.描述传递基本类型参数和传递引用类型参数的区别。

写出下面程序的输出:

12.写出下列程序的输出:

13.写出下列四个程序各自的输出:

14.下列程序的输出是什么?

15.描述关键字this的作用,下列代码有什么错误?

publicclassC{

intp;

publicvoidsetP(intp){

p=p;

16.编写名为Rectangle的类表示矩形,这个类包括:

·一个double类型的数据域width和height表示矩形的宽和高,它们的默认值都为1;

·String类型的数据域color表示矩形的颜色,进一步假设所有矩形的颜色都是相同的,默认颜色为白色;

·无参构造方法创建默认矩形;

·一个构造方法创建指定width和height的矩形;

·所有三个数据域的访问器方法和修改器方法;

·getArea()方法返回该矩形的面积;

·getPerimeter()方法返回它的周长;

编写一个测试程序,创建两个Rectangle对象,设置第一个对象的宽为4,高为40,第二个对象的宽为3.5,高为35.9,所有Rectangle对象的颜色为红色。

显示两个对象的属性并求它们的面积和周长。

17.设计一个名为Fan的类模拟风扇。

这个类包括:

·三个常量SLOW,MEDIUM好FAST,其值分别为1,2,3,表示风扇的速度;

·int类型的数据域speed表示风扇的速度(默认值为SLOW);

·boolean型的数据域on表示风扇是否打开(默认值为false);

·double型的数据域radlus表示风扇的半径(默认值为5);

·string型的数据域color表示风扇的颜色(默认值为blue);

·无参构造方法创建默认风扇;

·全部四个数据域的访问器和修改器;

·toString()方法返回描述风扇的字符串。

如果风扇打开,该方法用一个组合的字符串返回风扇的速度、颜色和半径;否则,用一个组合的字符串和“fanisoff”一起返回风扇的颜色和半径。

编写一个测试程序,创建两个Fan对象,将第一个对象设置为最大速度,半径为10,颜色为yellow,打开状态;第二个对象为中等速度,半径为5,颜色为blue,关闭状态。

通过调用toString方法显示该两对象。

18.设计一个名为Account的类模拟账户,它包括:

·int型数据域id表示账号(默认值为0);

·double型数据域balance表示账户余额(默认值为0);

·double型数据域annualInterestRate存储当前年利率(默认值为0);

·Date型数据域dateCreated存储账户开户的日期;

·无参构造方法创建一个默认的账户;

·id,balance和annualInterstRate的访问器和修改器;

·dateCreated的访问器;

·getMonthlyInterestRate()方法返回月利率;

·withDraw方法从账户提取特定数额的款;

·deposit方法向账户存特定数额的款;

编写一个测试程序,创建一个账号为1122、余额为20000、年利率为4.5%的Account对象。

使用withDraw方法提款2500元,使用deposit方法存款3000元,并打印余额和月利率,以及该账户的开户日期。

19.设计名为Stock的类模拟股票,该类包括:

·string型数据域symbol表示股票代号;

·string型数据域name表示股票的名称;

·double型数据域preViousclosingPrice存储前一天的股票价格;

·double型数据域currentPrice存储当前时间的股票价格;

·一个构造方法根据指定的股票代号和名称创建股票;

·所有数据域的访问器方法;

·previousClosingPrice和currentPrice的修改器方法;

·changePercent()方法返回从previousClosingPrice变为currentPrice的百分比;

编写测试程序创建Stock对象,其股票代号为SUNW、名称为SunMicrosystemInc.、上期收盘价为100。

设置新的当前价为90,显示价格变化百分比。

20.编写程序,输入年份,打印出该年的年历(12个月的),如下图所示。

提示:

使用Calendar类得到一个Calendar类对象,先求出输入年份的1月1日是星期几,

然后通过循环打印出每个月的日历,注意大小月和闰月问题。

21.设计名为Time的类。

该类包含:

·数据域hour、minute和second表示时间;

·无参构造方法为当前时间创建Time对象;(数据域的值表示当前的时间)

·一个构造方法在指定以毫秒表示的、从1970年1月1日午夜开始已逝去的时间时,创建一个Time对象;(数据域的值表示该时间)

·三个get方法分别获得数据域hour,minute和second;

编写测试程序创建两个Time对象(使用newTime()和newTime(555550000)),并显示它们的小时、分钟和秒。

提示:

无参构造方法可以使用当前时间,当前时间可以通过System.currentTimeMillis()获得。

另外一个构造方法为指定逝去的时间设置小时、分钟和秒的值。

例如,如果逝去的时间555550000毫秒,那么小时为10,分钟为19,秒为10。

22.设计名为MyInteger的类,它包括:

·int型数据域value存储该对象表示的int值;

·一个构造方法,当指定int值时,创建MyInteger对象;

·一个get方法返回int的值;

·isEven(),isOdd()和isPrime()方法,如果这个值分别为偶、奇或素数,返回true;

·静态方法isEven(int),isOdd(int)和isPrime(int),如果指定的值分别为偶、奇或素数,

返回true;

·静态方法isEven(MyInteger),isOdd(MyInteger)和isPrime(MyInteger),如果指定的值

分别为偶、奇或素数,返回true。

·equals(int)和equals(MyInteger)方法,如果该对象的值与指定的值相等,返回true;

·静态方法parseInt(int)将字符串转变成int值。

编写用户程序测试该类中的所有方法。

23.设计名为MyPoint的类表示一个具有x坐标和y坐标的点,该类包括:

·两个数据域x和y表示坐标;

·无参构造方法创建点(0,0);

·一个构造方法根据指定坐标创建一个点;

·两个get方法分别得到数据域x和y;

·distance方法返回MyPoint类型的两个点之间的距离;

·distance方法返回从这一点到另一个指定x和y坐标的点之间的距离;

编写测试程序创建两个点(0,0)和(10,30.5),并显示它们之间的距离。

24.请写出下列程序的输出结果

//程序名TestAB.java

25.请写出下列程序的输出结果

///程序名TestAB2.java

26.设计名为Course的类,它包括:

·3个成员变量:

课程编号(cNnumber)、课程名(Cname)、学分数(Cuit)

·1个构造方法,用于初始化课程编号、课程名和学分

·1个方法:

printCourseInfo(),用于输出课程相关的信息

编写课程类的测试程序

27.下面程序定义了一个Student类及其测试程序,请给出程序运行的结果

//TestStudent.java

 

实验三类的继承、多态、接口、访问控制符与修饰符

一、实验目的与要求

1.掌握继承和多态这两个面向对象程序的基本原则。

2.理解interface关键字和接口的基本概念。

3.理解abstract关键字,掌握抽象类和程序方法的设计技巧。

4.理解final关键字,掌握最终类和抽象类的区别和使用。

5.理解static关键字,理解类的层次和对象层次的区别,掌握类变量和类方法的使用。

6.理解包的概念和使用。

创建一个名为charpter3_2的包,将本实验的程序放入该包中。

二、实验内容

1.设计一个Person类,其成员变量有:

姓名(name)、性别(gender)、年龄(age);再设计一个Student类,它是类Person的子类,其成员变量有:

学号(id)、班名(cname)、成绩(score),类Student中要有一个方法display(),用来显示一个学生的信息。

编写一个测试程序,创建一个Student类的对象,要求name和id是自己的姓名和学号,输出学生的各种信息,学生的基本信息在类Student的带参数的构造方法中设定。

2.写出下列程序运行结果

3.下列程序在编译时会出现什么问题?

4.下列说法对还是错?

(1)子类是父类的一个子集。

(2)当从子类调用构造方法时,它的父类的无参数构造方法也常常被调用。

(3)可以在子类覆盖定义在父类中额私有方法。

(4)可以在子类覆盖定义在父类中的静态方法。

5.指出下列类中的问题。

(提示,至少有两个问题)

6.写出下列程序运行的结果:

7.在下列代码中,类A和类B在不同的包中。

如果问号的位置用空白代替,类B能正常编译吗?

如果问号的位置用private代替,类B能正常编译吗?

如果问号的位置用protected代替,类B能正常编译吗?

8.写出执行Test.java结果。

9.写出执行Test1.java、Test2.java结果。

(1)

(2)

10.写出程序HidingDemo.java运行结果:

11.判断下列说法的对错:

·终极类可以有实例。

·终极类可以扩展。

·终极方法可以被覆盖。

·总可以成功地将子类的实例转换为父类。

·总可以成功地将父类的实例转换为子类。

12.(Person、Student、Employee、Faculty和Staff类)设计名为Person的类和它的两个子类Student和Employee。

Employee有子类Faculty、Staff。

人有姓名、地址、电话号码和电子邮件地址。

学生有班级状态(一年级、二年级、三年级或四年级),将这些状态定义为常量。

职员有办公室、工资和受聘日期。

定义名为MyDate的类,包含数据域year(年)、month(月)、day(日)。

职员有办公时间和级别,职员有职务称号。

覆盖每个类中的toString方法显示相应的类名和人名。

编写测试程序,创建Person,Student,Employee,Faculty和Staff,并调用它们的toString()方法。

13.定义一个类A,该类有一个方法f,方法f可以输出英文字母,再定义一个类B是A的子类,子类B不能重写父类A的方法f,子类有一个方法g,可以输出中文字符串。

编写测试程序,创建B的对象,输出英文字母和中文字符串。

14.定义一个类SA,该类有一个方法f():

publicintf(int1,intb),该方法返回a和b的最大值。

再定义该类的子类SB,要求子类重写父类的方法f,重写的方法将返回a和b的最小公倍数。

要求在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将乘积(a*b)/m返回。

要求在测试程序中分别使用父类和子类创建对象,并分别调用方法f计算两个正整数的最大公约数和最小公倍数。

15.定义一个坐标类Pointer,成员变量包括x和y;成员方法有:

(1)构造方法

(2)setX、setY、getX、getY、display方法

(3)toString()、equals()

(4)类方法distance用来计算亮点之间的距离

编写测试程序,创建Pointer的两个对象并计算两个点坐标的中点。

16.编写程序.定义类Vehlcles.属性包括size、color、seats,还有一个构造方法和一个显示信息的方法。

然后从此类中派生Car类,其中包括构造方法和显示信息的方法,并编写程序进行测试。

17.编写个矩形类MyRectangle,其中包括方法getHeigth(获得矩形的长度)、getWidth方法(获得矩形的宽度)、setHeigth方法(设置矩形的长度)、setWidth方法(设置矩形的宽度)、getArea方法(求矩形的面积)和showlnfo方法(显示矩形的格式),从矩形类派生出一个子类Mysquare代表正方形,并对gctArea()方法和showinfo()方法进行重写。

并编写程序进行测试。

18.主板上的PCI插槽就是显示中的接口,可以把声卡、显卡、网卡都插在PCI插槽上,而不用担心那个插槽是专门插哪个的。

编写程序实现这个原理。

19.定义一个抽象类Area、两个Area的子类RectArea和RoundArea,以及一个实现类ImpleArea。

要求如下

(1)抽象类Area类中只包含一个抽象方法doublearea()。

(2)子类RoundArea类通过覆盖父类中的抽象方法area()来求圆的面积,另一个子类RectArea类通过覆盖父类中的抽象方法area()求长方形的面积。

(3)圆的半径和长方形的边分别定义为子类RoundArea类和RectArea类的域,都为double娄型。

(4)ImpleArea类中创建对象,接收键盘输入,输入内容分别为圆的半径和长方形的边,并求出圆和长方形的面积,在屏幕上显示。

20.编写一个Animal类,包含:

(1)属性:

privateStringtype。

(2)构造方法;用于初始化私有属性type。

(3)方法:

publicstringtoString(),用于返回动物类型的信息publicvoidsound(),用于输出动物的叫声信息。

21.编写一个Flyable接口,包含:

方法:

doubleflySpeed(),用于返回最大的飞行速度。

22.编写Giede(老鹰)类和Pigeon(鸽子)类,分别继承题16中的Animal类并实现20题中的F1yable接口。

编写测试程序,显示输出老鹰和鸽子的叫声信息和最大飞行速度。

23.编码实现一个打印机监视器,其中包括两个布尔型域“墨盒用尽”、“最后一次后打印过10万张纸”和一个方法“需要维修”。

该方法在两个布尔型域中有一个为返回真。

24.编码实现温度类,其中包括4个方法,其中getFahrenheit()和getCelsius()返回华氏和摄氏温度值,setFahrenhei()和setCelsius()分别设置华氏和摄氏温度值。

25.编码实现地址簿类。

每个对象中包括“姓名”、“地址”、“电话”三个域,并为该类定义相应的get,set方法。

 

实验四Java资源及其使用

一、实验目的与要求

1.理解Java标准库的结构。

3.了解Java常用的包。

4.掌握Object类的常用方法。

5.掌握System类常用方法

6.掌握Java的类库的一些基本类及使用,如System、Math、String和BufferString等。

7.理解Java包装类的概念即使用。

二、实验内容

1.设x,y是整型变量,d是双精度型变量,试书写表达式完成下面的操作:

(1)求x的y次方。

(2)求x和y的最小值。

(3)求d取整后的结果。

(4)求d四舍五入后的结果。

(5)求atan(d)的数值。

2.写出下面程序运行结果,并解释之。

3.Math的random方法用来实现什么功能?

语句(int)(Math.random()*6)+1的作用是什么?

(1)编程生成100个1~6之间的随机数,统计1~6每个数出现的概率;

(2)修改程序生成1000个随机数并统计概率;比较不同的结果并给出结论。

4.编程求一个整数数组的最大值、最小值、平均值和数组所有元素的和。

5.编写程序,从键盘上输入一个字符串和一个指定字符,把字符串中所有与指定的字符相同的字符删除后输出。

6.编写程序,从键盘上输入一个字符串和一个指定字符,统计字符串中出现指定字符次数并输出。

7.编写程序,将字符串“LetusstudyJava”转化为大写、转化成小写、把字符串中的空格用符号“#”替换,并分别输出。

 

实验五Java语言的异常处理

一、实验目的与要求

1.掌握Java的异常处理机制。

2.掌握try、catch、throws和finally这5个关键字的用法。

3.掌握成员的几个异常类。

4.掌握自定义异常的使用。

二、实验内容

1.编写程序,从键盘上输入两个数。

将第一个数除以第二个数并显示结果;处理所有可能的异常。

2.写出下面程序运行的结果:

3.写出下列程序的输出结果。

 

4.有下列程序:

若用下面方式执行该程序,则baz的值为()。

javaTestRedGreenBlue

(A)“”(B)null(C)"Red”(D)”BIue”(E)”Green”(F)代码不能编译(G)程序抛出异常

5.有下列程序:

该程序的输出结果为()。

(A)没有任何输出

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1