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

上传人:b****3 文档编号:4645889 上传时间:2023-05-07 格式:DOCX 页数:18 大小:27.35KB
下载 相关 举报
10面向对象程序设计实验指导书.docx_第1页
第1页 / 共18页
10面向对象程序设计实验指导书.docx_第2页
第2页 / 共18页
10面向对象程序设计实验指导书.docx_第3页
第3页 / 共18页
10面向对象程序设计实验指导书.docx_第4页
第4页 / 共18页
10面向对象程序设计实验指导书.docx_第5页
第5页 / 共18页
10面向对象程序设计实验指导书.docx_第6页
第6页 / 共18页
10面向对象程序设计实验指导书.docx_第7页
第7页 / 共18页
10面向对象程序设计实验指导书.docx_第8页
第8页 / 共18页
10面向对象程序设计实验指导书.docx_第9页
第9页 / 共18页
10面向对象程序设计实验指导书.docx_第10页
第10页 / 共18页
10面向对象程序设计实验指导书.docx_第11页
第11页 / 共18页
10面向对象程序设计实验指导书.docx_第12页
第12页 / 共18页
10面向对象程序设计实验指导书.docx_第13页
第13页 / 共18页
10面向对象程序设计实验指导书.docx_第14页
第14页 / 共18页
10面向对象程序设计实验指导书.docx_第15页
第15页 / 共18页
10面向对象程序设计实验指导书.docx_第16页
第16页 / 共18页
10面向对象程序设计实验指导书.docx_第17页
第17页 / 共18页
10面向对象程序设计实验指导书.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

 

面 向 对 象 程 序

设 计 实 验 指 导 书

 

实验一简单程序设计

一、实验目的

理解JAVA程序运行机制,掌握JAVA基本程序设计,学习使用JDK文档

二、实验内容

1.

使用纯文本编辑器编写一个HelloWorld程序,使用命令行编译并运行;并掌握配置EditPlus使之运行JAVA程序。

思考:

假设HelloWorld.java在目录:

d:

\exercise

将编译后的HelloWorld.class文件移至c:

\下

若在命令行下运行如下命令:

d:

\exercise>javaHelloWorld,

c:

\>javaHelloWorld

有没有问题?

假定需要在d:

\exercise>运行HelloWorld,需要设置什么?

2.设n为自然数,编写方法factorial(int)计算阶程,并在main方法中调用该方法,计算2!

,4!

,6!

并将结果输出到屏幕上。

3.使用java.lang.Math类,生成100个0-99之间的随机整数,找出它们之中的最大者及最小者,并统计大于50的整数个数。

4.创建一个二维数组,初始化为每名学生的四门课程成绩,计算每名学生的总成绩并按总成绩排序并输出每名学生的成绩。

5.编写程序翻转输出此字符串:

HelloWorld!

三、实验指导

1.配置path路径,使得在任意路径下,javac,java等命令均为可识别的命令。

我的电脑属性高级环境变量系统变量

java_home=C:

\ProgramFiles\Java\jdk1.6.0_20(新建)

path:

%java_home%\bin\ (添加)

也可以直接在path中添加:

C:

\ProgramFiles\Java\jdk1.6.0_20\bin

2.配置Editplus:

打开EditPlus,单击菜单中的“工具”,选择“配置用户工具”,在弹出的“参数选择”窗口中,单击按纽“添加工具”,在弹出的菜单中选择“新用户程序”,在“组和工具项目”中,设置如下:

菜单名字:

javac

命令:

D:

\j2sdk1.4.2_04\bin\javac.exe(此为本机上安装的jdk目录)

参数:

$(FileName)

初始目录:

$(FileDir);

选中“捕获输出”。

同样道理“添加工具”,设置如下:

菜单名字:

java

命令:

D:

\j2sdk1.4.2_04\bin\java.exe

参数:

$(FileNameNoExt)

初始目录:

$(FileDir)

选中“捕获输出”。

3.参考:

(1)当在目录d:

\exercise>运行HelloWorld时,考虑配置环境变量。

环境变量的配置:

我的电脑属性高级环境变量系统变量添加名为classpath的环境变量,并设置值为HelloWorld类所在的路径。

