收藏 分销(赏)

java实验2.doc

上传人:人****来 文档编号:4345679 上传时间:2024-09-09 格式:DOC 页数:13 大小:62.50KB
下载 相关 举报
java实验2.doc_第1页
第1页 / 共13页
java实验2.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述
实验项目名称: 面向对象编 实验学时: 8 同组学生姓名: ———— 实验地点: 1514 /A203 实验日期: 4、13/4、15/4、20/4、22 实验成绩: 批改教师: 王倩倩 批改时间: 一、实验目得与要求 (1)熟练掌握Java语言类定义得基本语法; (2)熟练掌握类成员得访问控制,对象建立得方法; (3)熟练掌握类构造方法、成员方法得定义与重载; (4)熟练掌握类继承、多态与抽象性; (5)熟练掌握接口得定义与实现方法; (6)掌握基本得异常处理方法; (7)调试程序要记录调试过程中出现得问题及解决办法; (8)编写程序要规范、正确,上机调试过程与结果要有记录,不断积累编程及调试经验; (9) 做完实验后给出本实验得实验报告。 二、实验仪器与设备 奔腾以上计算机,Windows 操作系统,装有JDK1、7与Eclipse软件。 三、实验过程 (1) 设计复数类,成员变量包括实部与虚部,成员方法包括实现复数加法、减法、字符串描述、比较就是否相等等操作。 (2) 设计三角形类,继承图形抽象类,实现面积接口与周长接口,计算三角形面积与周长。 (3) 包得建立与使用:设计计算器类Calculator,计算加、减、乘、除,并且打包为mypackage。观察源文件目录下就是否生成了mypackage文件夹,在该文件夹中就是否有Calculate、class文件。编辑PackageDemo、java,保存在Calculator、java同一目录下,引用计算器类得各方法显示计算结果。 (4) 编码实现多态在工资系统中得应用:给出一个根据雇员类型利用abstract方法与多态性完成工资单计算得程序。Employee就是抽象类,Employee得子类有Boss(每星期发给她固定工资,而不计工作时间)、missionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产得产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。该例得Employee得每个子类都声明为final,因为不需要再继承它们生成子类。在主测试类Test中测试各类雇员工资计算结果。 提示:对所有雇员类型都使用earnings方法,但每个人挣得工资按她所属得雇员类计算,所有雇员类都就是从超类Employee派出生得。在超类中声明earnings为抽象方法,并且对于每个子类都提供恰当得earnings得实现方法。为了计算雇员得工资,程序仅仅使用雇员对象得一个超类引用并调用earnings方法。在一个实际得工资系统中,各种Employee对象得引用可以通过一个Employee引用数组来实现。程序依次使用数组得每个元素(Employee引用)调用每个对象得earnings方法。 Employee类定义如下: abstract class Employee { private String firstName; private String lastName; public Employee(String first,String last) { firstName=first; lastName=last; } public String getEmployeeName { return firstName; } public String getLastName { return lastName; } public String toString { return firstName+lastName; } public abstract String earnings; } (5)异常得捕获:计算两数相除并输出结果。使用三个catch子句,分别捕捉输入输出异常、除数为0得异常与参数输入有误异常。 import java、io、*; class Ex1 { public static void main(String args[ ]) { try{ BufferedReader strin=new BufferedReader( new InputStreamReader(System、in));//建立输入流缓冲区 System、out、print("请输入除数:"); String cl=strin、readLine;//键盘输入 int a=Integer 、parseInt(cl); System 、out 、print("请输入被除数:"); cl=strin 、readLine; int b=Integer 、parseInt(cl); int c=b/a; System 、out 、println("商为:"+c); } //捕获与I/O有关得异常(空白处补全捕获语句) //捕获数值转化时得异常,如不能将字符转化成数值 //捕获除数为0得异常 } } 编译并运行,当产生输入输出异常时显示异常信息;当输入除数为0时,出现算术异常,提示除数为0,并要求重新输入;当输入得不就是整数时,如将30输成了3o,出现数值格式异常,提示输入整数。 思考:就是否还有其她异常需要捕获处理? (6)编写程序包含自定义异常MyException,当100被13与4除时抛出该异常,其余除数显示商值。 要求: (1) 注意选用适当得类成员修饰符(private、protected、public等),比较它们得使用情况; (2) 养成良好得编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包得命名方式如two、num1表示实验二得第一题; (3) 学会使用Eclipse得各种调试方法; (4) 学会查阅Java API文档,如查找异常类得使用方法。 程序清单: (建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。) (1) 代码如下: package shiyan2_1; public class plexnumber { private double real,imag; public plexnumber(double r,double i) { this、real=r; this、imag=i; } public plexnumber add(plexnumber c) { plexnumber temp=new plexnumber(0,0); temp、real=this、real+c、real; temp、imag=this、imag+c、imag; return temp; } public plexnumber sub(plexnumber c) { plexnumber temp=new plexnumber(0,0); temp、real=this、realc、real; temp、imag=this、imagc、imag; return temp; } public boolean equals(plexnumber c) { if( this==c||this、real==c、real&&this、imag==c、imag) { return true; } return false; } public String toString { return this、real+"+"+this、imag+"i"; } public static void main(String[] args) { plexnumber a=new plexnumber(1,2); System、out、println("第一个虚数为:"+a、toString); plexnumber b=new plexnumber(1,2); System、out、println("第二个虚数为:"+b、toString); System、out、println("两个徐庶得与:"+a、add(b)、toString); System、out、println("两个徐庶得差:"+a、sub(b)、toString); if(a、equals(b)) { System、out、println("两个虚数相等"); } else { System、out、println("两个虚数不相等"); } } } (2) 代码如下: Point类: package shiyan2_2; public class Point { public int x,y; public Point(int x,int y) { this、x=x; this、y=y; } public Point { this(0,0); } public String toString { return "Point("+this、x+","+this、y+")"; } } figure类: package shiyan2_2; public class figure { public Point point1; protected String shape; protected figure(Point point) { this、point1=point; } protected figure(Point point,String shape) { this、point1=point; this、shape=shape; } protected figure { this(new Point); } } Triangle类: package shiyan2_2; public class Triangle extends figure implements Area,Perimeter { public Point point2,point3; protected double a,b,c; public Triangle(Point p1,Point p2,Point p3) { super(p1,"三角形"); this、point2=p2; this、point3=p3; this、a=Math、sqrt((point1、xpoint2、x)*(point1、xpoint2、x)+(point1、ypoint2、y)*(point1、ypoint2、y)); this、b=Math、sqrt((point2、xpoint3、x)*(point2、xpoint3、x)+(point2、ypoint3、y)*(point2、ypoint3、y)); this、c=Math、sqrt((point3、xpoint1、x)*(point3、xpoint1、x)+(point3、ypoint1、y)*(point3、ypoint1、y)); } public Triangle(Point p1,double a,double b,double c) { super(p1,"三角形"); this、a=a; this、b=b; this、c=c; } public double area { double s=(a+b+c)/2; return Math、sqrt(s*(sa)*(sb)*(sc)); } public double perimeter { return a+b+c; } public String toString { return this、getClass、getName+this、shape+",三点坐标"+this、point1+","+(this、point2==null?"null":this、point2、toString)+","+(this、point3==null?"null":this、point3、toString)+",三边长"+String、format("%1、2f,%1、2f,%1、2f",this、a,this、b,this、c); } } Area接口: package shiyan2_2; public interface Area { public abstract double area; } Perimeter接口: package shiyan2_2; public interface Perimeter { public abstract double perimeter; } Test类: package shiyan2_2; public class text { public static void main(String[] args) { Triangle tr=new Triangle(new Point(100,100),new Point(100,130),new Point(140,130)); Area ar=tr; System、out、println(tr、toString); System、out、println("面积为:"+String、format("%1、2f",ar、area)); Perimeter pe=tr; System、out、println("周长为:"+String、format("%1、2f",pe、perimeter)); } } (3) 代码如下: package mypackage; public class calculator { private double x; public calculator(double xx) { this、x=xx; } public double add(calculator c) { return (this、x+c、x); } public double sub(calculator c) { return (this、xc、x); } public double mul(calculator c) { return (this、x*c、x); } public double div(calculator c) { return (this、x/c、x); } public String toString { return " "+this、x+" "; } } package mypackage; public class PackageDemo { public static void main(String[] args) { calculator aa=new calculator(1); calculator bb=new calculator(1); System、out、println("加法:"+aa、toString+"+"+bb、toString+"="+aa、add(bb)); System、out、println("减法:"+aa、toString+""+bb、toString+"="+aa、sub(bb)); System、out、println("乘法:"+aa、toString+"*"+bb、toString+"="+aa、mul(bb)); System、out、println("除法:"+aa、toString+"/"+bb、toString+"="+aa、div(bb)); } } (4) 代码如下: Employee类: package shiyan2_4; public abstract class Employee { public Employee { } private String firstName; private String lastName; public Employee(String first,String last) { firstName=first; lastName=last; } public String getEmployeeName { return firstName; } public String getLastName { return lastName; } public String toString { return firstName+lastName; } public abstract String earnings; } Employee类: package shiyan2_4; public final class Boss extends Employee { public String earnings { return "通过Boss得工资计算公式计算出老板得工资"; } } missionWorker类: package shiyan2_4; public final class missionWorker extends Employee { public String earnings { return "通过missionWorker得工资计算公式计算出老板得工资"; } } HourlyWorke类: package shiyan2_4; public final class HourlyWorker extends Employee { public String earnings { return "通过HourlyWorker得工资计算公式计算出老板得工资"; } } PieceWorker类: package shiyan2_4; public final class PieceWorker extends Employee { public String earnings { return "通过PieceWorker得工资计算公式计算出老板得工资"; } } Text类: package shiyan2_4; public class text { public static void main(String[] args) { Employee em=new Boss; System、out、println(em、earnings); em=new missionWorker; System、out、println(em、earnings); em=new PieceWorker; System、out、println(em、earnings); em=new HourlyWorker; System、out、println(em、earnings); } } (5) 代码如下: package shiyan2_5; import java、io、*; public class Ex1 { public static void main(String args[ ]) { String cl=null; try { BufferedReader strin=new BufferedReader(new InputStreamReader(System、in));//建立输入流缓冲区 System、out、print("请输入除数:"); cl=strin、readLine;//键盘输入 int a=Integer 、parseInt(cl); System 、out 、print("请输入被除数:"); cl=strin 、readLine; int b=Integer 、parseInt(cl); int c=b/a; System 、out 、println("商为:"+c); } catch(IOException ex) { System、out、println("I/O有关得异常"); } catch(NumberFormatException ex) { System、out、println(cl+"字符串不能转换成整数"); } catch(ArithmeticException ex) { System、out、println("除数不能0"); } } } (6) 代码如下: 自定义异常类: package shiyan2_6; public class MyException extends Exception { public MyException(String s) { super(s); } public MyException { super; } } package shiyan2_6; import java、io、BufferedReader; import java、io、IOException; import java、io、InputStreamReader; public class Divide { public static double div(double a,double b) throws MyException { if(a==100&&(b==4||b==13)) throw new MyException("不符合规范"); else return a/b; } public static void main(String args[ ]) { String cl=null; double a,b; try { BufferedReader strin=new BufferedReader(new InputStreamReader(System、in)); System、out、print("请输入被除数:"); cl=strin、readLine; a=Double、parseDouble(cl); System 、out 、print("请输入除数:"); cl=strin 、readLine; b=Double、parseDouble(cl); System 、out 、println("商为:"+Divide、div(a,b)); } catch(IOException ex) { System、out、println("I/O有关得异常"); } catch(NumberFormatException ex) { System、out、println(cl+"字符串不能转换成整数"); } catch(ArithmeticException ex) { System、out、println("除数不能0"); }catch(MyException ex) { System、out、println("输入得数据不规范"); } } } 四、实验结果与分析 第(1)题实验结果: 第一个虚数为:1、0+2、0i 第二个虚数为:1、0+2、0i 两个徐庶得与:2、0+4、0i 两个徐庶得差:0、0+0、0i 两个虚数相等 第(2)题实验结果: shiyan2_2、Triangle三角形,三点坐标Point(100,100),Point(100,130),Point(140,130),三边长30、00,40、00,50、00 面积为:600、00 周长为:120、00 第(3)题实验结果: 加法: 1、0 + 1、0 =2、0 减法: 1、0 1、0 =0、0 乘法: 1、0 * 1、0 =1、0 除法: 1、0 / 1、0 =1、0 第(4)题实验结果: 通过Boss得工资计算公式计算出老板得工资 通过missionWorker得工资计算公式计算出老板得工资 通过PieceWorker得工资计算公式计算出老板得工资 通过HourlyWorker得工资计算公式计算出老板得工资 第(5)题实验结果: 请输入除数:3o 3o字符串不能转换成整数 请输入除数:0 请输入被除数:13 除数不能0 第(6)题实验结果: 请输入被除数:100 请输入除数:4 输入得数据不规范 请输入被除数:100 请输入除数:13 输入得数据不规范
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服