1、实验面向对象编程工科楼A207实验项目名称: 面向对象编程 实验学时: 同组学生姓名: 郁佳慧 实验地点:_ 实验日期: 实验成绩:批改教师: 刘晶 批改时间:、实验目的和要求( 1)熟练掌握 Java 语言类定义的基本语法;( 2)熟练掌握类成员的访问控制,对象建立的方法;( 3)熟练掌握类构造方法、成员方法的定义和重载;( 4)熟练掌握类继承、多态和抽象性;(5)熟练掌握接口的定义和实现方法;(6)掌握基本的异常处理方法;(7)调试程序要记录调试过程中出现的问题及解决办法;(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经 验;( 9) 做完实验后给出本实验的实验
2、报告。二、实验仪器和设备奔腾以上计算机, Windows 操作系统,装有 JDK1.6 和 Eclipse4.2 软件。三、实验过程(1)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、比 较、字符串描述、比较是否相等等操作。( 2)包的建立与使用:设计计算器类 Calculator ,计算加、 减、乘、除和立方体体积,并且打包为mypackage。观察源文件目录下是否生成了 mypackage文件夹,在该文件夹中是否有 Calculate.class 文件。编辑 PackageDemo.java ,保存在 Calculator.java 同一目录下,引用计算器类的各方法显
3、示计算结果。( 3 )试编码实现简单的银行业务:处理简单帐户存取款、查询。编写银行帐户类BankAccount,包含数据成员: 余额(balanee )、利率(interest) ;操作方法:查询余额、 存款、取款、查询利率、设置利率。再编写主类 UseAccount ,包含 main() 方法,创建 BankAccount 类的对象,并完成相应操作。( 4)假定根据学生的 3 门学位课程的分数决定其是否可以拿到学位,对于本科生,如果 3 门课程的平均分数超过 60 分即表示通过, 而对于研究生, 则需要平均超过 80 分才 能够通过。根据上述要求,请完成以下 Java 类的设计:1 )设计一
4、个基类 Student 描述学生的共同特征。2) 设计一个描述本科生的类 Undergraduate ,该类继承并扩展 Student 类。3) 设计一个描述研究生的类 Graduate ,该类继承并扩展 Student 类。4) 设计一个测试类 StudentDemo,分别创建本科生和研究生这两个类的对象,并 输出相关信息。( 5)设计三角形类,继承图形抽象类,计算三角形面积和周长。( 6)试编码实现多态在工资系统中的应用: 给出一个根据雇员类型利用 abstract 方法和多态性完成工资单计算的程序。 Employee是抽象类,Employee的子类有Boss (每星期发给他固定工资,而不
5、计工作时间) 、CommissionWorker (除基本工资外还根据销售额发放浮动工资) 、PieceWorker (按其生产的产品数发放工资) 、HourlyWorker (根据 工作时间长短发放工资) 。该例的 Employee 的每个子类都声明为 final ,因为不需要再Test 中测试各类雇员工资计算结果。earnings() 方法,但每个人挣的工资按他所属的雇员Employee 派出生的。在超类中声明 earnings() 为抽象方法,并且对于每个子类都提供恰当的 earnings() 的实现方法。为了计算雇员的工资, 程序仅仅使用雇员对象的一个超类引用并调用 earnings(
6、) 方法。在一个实际的工资系统中, 各种 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()re
7、turn firstName;public String getLastName()return lastName;public String toString()return firstName+lastName;public abstract String earnings();( 7)设计圆柱体类和圆椎体类, 继承圆类 Circle 并实现 Volume 接口, 计算表面积和体积。 (8)异常的捕获:计算两数相除并输出结果。使用三个 catch 子句,分别捕捉输入输出异 常、除数为 0 的异常和参数输入有误异常。import java.io.*;class Ex1public stati
8、c 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
9、 .out .println( 商为: +c);/ 捕获与 I/O 有关的异常(空白处补全捕获语句)/ 捕获数值转化时的异常,如不能将字符转化成数值/ 捕获除数为 0 的异常编译并运行,当产生输入输出异常时显示异常信息;当输入除数为 0 时,出现算术异常,提示除数为 0,并要求重新输入;当输入的不是整数时,如将 30 输成了 3o ,出现数值格式异常,提示输入整数。(9)编写程序包含自定义异常 MyException ,当 100 被 13 和 4 除时抛出该异常,其余除数 显示商值。要求:(1)注意选用适当的类成员修饰符( private 、 protected 、 public 等 用情况
10、;),比较它们的使(2)养成良好的编程习惯, 严格按照命名规则为包、 类及类成员命名, 包的命名方式如 two.num1 表示实验二的第一题;将每个程序打包,(3)学会使用 Eclipse 的各种调试方法;(4)学会查阅 Java API 文档,如查找异常类的使用方法。程序清单:(建议程序中适当添加注释信息, 增强可读性; 较长程序可分栏书写, 保证报告排版整洁美 观。)(实验二程序清单续 1)(1)public class fushu double x;double y;public fushu(double x1,double y1)x=x1;y=y1;public fushu()x=0;
11、y=0;public fushu fushujia(fushu c1,fushu c2)fushu c=new fushu();c.x=c1.x+c2.x;c.y=c1.y+c2.y;return c;public fushu fushujianfa(fushu c1,fushu c2) fushu c=new fushu();c.x=c1.x-c2.x;c.y=c1.y-c2.y;return c;public String fushubijiao(fushu c1,fushu c2) double x=c1.x*c1.x+c1.y*c1.y;double y=c2.x*c2.x+c2.y*
12、c2.y;if(xy)return c1c2;elseif(x=y) return c1=c2;elsereturn c1=0)return (x+y+i);elsey=-y;return (x+-+y+i); public boolean fushuxd(fushu c1,fushu c2) boolean f=true; if(c1.x=c2.x&c1.y=c2.y) return f;elsef=false; return f;public class fushutest public static void main(String args)fushu c1=new fushu(3.0
13、,4.0);fushu c2=new fushu(4.0,5.0);fushu c=new fushu();System.out.println( c.fushujia(c1, c2);System.out.println( c.fushujianfa(c1, c2);System.out.println( c.fushubijiao(c1, c2);System.out.println( c1.toString();System.out.println( c2.toString(); if(c.fushuxd(c1,c2)System.out.println( 相等 ); elseSyste
14、m.out.println( 不相等 );(2)public class Calculator float i;float j;public Calculator jia( Calculator x,Calculator y)Calculator c=new Calculator(); c.i=x.i+y.i; return c;public Calculator jian(Calculator x,Calculator y)Calculator c=new Calculator(); c.i=x.i-y.i; return c;public Calculator cheng(Calculat
15、or x,Calculator y)Calculator c=new Calculator(); c.i=x.i*y.i;return c;public Calculator chu(Calculator x,Calculator y)Calculator c=new Calculator();c.i=x.i;c.i=c.i/y.i;return c;public Calculator lfh()Calculator c=new Calculator();c.i=i*i*i;return c;public float fanhui(Calculator c)return c.i;public
16、class PackageDemo public static void main(String args)Calculator i=new Calculator();Calculator y=new Calculator();i.i=3;y.i=4;Calculator c=new Calculator();System.out.println(c.fanhui(c.jia(i, y);System.out.println(c.fanhui(c.jian(i,y);System.out.println(c.fanhui(c.cheng(i,y);System.out.println(c.fa
17、nhui(c.chu(i,y);System.out.println(i.fanhui(i.lfh();System.out.println(i.fanhui(y.lfh();c=c.cheng(c.jia(i,y),c);System.out.println(c.fanhui(c);(3)import java.util.*;public class UseAccount public static void main(String args) Scanner reader=new Scanner(System.in); BankAccount c=new BankAccount(); in
18、t i;float s;boolean t=true;System.out.println(1.System.out.println(2.System.out.println(3.System.out.println(4.System.out.println(5.System.out.println(6. while(t) System.out.print(i=reader.nextInt();switch(i)case 1 : c.yue(c);break;case 2 : System.out.print(s=reader.nextFloat(); c.cunqian(s);break;查
19、询余额 ); 存钱 ); 取钱 );设置利率 ); 查询利率 ); 结束退出 );请输入要进行的操作编号 :)请输入存入金额: );case 3:System.out.print( 请输入取出金额: );s=reader.nextFloat();if(sc.balance)System.out.println( 余额不足 );elsec.quqian(s);break;case 4:System.out.print( 请输入利率: );s=reader.nextFloat();c.lilu(s);break;case 5:c.sclilu();break;case 6:break;if(i=6
20、)break;/*c.interest=reader.nextFloat();while(t) String k;k=reader.nextLine();if(k.equals( 查询余额 )c.yue(c);else if(k.equals( 存钱 )s=reader.nextFloat();c.cunqian(s);else if(k.equals( 取钱 )s=reader.nextFloat();c.quqian(s);else if(k.equals( 查询利率 )c.sclilu();else if(k.equals( 结束 ) break;c.yue(c);*/public cl
21、ass BankAccount static double balance=0,interest=0; public static void yue(BankAccount x) System.out.println( 余额为 +balance+ 元 ); public static void cunqian( double i) balance=balance+i;public static void quqian(double i) balance=balance-i;public static void lilu(double i)interest=i;public static voi
22、d sclilu()System.out.println( 利率为 +interest*100+%); (4)class Student float i,j, k;float s;public void Student(Student c) s=(i+j+k)/3; if(s60) System.out.print( 可以毕业 );elseSystem.out.println( 不合格 );class Graduate extends Student public void Graduate(Student c) if( c.s80)System.out.println( 研究生 );clas
23、s Undergraduate extends Student public void Undergraduate(Student c) if( c.s=60) System.out.println( 本科生 );import java.util.*;public class StudentDemo public static void main(String args) Scanner reader=new Scanner(System.in); Student c=new Student();Graduate k=new Graduate(); Undergraduate m=new Un
24、dergraduate();c.i=reader.nextFloat(); c.j=reader.nextFloat();c.k=reader.nextFloat(); c.Student(c);k.Graduate(c); m.Undergraduate(c);(5)import java.util.*; abstract class jicheng int i, j, k;abstract double mianzhi(); abstract int zhouchang();class jisuan extends jichengvoid jicheng(int i,int j,int k
25、)super.i=i;super.j=j;super.k=k;double mianzhi()double s;float p;p=(i+j+k)/2;s=Math.sqrt(p*(p-i)*(p-j)*(p-k);return s;int zhouchang()return i+j+k;public class jichengTest public static void main(String args)jisuan c=new jisuan();c.jicheng(3, 4, 5);System.out.println(c.zhouchang(); System.out.println(
26、c.mianzhi();(6)class Boss extends Employeeint s;public Boss(String first, String last,int i)super(first, last);s= i;public String earnings() return (super.toString()+String.valueOf(s);class CommissionWorker extends Employeeint i, j, k;public CommissionWorker(String first, String last,int i,int j,int
27、 k) super(first, last);this.i=i;this.j=j;this.k=k;public String earnings() return (super.toString()+String.valueOf(i+j*k);class HourlyWorker extends Employeeint i, j, k;public HourlyWorker(String first, String last,int i,int j,int k) super(first, last);this.i=i;this.j=j;this.k=k;public String earnin
28、gs() return (super.toString()+String.valueOf(i+j*k);class PieceWorker extends Employeeint i, j, k;public PieceWorker(String first, String last,int i,int j,int k) super(first, last);this.i=i;this.j=j;this.k=k;public String earnings() return (super.toString()+String.valueOf(i+j*k);import java.util.*;a
29、bstract 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();public class Test public static void main(String args)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1