面向象程序设计方案课程实验.docx
- 文档编号:7340168
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:15
- 大小:22.38KB
面向象程序设计方案课程实验.docx
《面向象程序设计方案课程实验.docx》由会员分享,可在线阅读,更多相关《面向象程序设计方案课程实验.docx(15页珍藏版)》请在冰豆网上搜索。
面向象程序设计方案课程实验
附件2:
《面向对象程序设计》课程实验
实验大纲
1.基本情况
【适用范围】计算机科学与技术、信息管理与信息系统专业
【实验学时】32
【考核方式】
课程实验着重考查学生对每个实验的准备和完成情况,其成绩纳入课程的平时成绩。
实验成绩占课程平时成绩的70%;
每个实验的评分包括:
准备情况,实际操作,实验报告,实验结果(程序>。
2.实验目的
《面向对象程序设计》是一门应用性、实践性很强的技能课,不仅要求学生熟知程序设计语言的语法和特性,还要求其能够将相关知识应用于具体的程序开发中;不仅要求学生熟练掌握面向对象的编程风格、编程技巧和技能,而且需要其建立一种面向对象的分析问题、抽象问题和解决问题的基本思想和方法。
要实现上述教案目标,离不开大量的上机实验练习。
课程实验的总体目标是:
(1>加深学生对类和对象概念的理解、帮助学生建立面向对象的思维方式,在程序设计中要贯彻和体现面向对象的基本思想。
(2>通过上机实践,提高学生对计算机软件开发环境和运行环境的了解和使用能力。
(3>加深学生对课堂讲授内容的理解和掌握,从Java语言的语法及特性到基本的编程方法和技能,打好面向对象程序设计、软件开发的良好基础。
(4>在对Java程序的调试过程中,提高学生分析程序中出现的错误和排除这些错误的能力。
(5>通过上机实验,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规律与技巧。
3.实验要求
课程实验与《面向对象程序设计》理论课相互配套,由若干个独立的实验工程组成。
通过实验训练,要求学生能运用所学理论知识进行基本的面向对象程序设计,培养其严谨、规范的编程习惯,掌握基本的操作技能和编程思想。
同时要注意培养学生实事求是的科学态度,为学习后续课程,参加实际工作和开展科学研究打下良好的基础。
课程实验的基本要求是:
(1>任课教师需向学生讲清课程实验的性质,任务,要求,实验工程安排和进度,考核内容和方式,实验守则及实验室安全制度等。
(2>本课程若干个独立的实验工程组成,每个实验工程包括课前准备,实验操作,实验报告等环节。
(3>学生在实验前必须进行准备,提出解决问题的算法、完成初步的程序设计。
根据实验工程的具体情况,教师应对学生的准备情况进行必要的检查。
(4>学生应在规定时间内独立完成每个实验的任务,包括程序的输入、调试,以及实验报告的誊写和提交。
实验过程中,老师应在实验室进行巡视,及时回答问题,纠正学生的错误操作,同时也要培养学生自主发现问题和解决问题的能力。
(5>任课教师要认真备课,提前预做实验,上好每一堂课。
实验前清点学生人数。
实验后要检查学生的实验报告。
4.实验工程及学时分配
序号
工程名称
内容摘要
实验类型
学时
实验要求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Java程序初步
类型转换
数据运算
Java语句
类的定义
构造方法
has-a关系
is-a关系
Java接口
字符串处理
数组应用
例外处理
线程的基本控制
线程的同步控制
文件操作
Java程序的基本结构
自动、强制类型转换
运算符与表达式
程序流程
变量与方法
构造方法的定义
对象之间的相互作用
继承
接口及其应用
String、StringBuffer
引用型数组
例外处理的编程方法
Thread类
wait、notify
输入、输出流
验证性
验证性
设计性
设计性
设计性
验证性
设计性
设计性
设计性
设计性
设计性
设计性
设计性
设计性
设计性
2
2
2
2
2
2
2
2
4
2
2
2
2
2
2
必做
必做
必做
必做
必做
必做
必做
必做
必做
必做
必做
必做
必做
必做
必做
实验1:
Java程序初步
【实验目的】
(1>了解Java应用程序的基本结构,以及main方法的格式。
能够模仿地定义一些简单的类、创建类的实例对象。
(2>了解Java开发工具包的组成,熟练掌握编译、运行Java应用程序的过程。
(3>对类和对象的概念有更好的感性认识。
【实验内容】
定义一个表示圆的名为Circle的类,其软件接口如下:
classCircle{
publicvoidsetRadius(intr>。
//设置圆的半径
publicintgetArea(>。
//计算圆的面积
publicintgetPerimeter(>。
//计算圆的周长
publicintgetRadius(>。
//返回圆的半径
}
【实验要求】
(1>学生在实验前必须进行准备,完成初步的程序设计。
实验要求在规定时间内独立完成,并完成实验报告。
(2>老师要提前预做实验,实验时应在实验室进行巡视,检查学生的实验准备、及时回答问题,纠正学生的错误操作;课后检查学生的实验报告。
实验2:
类型转换
【实验目的】
(1>了解Java语言支持的两类数据类型:
基本类型和复合类型。
(2>了解各种基本类型的特性,掌握各种类型文字的表示。
(3>理解变量的概念,掌握变量定义的基本方法,了解变量的分类、局部变量的作用域。
(4>理解基本类型转换的含义、方法和规则。
【实验内容】
1.假设已经定义和以下变量:
shorta=5,b=7。
bytei=2,j=11。
验证下列表达式的类型以及结果:
⑴a<<35类型结果
⑵b&a类型结果
⑶i+1类型结果
⑷i++类型结果
⑸j>>>2类型结果
⑹(byte>-7*-5类型结果
⑺true?
12:
i类型结果
⑻a=i类型结果
2.下面程序有一行错误代码<在/******found*******/下)。
请改正并调试程序,使之正确运行,并使程序的运行结果为:
k=7i=-1。
必须在原来位置修改,不得增加或删减程序行。
classAaa{
publicstaticvoidmain(Stringargs[]>{
/********found********/
longl=0x7ffffffff。
longk=l>>>32。
inti=(int>l。
System.out.println("k="+k+"i="+i>。
}
}
[实验要求]
(1>学生在实验前必须进行准备,完成初步的验证程序的设计和改正方案。
实验时再通过调试完成最终的验证和改错,并完成实验报告。
(2>老师要提前预做实验,实验时应在实验室进行巡视,检查学生的实验准备、及时回答问题,纠正学生的错误操作;课后检查学生的实验报告。
实验3:
数据运算
[实验目的]
(1>熟练掌握各种运算符的使用。
(2>知道运算符的优先级、结合性和计算次序。
理解表达式的的结果和类型。
[实验内容]
1.下面程序有一行错误代码<在/******found*******/下)。
请改正并调试程序,使之正确运行,并使程序的运行结果为:
x=10a=11b=20
x=20a=11b=21
注意:
必须在原来位置修改,不得增加或删减程序行。
classDdd{
bytea=10。
intb=20。
publicvoidmethod(inti>{
bytex。
/*********found********/
x=i=0?
++a:
++b。
System.out.println("x="+x+"a="+a+"b="+b>。
}
}
classTestDdd{
publicstaticvoidmain(Stringargs[]>{
Dddo=newDdd(>。
o.method(0>。
o.method(1>。
}
}
2.定义一个类Exercise0210。
该类有一个表示年份的int型成员变量year,并包含以下两个方法:
publicvoidset(inty>。
//设置成员变量year的值。
publicbooleanisLeap(>。
//报告year表示的年份是否为闰年。
然后再定义一个应该程序起始类TestExercise0210测试该类。
闰年是指能被400整除、或者能被4整除但不能被100整除的年份。
[实验要求]
(1>学生在实验前必须进行准备,提错改错方案和完成初步的程序设计。
实验要求在规定时间内独立完成,并完成实验报告。
(2>老师要提前预做实验,实验时应在实验室进行巡视,检查学生的实验准备、及时回答问题,纠正学生的错误操作;课后检查学生的实验报告。
实验4:
Java语句
[实验目的]
(1>了解各类Java语句。
知道空语句、表达式语句、块语句和标号语句。
(2>熟练掌握各种流程控制语句的使用。
(3>理解实例方法与静态方法<类方法)的区别。
[实验内容]
编写方法staticintdaysInMonth(inty,intm>,其功能是计算y年m月份包含的天数。
然后在main方法中调用该方法并输出返回结果。
注:
闰年2月份包含29天,其他年的2月份包含28天。
[实验要求]
(1>学生在实验前必须进行准备,完成初步的程序设计。
实验要求在规定时间内独立完成,并完成实验报告。
(2>老师要提前预做实验,实验时应在实验室进行巡视,检查学生的实验准备、及时回答问题,纠正学生的错误操作,同时要注意培养学生自主改错的能力;课后检查学生的实验报告。
实验5:
类的定义
[实验目的]
(1>了解对象的引用,理解引用类型与基本类型的区别。
(2>了解各种类修饰符,了解类的各种语法成分。
(3>掌握变量定义的方法,深刻理解成员变量与局部变量的区别、实例变量与静态变量<类变量)的区别。
(4>掌握方法定义的方法,深刻理解实例方法与静态方法<类方法)的区别。
[实验内容]
定义一个Point类。
该类用两个int型变量表示屏幕坐标系上的一个点,其软件接口如下:
classPoint{
publicfinalstaticintEAST=1。
//点移动的方向
publicfinalstaticintSOUTH=2。
publicfinalstaticintWEST=3。
publicfinalstaticintNORTH=4。
publicPoint(intx,inty>。
//构造方法
publicPoint(>。
//构造方法
publicPoint(Pointp>。
//构造方法
publicvoidmove(intx,inty>。
//当前点移至指定位置
publicvoidmove(intway>。
//按指定的方向将当前点移动1个像素
publicdoubledistance(intx,inty>。
//计算两个点之间的距离
publicdoubledistance(Pointp>。
//计算两个点之间的距离
publicintgetX(>。
//返回当前点的X坐标
publicintgetY(>。
//返回当前点的Y坐标
publicStringtoString(>。
//以格式(x,y>返回当前点的字符串表示
}
然后编写一个应用程序起始类测试该类。
[实验要求]
(1>学生在实验前必须进行准备,完成初步的程序设计。
实验要求在规定时间内独立完成,并完成实验报告。
(2>老师要提前预做实验,实验时应在实验室进行巡视,检查学生的实验准备、及时回答问题,纠正学生的错误操作;课后检查学生的实验报告。
实验6:
构造方法
[实验目的]
(1>掌握构造方法的定义,理解实例创建和实例变量初始化的过程。
深刻理解构造方法与实例方法的区别。
(2>理解方法重载的概念,熟练掌握方法重载的方法。
[实验内容]
定义一个日期类MyDate,其软件接口如下:
classMyDate{
publicMyDate(MyDatedate>。
//构造方法
publicMyDate(inty,intm,intd>。
//构造方法
publicbooleanequal(MyDatedate>。
//判断当前日期与参数日期是否相等
publicvoidincrementDay(>。
//使当前日期增加1天
publicintgetYear(>。
//返回当前日期的年份
publicintgetMonth(>。
//返回当前日期的月份
publicintgetDay(>。
//返回当前日期当月的天数
publicStringtoString(>。
//以“年-月-日”格式返回当前日期的字符串表示
}
然后编写一个应用程序起始类测试该类。
特别要测试进入下一个月、下一年的情况。
[实验要求]
(1>学生在实验前必须进行准备,完成初步的程序设计。
实验要求在规定时间内独立完成,并完成实验报告。
(2>老师要提前预做实验,实验时应在实验室进行巡视,检查学生的实验准备、及时回答问题,纠正学生的错误操作,同时要注意培养学生自主改错的能力;课后检查学生的实验报告。
实验7:
has-a关系
[实验目的]
(1>熟练掌握以对象为单位的信息传递的方法。
(2>理解“has-a”关系的概念,熟练掌握包含“has-a”关系的类的定义。
[实验内容]
利用MyTime类和MyDate类定义一个日期时间类DateAndTime。
DateAndTime类包含一个MyDate型实例变量和一个MyTime型实例变量,它们共同表示一个完整的日期时间。
类的软件接口如下:
classDateAndTime{
publicDateAndTime(>。
//构造方法
publicDateAndTime(Datedate,Timetime>。
//构造方法
publicDateAndTime(Timetime,Datedate>。
//构造方法
publicDateAndTime(inty,intmo,intd,inth,intmi,ints>。
//构造方法
publicbooleanequal(DateAndTimedt>。
//判断两个日期时间是否相等
publicvoidincrementDay(>。
//使当前日期时间增加1天
publicvoidincrementSecond(>。
//使当前日期时间增加1秒
publicStringtoString(>。
//返回当前日期时间的字符串表示
}
然后编写一个应用程序起始类测试该类。
特别要测试进入下一分钟、下一小时、下一个月、下一天、下一年的情况。
[实验要求]
(1>学生在实验前必须进行准备,完成初步的程序设计。
实验要求在规定时间内独立完成,并完成实验报告。
(2>老师要提前预做实验,实验时应在实验室进行巡视,检查学生的实验准备、及时回答问题,纠正学生的错误操作,同时要注意培养学生自主改错的能力;课后检查学生的实验报告。
实验8:
is-a关系
[实验目的]
(1>理解继承的概念,了解超类、子类、直接超类、直接子类的概念。
(2>理解“is-a”关系的概念。
(3>掌握Java子类的定义方法。
(4>了解并掌握关键字this和super的含义及其在各种场合的使用方法。
(5>深入了解考虑继承特征情况下实例变量的初始化过程。
[实验内容]
在《实验7:
has-a关系》中通过组合MyDate类和MyTime类定义了一个表示日期时间的DateAndTime类。
现在请通过扩展MyDate类定义一个具有相同软件接口的日期时间类。
[实验要求]
(1>学生在实验前必须进行准备,完成初步的程序设计。
实验要求在规定时间内独立完成,并完成实验报告。
(2>老师要提前预做实验,实验时应在实验室进行巡视,检查学生的实验准备、及时回答问题,纠正学生的错误操作,同时要注意培养学生自主改错的能力;课后检查学生的实验报告。
实验9:
Java接口
[实验目的]
(1>理解接口的概念、作用,熟练掌握接口定义、接口实现的方法以及接口作为引用类型的使用方法。
(2>熟练掌握引用类型转换的方法和规则。
[实验内容]
定义一个表示区域的接口IRange,其中声明有一个用以测试指定点p是否落在区域内的方法:
booleancontains(Pointp>。
然后定义定义一个表示屏幕坐标系上的圆形区域的R_Circle类。
该类扩展Circle类并实现接口IRangle。
该类包含一个Point型实例变量,表示圆区域的圆心在屏幕坐标系上的位置。
最后完成下面类中的go方法。
该类包含两个实例变量r和p。
方法go的功能是:
若点p在区域r内,就按指定的方向way<东、南、西、北)不断移动,直至该点落在区域外。
随后输出点p的坐标。
classTest{
IRanger。
Pointp。
Test(IRanger1,Pointp1>{
r=r1。
p=p1。
}
publicvoidgo(intway>{
…
}
publicstaticvoidmain(String[]args>{
Pointp=newPoint(90,90>。
IRanger=newR_Circle(50,p>。
//50为半径,p为圆心位置
Pointp1=newPoint(90,90>。
newTest(r,p1>.go(Point.EAST>。
}
}
[选做内容]
通过扩展Rectangle类并实现接口IRangle定义一个表示屏幕坐标系上的矩形区域的R_Rectangle类。
该类包含一个Point型实例变量,表示矩形区域的左上角在屏幕坐标系上的位置。
该类的软件接口如下:
classR_RectangleextendsRectangle{
publicR_Rectangle(>。
//构造方法
publicR_Rectangle(Rectangler,Pointp>。
//构造方法
publicR_Rectangle(intx,inty,intwidth,intheight>。
//构造方法
publicbooleancontains(Pointp>。
//测试参数点p是否落在区域内
publicvoidmoveTo(intx,inty>。
//将区域移至指定位置
publicPointgetWhere(>。
//返回区域的当前位置
}
然后再修改上述main方法,使其能模拟一个点再的矩形区域内移动的情况。
[实验要求]
(1>学生在实验前必须进行准备,完成初步的程序设计。
实验要求在规定时间内独立完成,并完成实验报告。
(2>老师要提前预做实验,实验时应在实验室进行巡视,检查学生的实验准备、及时回答问题,纠正学生的错误操作,同时要注意培养学生自主改错的能力;课后检查学生的实验报告。
实验10:
字符串处理
[实验目的]
(1>理解String型字符串对象与StringBuffer型字符串对象的区别。
(2>熟练掌握String类和StringBuffer类的使用。
(3>了解系统对字符串文字、字符串连接运算+的处理过程。
[实验内容]
定义一个FileSpec类,该类实现对一个文件标识符<含盘符、路径和文件名)的包装,其软件接口如下:
publicclassFileSpec{
publicFileSpec(Stringfilespec>。
//构造方法
publicStringgetName(>。
publicStringgetExtension(>。
publicStringgetPath(>。
}
[实验要求]
(1>学生在实验前必须进行准备,完成初步的程序设计。
实验要求在规定时间内独立完成,并完成实验报告。
(2>老师要提前预做实验,实验时应在实验室进行巡视,检查学生的实验准备、及时回答问题,纠正学生的错误操作,同时要注意培养学生自主改错的能力;课后检查学生的实验报告。
实验11:
数组应用
[实验目的]
(1>理解数组对象的概念,熟练掌握数组类型的表示与数组变量的定义。
(2>熟练掌握数组的创建和使用。
[实验内容]
编写并测试方法staticObject[][]counting(Stringstr>,方法计算并返回参数字符串str中每个字符出现的次数。
返回的Object[][]型二维数组的长度应该为str中不同字符的个数。
二维数组的第1列存放各字符的Character实例;第2列存放各字符对应次数的Integer实例。
[实验要求]
(1>学生在实验前必须进行准备,应提出相应的算法、完成初步的程序设计。
实验要求在规定时间内独立完成,并完成实验报告。
(2>老师要提前预做实验,实验时应在实验室进行巡视,检查学生的实验准备、及时回答问题,纠正学生的错误操作,同时要注意培养学生自主改错的能力;课后检查学生的实验报告。
实验12:
例外处理
[实验目的]
(1>熟练掌握throw语句和throws子句的用法。
(2>熟练掌握try语句的使用。
理解并熟练掌握catch和finally子句的作用的用法。
(3>熟练掌握定义和使用自定义例外类型的方法。
[实验内容]
char型值能够赋值转换成int型或long型,反之则不行。
int型或long型能够强制转换成char型,这种转换不会抛出任何例外,但可能改变值的大小和符号。
现在请定义一个Conversion类,其软件接口如下:
classConversion{
staticcharintToChar(intn>throwsDataException。
stativcharlongToChar(longn>throwsDataException。
}
intToChar(intn>方法和longToChar(longn>方法分别将int型n和long型n转换成char型。
如果转换能保证不改变值的大小和符号,比如执行下列代码后,变量x和y的值应该相等:
intx=10。
charc=Conversion.intToChar(x>。
inty=c。
那么方法正常执行;否则方法抛出一个受检查的DataException型例外。
DataException类需提供一个能够接收并保存n值和一个文本信息<描述n值的类型)的构造方法,以及一个能够返回例外对象状态信息的toString(>方法。
请实现Conversion类和DataException类,并编写应用程序测试它们。
[实验要求]
(1>学生在实验前必须进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 程序设计 方案 课程 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)