另可考虑javac-classpath

(2)类名为“Factorial,添加一个计算阶乘的方法factorial(inti),考虑一个数的阶乘会很大,超过int的范围,将此方法的返回值定义为long型。

此外,由于需要在main方法中直接调用该方法,需要将此方法定义为static型。

计算阶乘使用递归,如if(i!

=1)returnfactorial(i-1)*i;elsereturn1;

也可使用循环来实现。

最好都实现。

3.使用Math.random()方法来生成随机数,由于此方法生成0-1之间的随机小数,故需要用100*Math.random()来生成0-99之间的一个随机数,并且需要用强制转换成整(int)(100*Math.random())。

可先生成两个随机整数,并任意赋给代表最大值的变量maxRandom和代表最小值的变量minRandom,比较它们之间的大小,较大者赋给maxRandom,较小者赋给minRandom。

然后在一个98次的循环体中,每生成一个随机数,放入先定义好的整数数组中,并与maxRandom和minRandom进行比较,若大于maxRandom,则maxRandom被此值所替代,若小于minRandom,则minRandom被此值所替代。

并判断此值是否大于50,是则将用于计数的变量count增1。

4.可预先定义两个变量maxStudent和maxCourse分别记录学生数和课程数量,这里课程数为4。

定义一个二维数组int[][]score=newint[maxStudent][];,每一行代表某一个学生的4门课成绩。

作为实验之用,可利用一个嵌套循环,利用随机数生成的办法,初始化该二维数组。

内循环体中,每生成一个随机数,便进行分数的统计,内循环结束,将该名学生的总成绩放入此行的最后一个元素中。

提高:

(1)利用数据结构中所学的任一种排序,如冒泡法,进行排序输出,任何一种排序方法中,只需要比较每行的最后一个元素来进行行与行的交换。

(2)本例也可以参考第1章中的示例程序,利用键盘输入的方法初始化此二维数组。

5.用两种方法实现。

(1)使用String类的方法,利用循环来实现

(2)使用StringBuilder类,仅仅利用一个方法就可实现

 

实验二 类与对象

一、实验目的

掌握类的定义,对象的创建,掌握构造函数,封装,static关键字

二、实验内容

1.创建一个Vehicle的类,其UMLclassDiagram如下图所示(其中max_Load和load的单位为kg):

Vehicle

+load:

double

+maxLoad:

double

+Vehicle(max_Load:

double)

+getLoad():

double

+getMaxLoad():

double

编写一个TestVehicle.java程序,使得程序输出为:

creatingavehiclewitha10,000kgmaximumload.

Addbox#1(500kg)

Addbox#2(250kg)

Addbox#3(5000kg)

Addbox#4(4000kg)

Addbox#5(300kg)

Vehicleloadis10050.0kg

2.修改Vehicle类,其UMLclassDiagram如下图所示:

Vehicle

-load:

double

-maxLoad:

double

+Vehicle(max_Load:

double)

+getLoad():

double

+getMaxLoad():

double

+addBox(weight:

double):

boolean

其中,addBox()方法中要检测是否超载,即是否已经超过max_Load,如果超过,该box不能被添加,方法返值为false,否则添加进去,并返值为true。

修改TestVehicle.java程序,使得程序输出为:

creatingavehiclewitha10,000kgmaximumload.

Addbox#1(500kg)

Addbox#2(250kg)

Addbox#3(5000kg)

Addbox#4(4000kg)

Addbox#5(300kg)

Vehicleloadis9750.0kg

3.创建一个类,如下图所示:

Count

-counter:

int=0

-serialNumber:

int

+Count()

+getTotalCount()

其中,counter记录所创建的对象的个数,每次创建一个对象时,其序列号serialNumber为其创建的序号。

设计测试类Count的程序,不使用Count的实例而直接调用getTotalCount()程序输出如下:

Numberofcounteris0

Numberofcounteris1

Numberofcounteris2

4.创建一个二维对象数组,数组中的每个元素为一个学生类的实例,学生类的UML图为:

其中,属性score数组的内容同实验一的第4小题,分数的处理可定义。

Student

-ID:

String

-name:

String

-score[MAXLENGTH]:

