java实验2
更新时间:2023-11-05 22:15:01 阅读量: 教育文库 文档下载
实验项目名称: 面向对象编 实验学时: 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 Employee {
private String firstName; private String lastName;
public Employee(String first,String last) {
firstName=first; lastName=last; }
public String getEmployeeName() {
returnfirstName; }
public String getLastName() {
returnlastName; }
public String toString() {
returnfirstName+lastName; }
public abstract String earnings(); }
(5)异常的捕获:计算两数相除并输出结果。使用三个catch子句,分别捕捉输入输出异常、除数为0的异常和参数输入有误异常。 import java.io.*; class Ex1 {
public static void main(String args[ ]) { try{
BufferedReaderstrin=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(\商为:\ }
//捕获与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; publicclasscomplexnumber {
privatedoublereal,imag;
publiccomplexnumber(doubler,doublei) { }
publiccomplexnumber add(complexnumber c) { }
publiccomplexnumber sub(complexnumber c) {
complexnumber temp=newcomplexnumber(0,0); temp.real=this.real+c.real; temp.imag=this.imag+c.imag; return temp; this.real=r; this.imag=i;
}
}
complexnumber temp=newcomplexnumber(0,0); temp.real=this.real-c.real; temp.imag=this.imag-c.imag; return temp;
publicboolean equals(complexnumber c) { }
public String toString() { }
publicstaticvoid main(String[] args) { }
complexnumber a=newcomplexnumber(1,2);
System.out.println(\第一个虚数为:\+a.toString()); complexnumber b=newcomplexnumber(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)) { } else { }
System.out.println(\两个虚数不相等\); System.out.println(\两个虚数相等\); returnthis.real+\+this.imag+\;
if(this==c||this.real==c.real&&this.imag==c.imag) { }
returnfalse;
returntrue;
(2) 代码如下: Point类:
package shiyan2_2; publicclass Point {
publicintx,y;
public Point(intx,int y) {
正在阅读:
java实验211-05
周国运版51单片机课后习题答案10-19
继续教育先进工作者事迹材料04-20
售后专员岗位职责108-11
第一单元青春时光 第二课青春的心弦05-10
MOTOTRBO_System_Planner_1.6a04-07
市场专员岗位职责02-25
2012学年三年级数学第一学期期末检测题及答案 - 图文05-10
消防灭火实操演练方案讲解08-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实验
- java
- 浙江省金华市曙光中学2017-2018学年高一上学期期末考试英语试题
- 国际贸易实务习题集2011
- 高中生物专题5DNA和蛋白质技术课题3血红蛋白的提取和分离练习新人教版选修1
- 人教版二年级下册数学第一单元测试卷
- 马克思盘整理
- 2019年中考物理试题分类汇编 - 简单机械计算专题(word版含答案)
- 南昌工程学院英语水平考试样卷
- 2006年第23届全国中学生物理竞赛预赛试卷
- 电工复习题-选择
- 《诸葛神算秘诀》
- 汽车线束及接插件检测
- 生药学知识点总结-强力推荐
- 西交16年5月清考《环境修复原理与技术》作业考核试题(标准答案)
- 清华大学工程热力学思考题答案
- 楞严咒回向文
- 高钾血症深度学习 总结 - 图文
- 电大心理学平时作业及答案1 - 4
- 万科A获利能力分析
- 发展学前教育的重要意义
- 古井贡酒-财务分析报告