java实验296524.docx

上传人:b****8 文档编号:10218881 上传时间:2023-02-09 格式:DOCX 页数:17 大小:18.33KB
下载 相关 举报
java实验296524.docx_第1页
第1页 / 共17页
java实验296524.docx_第2页
第2页 / 共17页
java实验296524.docx_第3页
第3页 / 共17页
java实验296524.docx_第4页
第4页 / 共17页
java实验296524.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

java实验296524.docx

《java实验296524.docx》由会员分享,可在线阅读,更多相关《java实验296524.docx(17页珍藏版)》请在冰豆网上搜索。

java实验296524.docx

java实验296524

实验项目名称:

面向对象编实验学时:

8

同组学生姓名:

————实验地点:

1514/A203

实验日期:

实验成绩:

批改教师:

王倩倩批改时间:

 

一、实验目的和要求

(1)熟练掌握Java语言类定义的基本语法;

(2)熟练掌握类成员的访问控制,对象建立的方法;

(3)熟练掌握类构造方法、成员方法的定义和重载;

(4)熟练掌握类继承、多态和抽象性;

(5)熟练掌握接口的定义和实现方法;

(6)掌握基本的异常处理方法;

(7)调试程序要记录调试过程中出现的问题及解决办法;

(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;

(9)做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔腾以上计算机,Windows操作系统,装有和Eclipse软件。

三、实验过程

(1)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、字符串描述、比较是否相等等操作。

(2)设计三角形类,继承图形抽象类,实现面积接口和周长接口,计算三角形面积和周长。

(3)包的建立与使用:

设计计算器类Calculator,计算加、减、乘、除,并且打包为mypackage。

观察源文件目录下是否生成了mypackage文件夹,在该文件夹中是否有文件。

编辑,保存在同一目录下,引用计算器类的各方法显示计算结果。

(4)编码实现多态在工资系统中的应用:

给出一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。

Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。

该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。

在主测试类Test中测试各类雇员工资计算结果。

提示:

对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Employee派出生的。

在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。

为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引用并调用earnings()方法。

在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。

程序依次使用数组的每个元素(Employee引用)调用每个对象的earnings()方法。

Employee类定义如下:

abstractclassEmployee

{

privateStringfirstName;

privateStringlastName;

publicEmployee(Stringfirst,Stringlast)

{

firstName=first;

lastName=last;

}

publicStringgetEmployeeName()

{

returnfirstName;

}

publicStringgetLastName()

{

returnlastName;

}

publicStringtoString()

{

returnfirstName+lastName;

}

publicabstractStringearnings();

}

(5)异常的捕获:

计算两数相除并输出结果。

使用三个catch子句,分别捕捉输入输出异常、除数为0的异常和参数输入有误异常。

import.*;

classEx1

{

publicstaticvoidmain(Stringargs[])

{

try{

BufferedReaderstrin=newBufferedReader(

newInputStreamReader);arseInt(cl);

System.out.print("请输入被除数:

");

cl=strin.readLine();

intb=Integer.parseInt(cl);

intc=b/a;

System.out.println("商为:

"+c);

}

oString());

"两个徐庶的差:

"+(b).toString());

if(b))

{

"两个虚数相等");

}

else

{

"两个虚数不相等");

}

}

}

(1)代码如下:

Point类:

packageshiyan2_2;

publicclassPoint

{

publicintx,y;

publicPoint(intx,inty)

{

=x;

=y;

}

publicPoint()

{

this(0,0);

}

publicStringtoString()

{

return"Point("++","++")";

}

}

figure类:

packageshiyan2_2;

publicclassfigure

{

publicPointpoint1;

protectedStringshape;

protectedfigure(Pointpoint)

{

=point;

}

protectedfigure(Pointpoint,Stringshape)

{

=point;

=shape;

}

protectedfigure()

{

this(newPoint());

}

}

Triangle类:

packageshiyan2_2;

publicclassTriangleextendsfigureimplementsArea,Perimeter