float

+Student(ID:

String,name:

String)

+getID():

String

+getName():

String

+setID(Stringid):

void

+setName(Stringname):

void

三、实验步骤:

1.

(1)单击菜单中的“文件”,选择“新建”,在弹出的菜单中选择“JAVA”,出现java程序编辑区域,定义类Vehicle

  

(2)为类Vehicle按照UML图定义公有成员变量load,maxLoad以及带一个参数的构造函数,在构造函数体中对maxLoad进行初始化。

  (3)为类Vehicle按照UML图定义公有成员函数getLoad()和getMaxLoad(),分别返回成员变量load和maxLoad的值。

  (4)定义测试类TestVehicle,在main方法中编写代码,实现题目所要求的输出:

可以创建一个Vehicle类的实例,利用System.out.println进行提示输出,每加一个box,增加该实例的成员变量load。

  (5)保存为“TestVehicle.java”的文件。

(6)单击菜单中的“工具”,单击“javac“编译此代码,若无误,在“输出窗口”区显示“输出完成(耗时3秒)-正常终止”。

若有误,双击错误提示语句,在程序编辑区光标会自动跳转到有错误的行,检查程序。

记录编译错误提示语句,并写出错误原因及解决方法。

(7)单击菜单中的“工具”,单击“java”执行代码,若无误,会在“输出窗口”区显示所要求的输出结果。

若输出有误,检查程序。

记录运行错误提示语句,并写出错误原因及解决方法。

2.

(1)单击菜单中的“文件”,选择“新建”,在弹出的菜单中选择“JAVA”,出现java程序编辑区域,定义类VehicleUpdate(为与实验一区分开来)

  

(2)为类Vehicle按照UML图定义私有成员变量load,maxLoad以及带一个参数的构造函数,在构造函数体中对maxLoad进行初始化。

  (3)为类Vehicle按照UML图定义公有成员函数getLoad()和getMaxLoad(),分别返回成员变量load和maxLoad的值。

  (4)为类Vehicle增加一个成员方法addBox(),在此方法体中,对load进行增加,增加的量为addBox()方法的形参值,并作判断,是否load在添加之后超过了maxLoad所规定的量,若超过,将刚增加的量立即减去,并返回假,否则返回真。

  (5)定义测试类TestVehicleUpdate,在main方法中编写代码,实现题目所要求的输出:

可以创建一个VehicleUpdate类的实例,利用System.out.println进行提示输出,每加一个box,调用addBox()方法增加该实例的成员变量load。

  (6)保存为“TestVehicleUpdate.java”的文件。

(7)单击菜单中的“工具”,单击“javac“编译此代码,若无误,在“输出窗口”区显示“输出完成(耗时3秒)-正常终止”。

若有误,双击错误提示语句,在程序编辑区光标会自动跳转到有错误的行,检查程序。

记录编译错误提示语句,并写出错误原因及解决方法。

(8)单击菜单中的“工具”,单击“java”执行代码,若无误,会在“输出窗口”区显示所要求的输出结果。

若输出有误,检查程序。

记录运行错误提示语句,并写出错误原因及解决方法。

3.

(1)单击菜单中的“文件”,选择“新建”,在弹出的菜单中选择“JAVA”,出现java程序编辑区域,定义类Count

  

(2)为类Count按照UML图定义私有成员变量counter,并声明为static型,定义私有成员变量serialNumber,以及无参的构造函数,在构造函数体中,对counter进行增1运算,同时将counter的值赋给serialNumber,以实现题目所要求的“counter记录所创建的对象的个数,每次创建一个对象时,其序列号serialNumber为其创建的序号”

  (3)为类Count定义成员方法getTotalCount(),在此需声明为static型,以实现题目所要求的“不使用Count的实例而直接调用getTotalCount()”进行输出

  (3)定义测试类TestCount,在main方法中编写代码,实现题目所要求的输出:

可以创建两个VehicleUpdate类的实例,利用System.out.println进行提示输出,在输出中,利用Count.getTotalCount()来返回所创建对象的个数。

  (4)保存为“TestCount.java”的文件。

(5)单击菜单中的“工具”,单击“javac“编译此代码,若无误,在“输出窗口”区显示“输出完成(耗时3秒)-正常终止”。

