上 海 开 放 大 学
学生实验报告
分校(站)
专 业
入学年级
学 号
姓 名
课 程 Java程序基础
实验名称 实验3(面向对象综合实验)
实验指导教师
实验日期: 年 月 日
说明:
- 上交时,统一文件名:分校+学号+姓名+Java程序基础(实验报告3).doc
- 独立自主地完成实验。
第一部分 类的定义及使用(10分)
实验名称: 类的定义及使用
使用主要设备: Windows 操作系统、PC计算机、JDK、Eclipse
实验目的: 1、学习类的一般结构
2、学习类的成员变量、成员方法的声明
3、学习类的实例的创建 (参考实验指导22、23、24)
一、实验要求
- 利用Eclipse创建一个新的项目Experiment3,本实验之后的所有源文件都在该项目中。
- 创建一个包含主方法的MyObject类(MyObject.java)文件。
- 定义一个StudentA类,类成员变量包括:姓名(name)、年龄(age 整形)、语文成绩(chinese, 单精度)、数学成绩(math,单精度)、英语成绩(english,单精度)
- 类成员方法包括:
- 计算各门功课的总成绩的方法 (total ) ;
- 计算各门功课的平均成绩的方法 ( average ) ;
- 设置各个类成员变量的方法(setStudent )
- 定义方MyObject类的主方法,按照如下值分别创建Student类对象s1、s2和s3
姓名 | 年龄 | 语文成绩 | 数学成绩 | 英语成绩 | |
s1 | 你的姓名 | 你的年龄 | 80 | 85 | 90 |
s2 | Jack | 20 | 78 | 87 | 87 |
s3 | Mike | 25 | 80 | 89 | 98 |
- 计算s1、s2、s3的总成绩及平均成绩,并分别打印,按照如下值,分别创建类对象s1、s2、s3
- 比较s1、s2、s3的总成绩的最大值,并打印总成绩最大的人的姓名及成绩。
二、实验记录
记录你的编写的源程序。
记录程序的运行结果。
第二部分 类的私有成员及构造方法(10分)
实验名称: 类的私有成员和公有成员
使用主要设备: Windows操作系统 、PC计算机、JDK、Eclipse
实验目的: 掌握类成员变量的控制符;掌握类的构造方法的定义及应用
(参考实验指导22、23、24)
一、实验要求
- 在Experiments3项目中创建相关java文件,完成如下任务。
- 编写一个Java应用程序(Person.java),在程序中定义一个Person类的成员变量如下
- 姓名(name 字符串型,公有变量)
- 年龄(age 整形,私有变量),并且范围在5~20之间
- Person类的成员方法:
- 设置age的方法(setAge),要求能判断年龄设置的合理性,设置成功返回true,否则返回false,并提出错误提示。
- 获取age信息的方法(getAge)
- 构造方法1(无参数),构造方法能打印“Person()方法被调用”
- 构造方法2(接收姓名信息,设置姓名属性)
- 构造方法3(接收姓名信息、年龄信息,分别设置姓名属性、年龄属性) ,要求该构造构函数调用构造函数2 (提示:使用this )
- 创建类App,包含主方法,按照如下值分别创建Person类对象s1、s2、s3
姓名 | 年龄 | |
s1 | 你的姓名 | 19 |
s2 | 你的姓名 | 25 (如果报错,修改为18) |
s3 | 你的姓名 | 16 |
- 利用构造方法1创建对象s1;利用构造方法2创建对象s2;利用构造方法3创建对象s3
- 分别打印s1、s2、s3的信息。
二、实验记录
1、记录你编写的源程序。
2、记录你的程序运行结果(包括报错结果)。
三、实验思考
1、打印出的s1、s2、s3的信息有什么不同,为什么?
第三部分 方法的重载(10分)
实验名称: 方法的重载
使用主要设备: Windows操作系统 、PC计算机、JDK、Eclipse
实验目的: 掌握方法重载的定义;掌握利用重载实现简单应用
(参考实验指导 实验29)
一、实验要求
- 在Experiments3项目中创建相关java文件,完成如下任务。
- 编写一个Java应用程序(MyPlus.java),在程序中定义一个MyPlus类,该类有三个plus()方法,分别对实现2个整数相加,3个整数相加和4个整数相加。要求使用方法重载实现 实现“2个整数相加”和“3个整数相加 ”的方法。并且要求实现的方法尽可能采用方法调用的形式,例如 “3个整数相加”的方法 中需要调用 “2个整数相加 的方法”。
- 源程序模板如下所示。(可参考实验指导书)。
二、实验记录
1、记录你编写的源程序。
2、记录你的程序运行结果。
第四部分 类的继承2(10分)
实验名称: 类的继承2
使用主要设备: Windows操作系统 、PC计算机、JDK、Eclipse3.7
实验目的: 掌握类继承的语法;使用类继承解决一些简单应用问题
(参考实验指导33)
一、实验要求
- 在Experiments3项目中创建相关java文件,完成如下任务。
- 创建一个C2类(C2.java)文件,包含主方法。
- 定义一个PersonB类
- 类成员变量包括:姓名(name,字符串型),年龄(age,整形)
- 成员方法:
- 构造方法1,无参数,打印无参数的构造方法被调用;
- 构造方法2,接受用输入的姓名信息,设置对象姓名属性;
- 打印信息方法(introduce),打印对象的信息
- 定一个PersonB类的子类StudentB类
- 新的子类成员变量:部门(department, 字符串型)
- 定义StudentB的构造方法,能接收 姓名、年龄、部门信息,并调用父类的构造方法,完成对对象信息的设置。
- 定义C2类的主方法内容,利用构造方法创建StudentB类的两个实例s1,s2,信息如下表所示。调用introduce方法,打印出两个对象的信息。
姓名 | 年龄 | 部门 | |
s1 | 你的姓名 | 21 | 你就读学校的名称 |
s2 | 你的姓名 | 22 | 软件工程 |
二、实验记录
- 记录你的编写的源程序。
- 记录程序的运行结果。
三、实验思考
- 对象s1,s2调用introduce方法能打印出部门信息吗,为什么? 怎样修改程序打印出部门信息。
第五部分 方法的覆盖(10分)
实验名称: 方法的覆盖(参考实验指导书 实验34)
使用主要设备: Windows操作系统 、PC计算机、JDK、Eclipse
实验目的: 掌握类继承的基本语法;掌握子类方法覆盖父类方法;
理解多态的概念。
一、实验要求
- 在Experiments3项目中创建相关java文件,完成如下任务。
- 编写一个Java应用程序(Overrding.java),在程序中定一个Animal类,它拥有play()方法能打印出”我是 动物,我会 很多本领”。
- 定义Animal类的子类Bird类,在子类中覆盖父类的play()方法,打印出”我是鸟类,我会飞翔”。
- 定义Animal类的子类Fish类,在子类中覆盖父类的play()方法,打印出“我是鱼类,我会游泳”。
- 创建Overrding类的主方法,创建Animal的实例s1, Bird类的实例s2, Fish类的实例s3,分别打印
- 源程序模板如下(可参考实验指导书)。
二、实验记录
1.记录你编写的源程序。
2.记录程序的运行结果
三、思考题
在实验程序Overridding的基础上,补充如下程序片段:
Animal a1=new Bird();
Animal a2=new Fish();
a1.play();
a2.play();
程序执行后,打印结果是什么?为什么?
第六部分 抽象类的定义及继承(10分)
实验名称: 抽象类的定义及继承
使用主要设备: Windows操作系统 、PC计算机、JDK、Eclipse
实验目的: 掌握抽象类的语法;掌握抽象类的子类实现方法;
(参考书指导书实验35)
一、实验要求
- 在Experiments3项目中创建相关java文件,完成如下任务。
- 编写一个Java应用程序(Chouxiang.java),完成如下类的定义及管理。
- 在程序中定义一个抽象类Shape,它有两个抽象方法如下,如下图的程序模板。
- 创建Shape类的子类矩形类Rectangle,自定义其成员属性,创建该类的构造方法,实现shape类中的方法。
- 创建Shape类的子类圆型类Circle,自定义其成员属性,创建该类的构造方法,完成实现shape类中的方法。
- 在Chouxiang类主方法中创建矩形的实例 和 圆形的实例,并打印它们的面积信息。
- 源程序模板如下(可参考实验指导书)。
二、实验记录
1、记录你编写的源程序。
2、记录你的程序运行结果。
第七部分 包的定义及使用(10分)
实验名称: 包的定义及使用
使用主要设备: Windows操作系统 、PC计算机、JDK、Eclipse
实验目的: 掌握包的定义及使用;理解包的命名空间。
(参考实验指导实验40,包2)
一、实验要求
- 在Experiments3项目中创建相关java文件和包,完成如下任务。
- 创建两个包,分别是:American、Chinese,在这两个包下分别定义一个man类(man.java),内容分别如下。
- 在缺省包下编写一个包含主方法的China类(China.java),导入Chinese包中的man类,并创建实例lisi,调用say()方法打印信息。
- 在缺省包下编写一个包含主方法的America类(America.java),导入America包中的man类,并创建实例zhansan,调用say()方法打印信息。
二、实验指导
1、记录你编写的源程序。
2、记录你的程序运行结果,分别记录China类的执行结果和America类的执行结果。
第八部分 接口的应用1(10分)
实验名称: 接口1
使用主要设备: Windows操作系统 、PC计算机、JDK、Eclipse
实验目的: 掌握接口的语法;掌握接口的实现类的设计方法;
(参考实验指导书 实验41)
一、实验要求
- 在Experiments3项目中创建一个包“实验41接口的实现”,在该包中创建相关java文件,完成如下任务。
- 编写一个Java应用程序(MyInterface.java),MyInterface类包含主方法。
- 在程序中定义一个接口Shape,该接口定义一个Pi成员,及计算底面积和体积的方法,返回值为double。
- 定义一个Cylinder实现接口Shape,在Cylinder类中,实现接口Shape接口中的抽象方法。
- 在MyInterface的主方法中创建Cylinde的实例,并打印出面积及高的运算结果
- 源程序模板如下所示。(可参实验指导书)
二、实验记录
1、记录你编写的源程序。
2、记录你的程序运行结果。
三、思考题
请尝试结果,并说出原因。
第九部分 接口的应用2(10分)
实验名称: 接口的应用2
使用主要设备: Windows操作系统 、PC计算机、JDK、Eclipse
实验目的: 掌握接口的定义语法;掌握子类对接口的实现方法;
一、实验要求
- 在Experiments3项目中创建相关java文件,完成如下任务。
- 编写一个Java应用程序JieKou(JieKou.java)
- 在程序中定义一个接口Achievement,其包含计算平均分的方法average,要求返回单精度类型。
- 定义一个父类Person(Person.java),包含姓名和年龄属性;包含一个设置上述属性的构造方法;包含一个introduce方法能打印姓名和年龄的信息。
- 定义一个子类Student(Student.java)继承Person类并实现Achievement接口。在子类Student中实现接口中的抽象方法并调用父类的方法。
- JieKou的主方法中创建Student的实例s1,打印姓名和年龄信息,计算平均成绩结果。
- 源程序模板如下所示。(可参实验指导书)
二、实验记录
1、记录你编写的源程序。
2、记录你的程序运行结果。
第十部分 内部类的定义及使用(10分)
实验名称: 内部类的定义及使用
使用主要设备: Windows操作系统 、PC计算机、JDK、Eclipse
实验目的: 掌握内部类的语法及定义;掌握内部类的使用方法
一、实验要求
- 在Experiments3项目中创建相关java文件,完成如下任务。
- 编写一个Java应用程序(Inner.java),在程序中定义一个School类,在School类中定一个内部类Student,具体见程序模板;
- 在Inner类的主方法中,分别创建这两个类的对象,分别采用通过外部类成员访问内部类成员、直接访问内部类成员 的方法,打印相关类对象信息。
- 程序模板如下所示,补充完成相关程序。(可参考实验指导书)。
二、实验记录
1、记录你编写的源程序。
2、记录你的程序运行结果。
三、思考题
将school中的 name属性改为private,程序还能正常运行吗?为什么
评论0