实验面向对象编程.docx

上传人:b****5 文档编号:4622270 上传时间:2022-12-07 格式:DOCX 页数:22 大小:31.92KB
下载 相关 举报
实验面向对象编程.docx_第1页
第1页 / 共22页
实验面向对象编程.docx_第2页
第2页 / 共22页
实验面向对象编程.docx_第3页
第3页 / 共22页
实验面向对象编程.docx_第4页
第4页 / 共22页
实验面向对象编程.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

实验面向对象编程.docx

《实验面向对象编程.docx》由会员分享,可在线阅读,更多相关《实验面向对象编程.docx(22页珍藏版)》请在冰豆网上搜索。

实验面向对象编程.docx

实验面向对象编程

工科楼A207

实验项目名称:

面向对象编程实验学时:

同组学生姓名:

郁佳慧实验地点:

_实验日期:

实验成绩:

批改教师:

刘晶批改时间:

、实验目的和要求

(1)熟练掌握Java语言类定义的基本语法;

(2)熟练掌握类成员的访问控制,对象建立的方法;

(3)熟练掌握类构造方法、成员方法的定义和重载;

(4)熟练掌握类继承、多态和抽象性;

(5)熟练掌握接口的定义和实现方法;

(6)掌握基本的异常处理方法;

(7)调试程序要记录调试过程中出现的问题及解决办法;

(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;

(9)做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔腾以上计算机,Windows操作系统,装有JDK1.6和Eclipse4.2软件。

三、实验过程

(1)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、比较、字符串描述、比较是否相等等操作。

(2)包的建立与使用:

设计计算器类Calculator,计算加、减、乘、除和立方体体积,

并且打包为mypackage。

观察源文件目录下是否生成了mypackage文件夹,在该文件夹

中是否有Calculate.class文件。

编辑PackageDemo.java,保存在Calculator.java同一目录下,引用计算器类的各方法显示计算结果。

(3)试编码实现简单的银行业务:

处理简单帐户存取款、查询。

编写银行帐户类

BankAccount,包含数据成员:

余额(balanee)、利率(interest);操作方法:

查询余额、存款、取款、查询利率、设置利率。

再编写主类UseAccount,包含main()方法,创建BankAccount类的对象,并完成相应操作。

(4)假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如

果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。

根据上述要求,请完成以下Java类的设计:

1)设计一个基类Student描述学生的共同特征。

2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。

3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。

4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。

(5)设计三角形类,继承图形抽象类,计算三角形面积和周长。

(6)试编码实现多态在工资系统中的应用:

给出一个根据雇员类型利用abstract方法

和多态性完成工资单计算的程序。

Employee是抽象类,Employee的子类有Boss(每星

期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售

额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。

该例的Employee的每个子类都声明为final,因为不需要再

Test中测试各类雇员工资计算结果。

earnings()方法,但每个人挣的工资按他所属的雇员

Employee派出生的。

在超类中声明earnings()为抽象

方法,并且对于每个子类都提供恰当的earnings()的实现方法。

为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引用并调用earnings()方法。

在一个实际的工资系

统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。

程序依次使

用数组的每个元素(Employee引用)调用每个对象的earnings()方法。

Employee类定义如下:

abstractclassEmployee

{

privateStringfirstName;

privateStringlastName;

publicEmployee(Stringfirst,Stringlast)

{

firstName=first;

lastName=last;

}

publicStringgetEmployeeName()

{

returnfirstName;

}

publicStringgetLastName()

{

returnlastName;

}

publicStringtoString()

{

returnfirstName+lastName;

}

publicabstractStringearnings();

}

(7)设计圆柱体类和圆椎体类,继承圆类Circle并实现Volume接口,计算表面积和体积。

(8)异常的捕获:

计算两数相除并输出结果。

使用三个catch子句,分别捕捉输入输出异常、除数为0的异常和参数输入有误异常。

importjava.io.*;

classEx1

publicstaticvoidmain(Stringargs[]){try{BufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in));//建立输入流缓冲区System.out.print("请输入除数:

");

Stringcl=strin.readLine();//键盘输入inta=Integer.parseInt(cl);

System.out.print("请输入被除数:

");cl=strin.readLine();

intb=Integer.parseInt(cl);

intc=b/a;

System.out.println("商为:

"+c);

}

//捕获与I/O有关的异常(空白处补全捕获语句)

//捕获数值转化时的异常,如不能将字符转化成数值

//捕获除数为0的异常

}

}

