




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验项目名称: 面向对象编 实验学时: 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(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。在主测试类Test中测试各类雇员工资计算结果。提示:对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Employee派出生的。在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引用并调用earnings()方法。在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。程序依次使用数组的每个元素(Employee引用)调用每个对象的earnings()方法。Employee类定义如下:abstract class Employeeprivate 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 Ex1public 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 complexnumber private double real,imag;public complexnumber(double r,double i)this.real=r;this.imag=i;public complexnumber add(complexnumber c)complexnumber temp=new complexnumber(0,0);temp.real=this.real+c.real;temp.imag=this.imag+c.imag;return temp;public complexnumber sub(complexnumber c)complexnumber temp=new complexnumber(0,0);temp.real=this.real-c.real;temp.imag=this.imag-c.imag;return temp;public boolean equals(complexnumber 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)complexnumber a=new complexnumber(1,2);System.out.println(第一个虚数为:+a.toString();complexnumber b=new complexnumber(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(两个虚数相等);elseSystem.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,Perimeterpublic 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.x-point2.x)*(point1.x-point2.x)+(point1.y-point2.y)*(point1.y-point2.y);this.b=Math.sqrt(point2.x-point3.x)*(point2.x-point3.x)+(point2.y-point3.y)*(point2.y-point3.y);this.c=Math.sqrt(point3.x-point1.x)*(point3.x-point1.x)+(point3.y-point1.y)*(point3.y-point1.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*(s-a)*(s-b)*(s-c);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 Perimeterpublic abstract double perimeter();Test类:package shiyan2_2;public class textpublic 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.x-c.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 PackageDemopublic 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 Employeepublic String earnings()return 通过Boss的工资计算公式计算出老板的工资;CommissionWorker类:package shiyan2_4;public final class CommissionWorker extends Employeepublic String earnings()return 通过CommissionWorker的工资计算公式计算出老板的工资;HourlyWorke类:package shiyan2_4;public final class HourlyWorker extends Employeepublic String earnings()return 通过HourlyWorker的工资计算公式计算出老板的工资;PieceWorker类:package shiyan2_4;public final class PieceWorker extends Employeepublic String earnings()return 通过PieceWorker的工资计算公式计算出老板的工资;Text类:package shiyan2_4;public class textpublic static void main(String args)Employee em=new Boss();System.out.println(em.earnings();em=new CommissionWorker();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 Exceptionpublic 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(请输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学写游记教学课件
- 分布式能源系统中生物质能源的生物质能发电设备市场应用策略报告2025
- 农作物种子管理工作存在的问题与优化措施
- 学习通课件到WPS的转换
- 学习注会app课件
- 不良资产处置行业市场潜力分析:2025年创新模式深度解读报告
- 2025年经济开发区行业当前发展现状及增长策略研究报告
- 个人养老金制度调整对新材料产业投资市场的机遇与挑战研究报告
- 2025年工业互联网行业当前竞争格局与未来发展趋势分析报告
- 学习安全知识培训总结课件
- 色素性皮肤病课件
- 《医用化学基础》教案
- GB/T 9969-2008工业产品使用说明书总则
- GB/T 3618-2006铝及铝合金花纹板
- GB 31645-2018食品安全国家标准胶原蛋白肽
- 防山体滑坡应急预案
- 江苏省社会组织网上办事系统-操作手册
- DB37-T 3079-2017特种设备事故隐患排查治理体系细则
- 2023版江西省乡镇卫生院街道社区卫生服务中心地址医疗机构名单(1744家)
- 各种隔离标识
- 钢质防火门窗项目商业计划书范文参考
评论
0/150
提交评论