若有误,双击错误提示语句,在程序编辑区光标会自动跳转到有错误的行,检查程序。

记录编译错误提示语句,并写出错误原因及解决方法。

(6)单击菜单中的“工具”,单击“java”执行代码,若无误,会在“输出窗口”区显示所要求的输出结果。

若输出有误,检查程序。

记录运行错误提示语句,并写出错误原因及解决方法。

4.

  

(1)单击菜单中的“文件”,选择“新建”,在弹出的菜单中选择“JAVA”,出现java程序编辑区域,定义类Student。

(2)为类Student按照UML图定义私有成员变量ID,name,以及一维数组score[]。

(3)为类Student定义带三个参数的构造函数,ID,name分别用于初始化学生的ID号以及name。

在构造函数体中,使用maxCourse的大小来创建score数组,并利用随机数生成的办法初始化此数组(方法同实验一的第4题),并计算总分。

同实验一的第4题,本例也可以在学习了输入输出流后,利用键盘输入的方法初始化此二维数组。

(4)为类Student定义分别取得和设置name,ID,的方法getName(),getID(),setName(),setID()以及返回score数组的方法getScore()

(5)定义测试类TestStudentArray,在main方法体中,创建一个对象数组,对数组的每一个对象元素,使用new进行对象的创建,其参数自行指定,其中学生的数目和课程的数目可以定义两个变量maxStudent和maxCourse来确定,maxStudent任意指定,maxCourse按照题目要求指定为4。

利用Student类提供的成员方法输出排序前的学生ID,姓名以及各科成绩,利用任意一种排序方法进行总成绩的排序,在排序方法中,比较的是每个学生对象的属性-score[]数组的最后一个元素(总分)的值,交换的是每一个对象元素,也即一维数组的每一个元素。

最后同排序前的方法进行排序后的输出。

(6)保存文件名为TestStudentArray.java。

(7)单击菜单中的“工具”,单击“javac“编译此代码,若无误,在“输出窗口”区显示“输出完成(耗时3秒)-正常终止”。

若有误,双击错误提示语句,在程序编辑区光标会自动跳转到有错误的行,检查程序。

记录编译错误提示语句,并写出错误原因及解决方法。

(8)单击菜单中的“工具”,单击“java”执行代码,若无误,会在“输出窗口”区显示所要求的输出结果。

若输出有误,检查程序。

记录运行错误提示语句,并写出错误原因及解决方法。

 

实验三 继承与多态

一、实验目的

掌握继承、方法重载,方法覆盖,抽象类和接口、super和this关键字,包机制

二、实验内容

1.创建类Employee和类Manager,如下图所示:

Employee

+name:

String=”“

+salary:

double

+birthDate:

Date

+getDetails():

String

Manager

+department:

String

+getDetails():

String

在Employee类中的getDetails()方法输出名字和工资;在Manager类中实现方法覆盖,输出名字、工资及所在部门。

2.修改为类Employee,创建三个构造函数,第一个带一个参数,用以初始化名字;第二个带二个参数,用以初始化名字和工资;第三个带三个参数,初始化名字、工资和出生日期,实现构造函数的重载。

3.在第2题的基础上,修改Manager类,创建三个构造函数,第一个带一个参数,用以初始化部门;第二个带二个参数,用以初始化名字和部门;第三个带三个参数,用以初始化名字、工资和部门;第四个带四个参数,用以初始化名字、工资、出生日期及部门。

练习this和super关键字的应用。

4.创建一个目录,名为banking,类Account(如下图所示)放在banking包中,

Account

-balance:

double

+Account(initbalance:

double)

+getBalance():

double

+deposit(amt:

double)

+withdraw(amt:

double)

建立一个测试程序TestBanking.java,放在缺省包中,完成功能为:

创建一个账户,初始化balance,并做几单简单的交易,最后显示交易后的balance,要求程序运行结果如下:

Creatinganaccountwitha500.00balance.

Withdraw150.00

Deposit22.50

Withdraw47.62

Theaccounthasabalanceof324.88

三、实验步骤

1.

  