编译并运行,当产生输入输出异常时显示异常信息;当输入除数为0时,出现算术异常,提

示除数为0,并要求重新输入;当输入的不是整数时,如将30输成了3o,出现数值格式异

常,提示输入整数。

(9)编写程序包含自定义异常MyException,当100被13和4除时抛出该异常,其余除数显示商值。

要求:

(1)

注意选用适当的类成员修饰符(private、protected、public等用情况;

),比较它们的使

(2)

养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,包的命名方式如two.num1表示实验二的第一题;

将每个程序打包,

(3)

学会使用Eclipse的各种调试方法;

(4)

学会查阅JavaAPI文档,如查找异常类的使用方法。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。

(实验二程序清单续1)

(1)

publicclassfushu{

doublex;

doubley;

publicfushu(doublex1,doubley1)

{

x=x1;

y=y1;

}

publicfushu()

{x=0;

y=0;

}

publicfushufushujia(fushuc1,fushuc2)

{

fushuc=newfushu();

c.x=c1.x+c2.x;

c.y=c1.y+c2.y;

returnc;

}

publicfushufushujianfa(fushuc1,fushuc2){

fushuc=newfushu();

c.x=c1.x-c2.x;

c.y=c1.y-c2.y;

returnc;

}

publicStringfushubijiao(fushuc1,fushuc2){

doublex=c1.x*c1.x+c1.y*c1.y;

doubley=c2.x*c2.x+c2.y*c2.y;

if(x>y)

return"c1>c2";

else

if(x==y)return"c1=c2";

else

return"c1

}

publicStringtoString()

{

if(y>=0)

return(x+"+"+y+"i");

else

{

y=-y;

return(x+"-"+y+"i");}

}

publicbooleanfushuxd(fushuc1,fushuc2){

booleanf=true;if(c1.x==c2.x&&c1.y==c2.y)returnf;

else

f=false;returnf;

}

}

publicclassfushutest{

publicstaticvoidmain(String[]args)

{

fushuc1=newfushu(3.0,4.0);

fushuc2=newfushu(4.0,5.0);

fushuc=newfushu();

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("相等");else

System.out.println("不相等");

}

}

(2)

publicclassCalculator{

floati;

floatj;

publicCalculatorjia(Calculatorx,Calculatory)

Calculatorc=newCalculator();c.i=x.i+y.i;returnc;

}

publicCalculatorjian(Calculatorx,Calculatory)

{

Calculatorc=newCalculator();c.i=x.i-y.i;returnc;

}

publicCalculatorcheng(Calculatorx,Calculatory)

{

Calculatorc=newCalculator();c.i=x.i*y.i;

returnc;

}

publicCalculatorchu(Calculatorx,Calculatory)

{

Calculatorc=newCalculator();

c.i=x.i;

c.i=c.i/y.i;

returnc;

}

publicCalculatorlfh()

{

Calculatorc=newCalculator();

c.i=i*i*i;

returnc;

}

publicfloatfanhui(Calculatorc)

{

returnc.i;

}

}

