包接口抽象类异常处理.docx
《包接口抽象类异常处理.docx》由会员分享,可在线阅读,更多相关《包接口抽象类异常处理.docx(9页珍藏版)》请在冰豆网上搜索。
包接口抽象类异常处理
淮阴工学院
课程实验报告
课程名称
JAVA程序设计教程
班级
实验日期
姓名
学号
实验成绩
实验名称
包、接口抽象类&&异常处理
实
验
目
的
及
要
求
实验目的:
1.了解Java中包(package)、接口(interface)和抽象类的作用。
2.掌握包、接口、抽象类的设计方法。
3.了解Java异常处理(exception)的作用。
4.掌握异常处理的设计方法。
实验要求:
1.了解Java系统包的结构。
2.掌握创建自定义包的方法。
3.掌握使用系统接口的技术和创建自定义接口的方法。
4.理解系统异常处理的机制和创建自定义异常的方法。
实
验
环
境
Windows2000或XP,与
实
验
内
容
1.定义一个抽象基类Shape,它包含三个抽象方法center()、diameter()、getArea(),从Shape类派生出Square和Circle类,这两个类都用center()计算对象的中心坐标,diameter()计算对象的外界圆直径,getArea()方法计算对象的面积。
编写编写应用程序使用Square类和Circle类。
2.定义一个接口Insurance,接口中有四个抽象方法:
publicintgetPolicyNumber();publicintgetCoverageAmount();publicdoublecalculatePremium();publicDategetExpiryDate()。
设计一个类Car,该类实现接口的方法,编写应用程序。
3.定义泛型接口Function,其中包含方法TResultfun(Telement),该方法语义上根据一个T类型的参数得到一个TResul的结果。
请定义一个CollectionUtil类,该类主要对集合进行操作,所有的方法都是静态方法。
请思考并以下问题:
1)我们需要一个CollectionUtil对象吗该类是否应该是抽象类
2)定义方法
PublicstaticCollectionconvert(
Collectiondata,
Functionconverter)
注意:
Collection是java集合的父接口对象,该方法的作用是针对
集合data中的每一个元素,我们运用一个转换规则对象converter得到另外一个对象。
例如:
对于一个浮点数集合source为{,,,},对该集合中的每一个元素进行四舍五入操作,可以得到一个整数的集合{2,4,6,-2},为了完成上述转换,我们可以定义转换类
publicclassToIntFunimplementsFunction{
publicIntegerfun(Doublex){
returnx四舍五入的结果;
}
}
然后我们调用CollectionUtil.Convert(source,newToIntFun()),该方法的调用结果就是我们想要的四舍五入的结果集合。
请你完成方法convert和ToIntFun.Fun,并且编写一个主程序来测试。
测试分为两个层次:
a.测试单个元素的转换是否正确b.测试集合的转换是否正确
3)定义接口Command,该接口包含方法voidexecute(Telement),上述方法的作用是对一个T类型的参数element,做某个事情,最简单的是输出该元素的值。
然后为CollectionUtil类定义静态方法voidforeach(Collectiondata,Commandcmd)。
该方法的作用是针对集合data中的每个元素,执行某个操作。
请你定义一个类
ClassPositionSum实现接口Command,并且在execute方法中完成将一个整数的所有位数和输出的功能。
然后完成方法并且在主程序中测试PositionSum和。
4.自定义异常类MyException,该类继承自Exception类,类中只有含一个字符串参数msg的构造方法,构造方法中只有一条语句super(msg)——调用父类的构造方法。
另外,编写自定义类person,类中只有两个私有的变量,一个是字符串类型的姓名,另一个是整型变量age;有两个公有方法voidgetAge()和setAge(intage),其中setAge(intage)的功能是把参数age的值加到类中的变量age中(但要求age>0,否则抛出自定义异常MyException类的对象),getAge()方法返回age的值。
编写应用程序。
算
法
描
述
及
实
验
步
骤
调
试
过
程
及
实
验
结
果
实验1
测试结果:
中心坐标为:
外界圆直径为2.
面积为:
中心坐标为:
外界圆直径为2.
面积为:
实验2
测试结果:
保单号:
11100
保险金额:
12200
保险总计:
终止日期:
null
实验3
测试结果:
实验4
测试结果:
请输入年龄:
22
张三的年龄为:
22
请输入年龄:
-3
Exceptioninthread"main"MyException:
年龄必须大于0
at:
24)
at:
36)
总
结
附
录
实验1
代码如下:
publicabstractclassShape{
protecteddoublex1;
protecteddoubley1;
protecteddoublex2;
protecteddoubley2;
Shape(doublex1,doubley1,doublex2,doubley2){
=x1;
=y1;
=x2;
=y2;
}
publicabstractStringcenter();
publicabstractdoublediameter();
publicabstractdoublegetArea();
}
publicclassSquareextendsShape{
Square(doublex1,doubley1,doublex2,doubley2){
super(x1,y1,x2,y2);
}
publicStringcenter(){
return"("+(x2-x1)/2+","+(y2-y1)/2+")";
}
publicdoublediameter(){
return((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
publicdoublegetArea(){
return(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);
}
}
publicclassCircleextendsShape{
Circle(doublex1,doubley1,doublex2,doubley2){
super(x1,y1,x2,y2);
}
publicStringcenter(){
return"("+(x2-x1)/2+","+(y2-y1)/2+")";
}
publicdoublediameter(){
return((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
publicdoublegetArea(){
return*(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)/4;
}
publicstaticvoidmain(String[]args){
Squarea=newSquare,,,;
Circleb=newCircle,,,;
"中心坐标为:
");
"外界圆直径为");
"面积为:
");
"中心坐标为:
");
"外界圆直径为");
"面积为:
");
}
}
实验2
代码如下:
import定义接口
publicinterfaceInsurance{
publicabstractintgetPolicyNumber();
publicabstractintgetCoverageAmount();
publicabstractdoublecalculatePremium();
publicabstractDategetExpiryDate();
}
importclassCarimplementsInsurance{
publicintgetPolicyNumber(){
return11100;//直接返回保单号
}
publicintgetCoverageAmount(){
return12200;//返回保险金额
}
publicdoublecalculatePremium(){
return;//返回保险的总金额
}
publicDategetExpiryDate(){
returnnull;//没有终止日期
}
publicstaticvoidmain(String[]args){
Cara=newCar();
"保单号:
"+());
"保险金额:
"+());
"保险总计:
"+());
"终止日期:
"+());
}
}
实验3
代码如下:
实验4
代码如下:
publicclassMyExceptionextendsException{
publicMyException(Stringmsg){
super(msg);
}
}
importclassPerson
{
privateStringname;
privateintage;
publicPerson(Stringa)
{
name=a;
}
publicintgetAge()
{
returnage;
}
publicStringgetname()
{
returnname;
}
publicvoidsetAge(intage)throwsMyException
{
if(age<0)
{
thrownewMyException("年龄必须大于0");
}
else=age;
}
publicstaticvoidmain(String[]args)throwsMyException
{
Persona=newPerson("张三");
"请输入年龄:
");
Scannerinput=newScanner;
intage=();
(age);
"的年龄为:
"+());
}
}