




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验项目名称:面向对象编实验学时:欢迎下载231514 /A203同组学生姓名:-实验地点:实验日期:4.13/4.15/4.20/4.22实验成绩:批改教师: 王倩倩 批改时间:、实验目的和要求( 1 ) 熟练掌握Java语言类定义的基本语法;( 2) 熟练掌握类成员的访问控制,对象建立的方法;( 3) 熟练掌握类构造方法、成员方法的定义和重载;( 4) 熟练掌握类继承、多态和抽象性;( 5) 熟练掌握接口的定义和实现方法;( 6) 掌握基本的异常处理方法;( 7) 调试程序要记录调试过程中出现的问题及解决办法;( 8) 编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经
2、验;( 9) 做完实验后给出本实验的实验报告。实 验仪器和设备奔腾以上计算机,Windows 操作系统,装有JDK1.7 和 Eclipse 软件。实 验过程( 1 ) 设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、字符串描述、比较是否相等等操作。( 2) 设计三角形类,继承图形抽象类,实现面积接口和周长接口,计算三角形面积和周长。( 3) 包的建立与使用:设计计算器类Calculator ,计算加、减、乘、除,并且打包为 mypackage 。观察源文件目录下是否生成了mypackage 文件夹,在该文件夹中是否有Calculate.class 文件。编辑Package
3、Demo.java ,保存在Calculator.java 同一目录下,引用计算器类的各方法显示计算结果。( 4) 编码实现多态在工资系统中的应用:给出一个根据雇员类型利用abstract 方法和多态性完成工资单计算的程序。Employee是抽象类,Employee的子类有Boss (每星期发给他固定工资,而不计工作时间)、 CommissionWorker (除基本工资外还根据销售额发放浮动工资)、PieceWorker (按其生产的产品数发放工资)、HourlyWorker (根据 工作时间长短发放工资)。该例的Employee 的每个子类都声明为final ,因为不需要再继承它们生成子类
4、。在主测试类Test 中测试各类雇员工资计算结果。提示:对所有雇员类型都使用earni ngs () 方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Employee 派出生的。在超类中声明earnings () 为抽象方法,并且对于每个子类都提供恰当的earni ngs () 的实现方法。为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引用并调用earni ngs () 方法。在一个实际的工资系统中,各种Employee 对象的引用可以通过一个Employee 引用数组来实现。程序依次使用数组的每个元素( Employee 引用 ) 调用每个对象的earnings() 方法
5、。Employee 类定义如下:abstract class Employeeprivate Stri ng 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 Stri ng toStri ng()retur n firstName+lastN
6、ame;public abstract String earnin gs();(5)果。使用三个常、除数为0 的异常和参数输入有误异常。import java.io.*;class Ex1public static void main(String args)tryBufferedReader stri n=new BufferedReader( new In putStreamReader(System.i n);异常的捕获:计算两数相除并输出结catch 子句,分别捕捉输入输出异建立输入流缓冲区System.out.pri nt ( ” 请输入除数:”) ;Stri ng cl=stri
7、n.readLi ne(); 键盘输入int a=ln teger .parse In t(cl);System .out .pri nt(请输入被除数:cl=stri n .readL in e();int b=ln teger .parse In t(cl);int c=b/a;System .out .println ( ”商为: "+c);/捕获与I/O有关的异常(空白处补全捕获语句)/捕获数值转化时的异常,如不能将字符转化成数值/捕获除数为0的异常编译弁运行,当产生输入输出异常时显示异常信息;当输入除数为0时,出现算术异常,提示除数为0,弁要求重新输入;当输入的不是整数时,
8、如将30输成了 30,出现数值格式异常,提示输入整数。思考:是否还有其他异常需要捕获处理?(6)编写程序包含自定义异常MyException ,当100被13和4除时抛出该异常,其余除数显示商值。要求:(1)注意选用适当的类成员修饰符( private、protected、public等 :),比较它们的 用情况;使(2)养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,包的 将每个程序打包命名方式如two. num1表示实验一的第一题;(3)学会使用Eclipse的各种调试方法;(4)学会查阅Java API文档,如查找异常类的使用方法。程序清单:(建议程序中适当添加注释信息,增强可
9、读性;较长程序可分栏书写,保证报告排版整洁美观。)(1)代码如下:package shiyan2_1;public class complex numberprivate double real , imag ;public complexnumber( double r, double i) this . real =r;this . imag =i;) public complex number add(complex number c)complex number temp= new complex number(0,0);temp. real =this . real +c. real
10、 ;temp. imag =this . imag +c. imag ;return temp;)public complex number sub(complex number c)complex number temp= new complex number(0,0);temp. real =this . real -c. real ;temp. imag =this . imag -c. imag ;return temp;public boolea n equals(complex number c)if ( this =c| this . real =c. real &&am
11、p;this . imag =c. imag) return true ;return false ;public String toString()return this . real +"+" +this . imag +"i" public static voidcomplex number a=main( Stri ng args)System.out .println( complexnew complex number(1,2);"+a.toStr in g();number b= System.out .println( Syst
12、em.new'COmpleX 数为number(1,2);out .println( System."第二个虚数为:out .println( if (a.equals(b)"两个徐庶的和:"+b.toStr in g();"+a.add(b).toStri ng()"+a.sub(b).toStri ng()System. out .println(else两个虚数相等“ );System. out .println(两个虚数不相等“ );(2) 代码如下:Point 类:package shiyan2_2;public class
13、Pointpublic int x, y;public Point( int x, int y)this . x=x;this . y=y;public Poi nt()this (0,0);public String toString() return "Point (” +this . x+"," +this . y+")"figure 类:package shiyan2_2;public class figurepublic Point point1 ;protected String shape ;protected figure(Po
14、 int point)this . point1 =point;protected figure(Po int poin t,Stri ng shape)this . point1 =point;this . shape =shape;protected figure()this ( new Point();Trian gle 类:package shiyan2_2;Area,Perimeterpublic class Trian gle exte nds figure impleme nts public Point point2 , point3 ;protected double a,
15、b, c;public Triangle(Point p1,Point p2,Point p3) super (p1," 三角形 ");this . point2 =p2;this . point3 =p3;this .a=Math. sqrt ( pointl t2 . y)*( Pointl . y- Point2.y);this .b=Math. sqrt ( poi nt2 t3 y)*(point2 . y- point3y);this .c=Math. sqrt ( poi nt3 t1 .y)*(point3 . y- pointl.y);.x- point2
16、.x)*(poi nt1.x- point2.x- point3 .x)*( poi nt2 .x- point3.x- point1 .x)*( poi nt3 .x- point1.x)+( point1.x)+( poi nt2.x)+( poi nt3.y- poin.y- poin.y- poindouble a, double b, double c)a)*(s-b)*(s-c);public Triangle(Point p1, super (p1,"三角形);this . a=a;this . b=b;this . c=c;public double area()do
17、uble s=( a+b+c)/2;return Math. sqrt (s*(s-public double perimeter。retur n a+b+c; public String toString()return this .getClass().getName()+this . point1 +”," +(this . point2 =null ?"null"this . shape +”,三点坐标:this . point2 .toString()+","+(th",三边长is . point3 =null ?"
18、;null":this . point3 .toString()+,this . a, this . b, this . c);"+String. format ( "%1.2f,%1.2f,%1.2f"Area 接 口 :package shiyan2_2;public in terface Area public abstract double area();Perimeter 接口:package shiyan2_2;public in terface Perimeterpublic abstract double perimeterTest 类:
19、package shiyan2_2;public class textpublic static void main( Str in g args)newTria ngle tr= new Tria ngle( new Poi nt(1OO,1OO),new Poi nt(100,130),Poi nt(140,130);Area ar=tr;System. out .println(tr.toString();System.out .println("面积为:"+String.format ("%1.2f",ar.area();Perimeter pe
20、=tr;System.out .println("周长为:"+String.format ( "%1.2f",pe.perimeter();(3) 代码如下:package mypackage;public class calculatorprivate 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 .
21、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 PackageDemo public static void main(String args) calculator aa= new calculator 。 )
22、;"="+aa.add(bb)"="+aa.sub(bb)"="+aa.mul(bb)"="+aa.div(bb);out .println( "加法 : "+" +bb.toStri ng()+ out .println("减法:"-"+bb.toStri ng()+ out .println("乘法:"*" +bb.toStri ng()+ out .println("除法:"/" +bb.t
23、oStri ng()+ calculator bb= new calculator 。 ) ; System."+aa.toStr in g()+System."+aa.toStr in g()+System."+aa.toStr in g()+System."+aa.toStr in g()+(4) 代码如下:Employee 类:package shiyan2_4;public abstract class Employee public Employee()privateStri ngfirstName ;privateStringlastName
24、 ;public Employee(String first,String last) firstName =first;lastName =last;public Stri ng getEmployeeName()return firstName ;public String getLastName()return lastName ;public String toString()return firstName +lastName ;public abstract Stri ng ear nin gs();Employee 类:package shiyan2_4;public final
25、 class Bossexte nds Employeepublic String ear nin gs()return "通过Boss的工资计算公式计算出老板的工资:Commissio nWorker 类:package shiyan2_4;public final class Commissio nWorkerexte nds Employeepublic String ear nin gs()return "通过CommissionWorker的工资计算公式计算出老板的工资HourlyWorke 类: package shiyan2_4;public final cl
26、ass HourlyWorker public String ear nin gs() return "通过 HourlyWorker PieceWorker 类: package shiyan2_4; public final class PieceWorker public String ear nin gs()exte nds Employee的工资计算公式计算出老板的工资exte nds Employeereturn”通过 PieceWorker的工资计算公式计算出老板的工资Text 类:package shiyan2_4;public class textpublic st
27、atic void main( Str in g args)Employee em= new Boss();System. out .println(em.earnings();em=new Commissi on Worker 。; 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
28、 java.io.*;public class Ex1 public static voidmai n( Stri ng args)Stri ng cl= n ull ;tryBufferedReader str in=new BufferedReader(newInputStreamReader(System. in ); / 建立输入流缓冲区System. out .print( " 请输入除数:") ;cl=strin.readLine();/ 键盘输入int a=ln teger . parse Int (cl);System . out .print("
29、请输入被除数:") ;cl=str in .readL in e();int b=ln teger . parse Int (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
30、)System. out .println("除数不能 0");(6)代码如下:自定义异常类:package shiyan2_6;public class MyExceptionexte nds Excepti onpublic MyExcepti on( Str ing s) super (s); public MyExcepti on() super ();package shiya n2_6;import java.io.BufferedReader;import java.i o.I OExcepti on;import java.i o.ln putStreamR
31、eader;public class Dividepublic static double div(double a,double b) throws MyExcepti onif(a=100&&(b=4|b=13) throw new MyException ("不符合规范 ” pelse return a/b;)public static void mai n( Stri ng args口)String cl=n ull;double a,b;tryBufferedReader stri n=new BufferedReader( newIn putStreamReader(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茶道美学活动策划方案
- 餐厅月团建活动方案
- 蹦床篮球组合活动方案
- 龙船漂移活动方案
- 鼓圈减压活动方案
- 焊接检验考试题及答案
- 韩语等级考试题及答案
- 广东地理考试题及答案
- 工业吊车考试题及答案
- 高中作文考试题及答案
- 小学生班干部竞选海报word模板
- (完整word版)理论力学答案(谢传峰版)
- 下肢深静脉血栓的护理查房PPT
- 中国产业结构与布局的历史演变
- GB/T 41697-2022康复辅助器具一般要求和试验方法
- GB/T 156-2007标准电压
- AM咨询I治理方法论
- 工程财务决算审计服务方案
- 自考英语考试真题及答案新版
- 净化实验室施工组织方案
- 110KV变电站负荷及短路电流计算及电气设备的选择及校验
评论
0/150
提交评论