(1)单击菜单中的“文件”,选择“新建”,在弹出的菜单中选择“JAVA”,出现java程序编辑区域,定义类Employee。

为类Student按照UML图定义protected的成员变量name,salary和birthDate,以及公有成员方法getDetails(),此方法用于输出name,salary和birthDate。

  

(2)定义类Manager,继承Employee,增加一个成员变量department,并覆盖getDetails()方法,用于输出name,salary,birthDate和department。

在getDetails()方法体中使用super关键字调用父类的getDetails()方法,以避免重复代码进行输出name,salary,birthDate。

  (3)定义测试类TestEmployeeManager,创建一个Manager实例,调用getDetails()方法进行输出。

(4)保存为TestEmployeeManager.java

(5)单击菜单中的“工具”,单击“javac“编译此代码,若无误,在“输出窗口”区显示“输出完成(耗时3秒)-正常终止”。

若有误,双击错误提示语句,在程序编辑区光标会自动跳转到有错误的行,检查程序。

记录编译错误提示语句,并写出错误原因及解决方法。

(6)单击菜单中的“工具”,单击“java”执行代码,若无误,会在“输出窗口”区显示所要求的输出结果。

若输出有误,检查程序。

记录运行错误提示语句,并写出错误原因及解决方法。

2.

  

(1)同第1题

(1),并增加三个构造函数,进行构造函数的重载。

在构造函数体中,利用this关键字调用本类的另外的构造函数。

  其余步骤同第1题。

3.

  

(1)同第2题

  

(2)同第1题

(2),并增加四个构造函数,进行构造函数的重载。

在构造函数体中,使用super关键字调用父类的构造函数。

  其余步骤同第1题

4.

  

(1)单击菜单中的“文件”,选择“新建”,在弹出的菜单中选择“JAVA”,出现java程序编辑区域,定义类为Account

  

(2)为类Account定义私有成员变量balance,初始化balance的构造函数,以及成员方法getBalance()(返回balance的值),deposit()(存入amt,balance的值增加amt),withdraw()(取出amt,balance的值减少amt)

(3)保存为Account.java。

使用javac–d.Account.java来编译,或者在EditPlus中再配置一个工具,

菜单名字:

javac-d

命令:

D:

\j2sdk1.4.2_04\bin\javac.exe(此为本机上安装的jdk目录)

参数:

-d.$(FileName)

初始目录:

$(FileDir);

选中“捕获输出”。

则会自动在当前目录下创建一个banking子目录,类文件存于此子目录下。

  (3)定义测试类TestBanking,引入banking.Account类,创建一个Account的实例,调用其成员方法进行存入取出,最后输出。

保存为TestBanking.java。

注意,如果importbanking.*,则Account.java文件不能和TestBanking.java文件放在同一路径下。

但如果是importbanking.Account,则无此限制。

  (4)运行输出。

记录此过程中出现的总是,并记录解决的方法。

 

实验四综合应用

基于MVC框架进行javaweb编程

一、实验目的

掌握MVC框架进行javaweb编程的基本原理

二、实验内容

创建一个web程序,主页面是登录页面,输入用户名和密码后,与数据库中的记录进行比较,用户名和密码正确,即显示该用户名登录成功,否则显示该用户名登录失败。

基于Myeclipse环境,使用mysql数据库

三、实验步骤

(1)新建webproject

(2)View层代码:

登录页面login.jsp,内容为:

输入用户名和密码

登录成功页面main.jsp,内容为:

提示该用户名登录成功

登录失败页面:

register.jsp,内容为:

提示该用户名登录失败

(3)Controller层代码:

LoginServlet.java:

用来处理从view传来的用户请求,将请求发给业务逻辑代码LoginHandler处理处理完成后,再将处理结果交由view显示

(4)Model层代码

LoginHandler.java:

业务处理逻辑代码,与数据库交互,判断用户名和密码是否一致。

DBPool.java:

 用来进行数据库连接

db.properties:

数据库连接属性文件。

(5)配置web.xml

(6)布署到tomcat服务器

(7)浏览器下运行,测试。

附参考代码:

login.jsp:

UserName:

Password:

 

main.jsp

<%=session.getAttribute("username")%>lo

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2