publicclassPackageDemo{

publicstaticvoidmain(String[]args)

{

Calculatori=newCalculator();

Calculatory=newCalculator();

i.i=3;

y.i=4;

Calculatorc=newCalculator();

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.fanhui(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)

importjava.util.*;

publicclassUseAccount{

publicstaticvoidmain(String[]args){Scannerreader=newScanner(System.in);BankAccountc=newBankAccount();inti;

floats;

booleant=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)

{

case1:

c.yue(c);break;

case2:

{

System.out.print("

s=reader.nextFloat();c.cunqian(s);

break;

查询余额");存钱");取钱");

设置利率");查询利率");结束退出");

请输入要进行的操作编号:

")

请输入存入金额:

");

 

}

case3:

{

System.out.print("请输入取出金额:

");

s=reader.nextFloat();

if(s>c.balance)

System.out.println("余额不足");

else

c.quqian(s);

break;

}

case4:

{

System.out.print("请输入利率:

");

s=reader.nextFloat();

c.lilu(s);

break;

}

case5:

{

c.sclilu();

break;

}

case6:

break;

}

if(i==6)

break;

}

/*c.interest=reader.nextFloat();

while(t)

{Stringk;

k=reader.nextLine();

if(k.equals("查询余额"))

c.yue(c);

elseif(k.equals("存钱"))

{

s=reader.nextFloat();

c.cunqian(s);

}

elseif(k.equals("取钱"))

{

s=reader.nextFloat();

c.quqian(s);

}

elseif(k.equals("查询利率"))

{

c.sclilu();

}

elseif(k.equals("结束"))break;

}

c.yue(c);

*/

}

}

publicclassBankAccount{staticdoublebalance=0,interest=0;publicstaticvoidyue(BankAccountx){

System.out.println("余额为"+balance+"元");}

publicstaticvoidcunqian(doublei)

{balance=balance+i;

}

publicstaticvoidquqian(doublei)

{balance=balance-i;

}

publicstaticvoidlilu(doublei)

{

interest=i;

}

publicstaticvoidsclilu()

{

System.out.println("利率为"+interest*100+"%");}

}

(4)

classStudent{

floati,j,k;

floats;

publicvoidStudent(Studentc)

{s=(i+j+k)/3;if(s>60){

System.out.print("可以毕业");

}

else

System.out.println("不合格");

}

}

classGraduateextendsStudent{publicvoidGraduate(Studentc){

if(c.s>80)

System.out.println("研究生");

}

}

classUndergraduateextendsStudent{publicvoidUndergraduate(Studentc){

if(c.s<=80&&c.s>=60)System.out.println("本科生");

}

}

importjava.util.*;

publicclassStudentDemo{

publicstaticvoidmain(String[]args)

{Scannerreader=newScanner(System.in);Studentc=newStudent();

Graduatek=newGraduate();Undergraduatem=newUndergraduate();

c.i=reader.nextFloat();c.j=reader.nextFloat();

c.k=reader.nextFloat();c.Student(c);

k.Graduate(c);m.Undergraduate(c);

}

}

(5)

importjava.util.*;abstractclassjicheng{

inti,j,k;

abstractdoublemianzhi();abstractintzhouchang();

classjisuanextendsjicheng

{

voidjicheng(inti,intj,intk)

{

super.i=i;

super.j=j;

super.k=k;

}

doublemianzhi()

{

doubles;

floatp;

p=(i+j+k)/2;

s=Math.sqrt(p*(p-i)*(p-j)*(p-k));

returns;

}

intzhouchang()

{

returni+j+k;

}

}

publicclassjichengTest{

publicstaticvoidmain(String[]args)

{

jisuanc=newjisuan();

c.jicheng(3,4,5);

System.out.println(c.zhouchang());System.out.println(c.mianzhi());

}

}

(6)

classBossextendsEmployee{

ints;

publicBoss(Stringfirst,Stringlast,inti)

{

super(first,last);

s=i;

}

publicStringearnings(){

return(super.toString()+String.valueOf(s));

}

classCommissionWorkerextendsEmployee{

inti,j,k;

publicCommissionWorker(Stringfirst,Stringlast,inti,intj,intk){super(first,last);

this.i=i;this.j=j;this.k=k;

}

publicStringearnings(){

return(super.toString()+String.valueOf(i+j*k));

}

}

classHourlyWorkerextendsEmployee{

inti,j,k;

publicHourlyWorker(Stringfirst,Stringlast,inti,intj,intk){super(first,last);

this.i=i;this.j=j;this.k=k;

}

publicStringearnings(){

return(super.toString()+String.valueOf(i+j*k));

}

}

classPieceWorkerextendsEmployee{

inti,j,k;

publicPieceWorker(Stringfirst,Stringlast,inti,intj,intk){super(first,last);

this.i=i;this.j=j;this.k=k;

}

publicStringearnings(){

return(super.toString()+String.valueOf(i+j*k));

}

}

importjava.util.*;

abstractclassEmployee

{

privateStringfirstName;privateStringlastName;

publicEmployee(Stringfirst,Stringlast)

{firstName=first;lastName=last;

}

publicStringgetEmployeeName()

{returnfirstName;

}

publicStringgetLastName()

{

returnlastName;

}

publicStringtoString()

{

returnfirstName+lastName;

}

publicabstractStringearnings();

}

publicclassTest{

publicstaticvoidmain(String[]args)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1