{

publicPointpoint2,point3;

protecteddoublea,b,c;

publicTriangle(Pointp1,Pointp2,Pointp3)

{

super(p1,"三角形");

=p2;

=p3;

=(=(=(}

publicTriangle(Pointp1,doublea,doubleb,doublec)

{

super(p1,"三角形");

=a;

=b;

=c;

}

publicdoublearea()

{

doubles=(a+b+c)/2;

return(s*(s-a)*(s-b)*(s-c));

}

publicdoubleperimeter()

{

returna+b+c;

}

publicStringtoString()

{

return().getName()++",三点坐标"++","+==null"null":

","+==null"null":

",三边长"+("%,%,%",,,;

}

}

Area接口:

packageshiyan2_2;

publicinterfaceArea

{

publicabstractdoublearea();

}

Perimeter接口:

packageshiyan2_2;

publicinterfacePerimeter

{

publicabstractdoubleperimeter();

}

Test类:

packageshiyan2_2;

publicclasstext

{

publicstaticvoidmain(String[]args)

{

Triangletr=newTriangle(newPoint(100,100),newPoint(100,130),newPoint(140,130));

Areaar=tr;

"面积为:

"+("%",()));

Perimeterpe=tr;

"周长为:

"+("%",()));

}

}

(2)代码如下:

packagemypackage;

publicclasscalculator

{

privatedoublex;

publiccalculator(doublexx)

{

=xx;

}

publicdoubleadd(calculatorc)

{

return+;

}

publicdoublesub(calculatorc)

{

return}

publicdoublemul(calculatorc)

{

return*;

}

publicdoublediv(calculatorc)

{

return;

}

publicStringtoString()

{

return""++"";

}

}

packagemypackage;

publicclassPackageDemo

{

publicstaticvoidmain(String[]args)

{

calculatoraa=newcalculator

(1);

calculatorbb=newcalculator

(1);

"加法:

"+()+"+"+()+"="+(bb));

"减法:

"+()+"-"+()+"="+(bb));

"乘法:

"+()+"*"+()+"="+(bb));

"除法:

"+()+"/"+()+"="+(bb));

}

}

(3)代码如下:

Employee类:

packageshiyan2_4;

publicabstractclassEmployee

{

publicEmployee()

{

}

privateStringfirstName;

privateStringlastName;

publicEmployee(Stringfirst,Stringlast)

{

firstName=first;

lastName=last;

}

publicStringgetEmployeeName()

{

returnfirstName;

}

publicStringgetLastName()

{

returnlastName;

}

publicStringtoString()

{

returnfirstName+lastName;

}

publicabstractStringearnings();

}

Employee类:

packageshiyan2_4;

publicfinalclassBossextendsEmployee

{

publicStringearnings()

{

return"通过Boss的工资计算公式计算出老板的工资";

}

}

CommissionWorker类:

packageshiyan2_4;

publicfinalclassCommissionWorkerextendsEmployee

{

publicStringearnings()

{

return"通过CommissionWorker的工资计算公式计算出老板的工资";

}

}

HourlyWorke类:

packageshiyan2_4;

publicfinalclassHourlyWorkerextendsEmployee

{

publicStringearnings()

{

return"通过HourlyWorker的工资计算公式计算出老板的工资";

}

}

PieceWorker类:

packageshiyan2_4;

publicfinalclassPieceWorkerextendsEmployee

{

publicStringearnings()

{

return"通过PieceWorker的工资计算公式计算出老板的工资";

}

}

Text类:

packageshiyan2_4;

publicclasstext

{

publicstaticvoidmain(String[]args)

{

Employeeem=newBoss();

em=newCommissionWorker();

em=newPieceWorker();

em=newHourlyWorker();

}

}

(4)代码如下:

packageshiyan2_5;

import.*;

publicclassEx1

{

publicstaticvoidmain(Stringargs[])

{

Stringcl=null;

try

{

BufferedReaderstrin=newBufferedReader(newInputStreamReader);arseInt(cl);

System.out.print("请输入被除数:

");

cl=strin.readLine();

intb=Integer.parseInt(cl);

intc=b/a;

System.out.println("商为:

"+c);

}

catch(IOExceptionex)

{

"I/O有关的异常");

}

catch(NumberFormatExceptionex)

{

"字符串不能转换成整数");

}

catch(ArithmeticExceptionex)

{

"除数不能0");

}

}

}

(5)代码如下:

自定义异常类:

packageshiyan2_6;

publicclassMyExceptionextendsException

{

publicMyException(Strings)

{

super(s);

}

publicMyException()

{

super();

}

}

packageshiyan2_6;

importclassDivide

{

publicstaticdoublediv(doublea,doubleb)throwsMyException

{

if(a==100&&(b==4||b==13))thrownewMyException("不符合规范");

elsereturna/b;

}

publicstaticvoidmain(Stringargs[])

{

Stringcl=null;

doublea,b;

try

{

BufferedReaderstrin=newBufferedReader(newInputStreamReader);

"请输入被除数:

");

cl=();

a=(cl);

System.out.print("请输入除数:

");

cl=strin.readLine();

b=(cl);

System.out.println("商为:

"+(a,b));

}

catch(IOExceptionex)

{

"I/O有关的异常");

}

catch(NumberFormatExceptionex)

{

"字符串不能转换成整数");

}

catch(ArithmeticExceptionex)

{

"除数不能0");

}catch(MyExceptionex)

{

"输入的数据不规范");

}

}

}

四、实验结果与分析

(1)题实验结果:

第一个虚数为:

+

第二个虚数为:

+

两个徐庶的和:

+

两个徐庶的差:

+

两个虚数相等

(2)题实验结果:

三角形,三点坐标Point(100,100),Point(100,130),Point(140,130),三边长,,

面积为:

周长为:

第(3)题实验结果:

加法:

+=

减法:

-=

乘法:

*=

除法:

/=

第(4)题实验结果:

通过Boss的工资计算公式计算出老板的工资

通过CommissionWorker的工资计算公式计算出老板的工资

通过PieceWorker的工资计算公式计算出老板的工资

通过HourlyWorker的工资计算公式计算出老板的工资

第(5)题实验结果:

请输入除数:

3o

3o字符串不能转换成整数

请输入除数:

0

请输入被除数:

13

除数不能0

第(6)题实验结果:

请输入被除数:

100

请输入除数:

4

输入的数据不规范

请输入被除数:

100

请输入除数:

13

输入的数据不规范

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

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

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

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