《实验4 面向对象基础》由会员分享,可在线阅读,更多相关《实验4 面向对象基础(5页珍藏版)》请在金锄头文库上搜索。
1、山 西 大 学 计 算 机 与 信 息 技 术 学 院实 验 报 告姓 名 学 号 专业班级课程名称 Java实验 实验日期成 绩 指导教师 批改日期实 验 名 称 实 验 4 面 向 对 象 基 础一 实 验 目 的 :( 1) 掌 握 类 的 定 义 、 类 的 实 例 化 方 法 ;( 2) 掌 握 类 中 的 静 态 变 量 和 静 态 方 法 的 使 用 ;( 3) 掌 握 使 用 类 的 构 造 方 法 对 对 象 的 数 据 域 进 行 初 始 化 ;( 4) 掌 握 getter和 setter的 使 用 ;二 实 验 内 容( 1) 现 在 要 求 设 计 一 个 表 示 学
2、 生 的 类 , 里 面 有 学 生 的 姓 名 、 学 号 、 年 龄 , 还 要 有 三 项 成 绩 : 计 算 机成 绩 、 数 学 成 绩 、 英 语 成 绩 , 要 求 可 以 求 总 分 、 平 均 分 、 最 高 、 最 低 分 , 并 且 可 以 输 出 一 个 学 生 的完 整 信 息 , 请 设 计 此 类 。提 示 : 程 序 开 发 步 骤根 据 需 求 定 义 出 所 要 的 类 ;根 据 题 目 中 的 要 求 规 划 出 类 的 属 性 ;所 有 的 属 性 必 须 封 装 : private;所 有 的 属 性 必 须 通 过 getter和 setter访 问
3、 ;如 果 需 要 增 加 构 造 方 法 , 为 属 性 赋 初 值 , 适 当 采 用 构 造 方 法 重 载 ;所 有 的 信 息 不 要 类 中 直 接 输 出 , 而 是 交 给 调 用 处 输 出 , 即 在 该 类 中 尽 量 不 出 现System.out.println()语 句 。 例 如 在 调 用 类 中 输 出 如 下 结 果 :总 分 : 267.70000000000005平 均 分 : 89.23333333333335最 高 分 : 91.4最 低 分 : 87.3学 生 信 息 :|-学 号 : 100|-姓 名 : John|-年 龄 : 20|-英 语
4、: 89.0|-计 算 机 : 87.3|-数 学 : 91.4程序代码:运行结果贴图:(二 )1、 设 计 类 来 描 述 真 实 客 观 世 界 中 的 事 物 , 使 用 类 的 成 员 变 量 来 表 示 事 物 的 属 性 和 状 态 , 使 用 类 的 成员 方 法 来 提 供 对 成 员 变 量 的 访 问 或 修 改程 序 功 能 : 设 计 一 个 用 来 描 述 汽 车 的 类 , 使 用 类 的 非 静 态 成 员 变 量 来 表 示 汽 车 的 车 主 姓 名 、 当 前 的速 率 和 当 前 方 向 盘 的 转 向 角 度 , 使 用 类 的 非 静 态 成 员 方
5、法 来 表 示 改 变 汽 车 的 速 率 和 停 车 两 个 操 作 。程 序 源 代 码 如 下 , 补 全 横 线 上 的 程 序 代 码 。public class Car private String ownerName; /车 主 姓 名private float curSpeed; /当 前 车 速private float curDirInDegree; /当 前 方 向 盘 转 向 角 度public Car (String ownerName)_ = _;public Car (String ownerName, float speed, float dirInDegree
6、)_;/调 用 上 面 那 个 构 造 函 数 为 ownerName赋 值_ = _ ;_ = _ _;public String getOwnerName() /提 供 对 车 主 姓 名 的 访 问_;public float getCurDirInDegree() /提 供 对 当 前 方 向 盘 转 向 角 度 的 访 问_;public float getCurSpeed() /提 供 对 当 前 车 速 的 访 问_;public void changeSpeed(float curSpeed) /提 供 改 变 当 前 的 车 速_ = _;public void stop()
7、 /提 供 停 车_ = _;编 写 一 个 主 方 法 , 编 译 并 测 试 源 程 序 。2、 创 建 类 的 对 象 , 使 用 对 象 的 方 法 ( 类 的 非 静 态 方 法 ) 来 访 问 或 修 改 对 象 的 变 量 ( 类 的 非 静 态 变 量 )创 建 类 Car的 对 象 , 在 调 用 类 的 构 造 函 数 时 指 定 对 象 的 变 量 的 初 始 值 , 以 后 再 使 用 对 象 的 方 法 来 访 问或 修 改 对 象 的 变 量 的 值 。程 序 代 码 如 下 ( 需 要 添 加 代 码 , 要 求 运 行 结 果 如 下 图 所 示 。public
8、 class Car public static void main(String args)EXP3_1 car=new Car (成 龙 ,200f,25f);/在 下 面 填 写 代 码编 译 并 运 行 , 结 果 如 图 所 示 。车主姓名: 成龙当前车速: 200.0当前转向角度: 25.0在调用changeSpeed(80)后,车速变为: 80.0在调用 stop()后, 车速变为: 0.0(三)(账户类Account)设计一个名为Account的类,它包括: 一个名为id的int类型私有账户数据域(默认值为0)。 一个名为balance的double类型私有账户数据域(默认值为
9、0)。 一个名为annualInterestRate 的double类型私有数据域存储当前利率(默认值为 0)。假设所有的账户都有相同的利率。 一个名为dateCreated的Date类型私有数据域存储账户的开户日期。 一个能创建默认账户的无参构造方法。 一个能创建带特定id和初始余额的账户的构造方法。 id、balance和annualInterestRate的访问器和修改器。 dateCreated的访问器。 一个名为getMonthlyInterestRate()的方法返回月利率。 一个名为withDraw的方法从账户提取特定数额。 一个名为deposit的方法向账户存储特定数额。实现这
10、个类。编写一个测试程序,创建一个账户ID为1122、余额为20000美元、年利率为4.5%的Account对象。使用withdraw方法取款2500美元,使用deposit方法存款3000美元,然后打印余额、月利息以及这个账户的开户日期。程序代码:运行结果贴图:(三)(风扇类Fan)设计一个名为Fan的类来表示一个风扇。这个类包括: 三个名为SLOW、MEDIUM、FAST而值是1、2和3的常量表示风扇的速度。 一个名为speed的int类型私有数据域表示风扇的速度(默认值为SLOW)。 一个名为on的boolean类型的私有数据域表示风扇是否打开(默认值为false)。 一个名为radius
11、的double类型的私有数据域表示风扇的半径(默认值为5)。 一个名为color的String类型的数据域表示风扇的颜色(默认值为blue)。 这四个数据域的访问器和修改器。 一个创建默认风扇的无参构造方法。 一个名为toString()的方法返回描述风扇的字符串。如果风扇是打开的,那么该方法在一个组合的字符串中返回风扇的速度、颜色和半径。如果风扇没有打开,该方法就返回一个由“fan is off”和风扇颜色及半径组合成的字符串。实现这个类。编写一个测试程序,创建两个fan对象。将第一个对象设置为最大速度、半径为10、颜色为yellow、状态为打开。将第二个对象设置为中等速度、半径为5、颜色为
12、blue、状态为关闭。通过调用它们的toString方法显示这些对象。程序代码:运行结果贴图:(四) (几何方面:正 n 边形)在一个正 n 边形中,所有边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的) 。设计一个名为 RegularPolygon 的类,该类包括:一个名为 n 的 int 型私有数据域定义多边形的边数,默认值为 3。 一个名为 side 的 double 型私有数据域存储边的长度,默认值为 1。 一个名为 x 的 double 型私有数据域,它定义多边形中点的 x 坐标,默认值为 0。 一个名为 y 的 double 型私有数据域,它定义多边形中点的 y 坐标
13、,默认值为 0。 一个创建带默认值的正多边形的无参构造方法。 一个能创建带指定边数和边长度、中心在(0,0)的正多边形的构造方法。 一个能创建带指定边数和边长度、中心在(x,y)的正多边形的构造方法。 所有数据域的访问器和修改器。 一个返回多边形周长的方法 getPerimeter()。 一个返回多边形面积的方法 getArea()。计算正多边形面积的公式是:面积= npsta42实现这个类。编写一个测试程序,分别使用无参构造方法、RegularPolygon(6,4)和RegularPolygon(10,4,5.6,7.8)创建三个 RegularPolygon 对象。显示每个对象的周长和面
14、积。程序代码:运行结果贴图:(五)(代数方面:二次方程 )为二次方程式 设计一个名为 QuadraticEquation 的类。02cbxa这个类包括: 代表参数为 a、b 和 c。 一个参数为 a、b 和 c 的构造方法。 A、b 、c 的三个 get 方法。 一个名为 getDiscriminant()的方法返回判别式, 。acb42 一个名为 getRoot1()和 getRoot2()的返回等式的两个根:and acbr241r22这些方法只有在判别式为非负数时才有用。如果判别式为负,这些方法返回 0。实现这个类。编写一个测试程序,提供用户输入 a、b 和 c 的值,然后显示判别式的结果。如果判别式为正数,显示两个根;如果判别式为 0,显示一个根;否则显示 “The equation has no roots.”(这个方程无根) 。程序代码:运行结果贴图:课后作业题P233 8.1 8.2 8.5 8.20 P238 8.5