Java 2实用教程(第5版)实验指导与习题解答 第4章-类与对象
实验 1 机动车实验目的本实验的目的是让学生使用类来封装对象的属性和功能。实验要求编写一个 Java 应用程序,该程序中有两个类: Vehicle(用于刻画机动车)和 User(主类)。具体要求如下:Vehicle 类有一个 double 类型的变量 speed,用于刻画机动车的速度,一个 int 型变量 power,用于刻画机动车的功率。类中定义了 speedUp(int s)方法,体现机动车有
实验 1 机动车
实验目的
本实验的目的是让学生使用类来封装对象的属性和功能。
实验要求
编写一个 Java 应用程序,该程序中有两个类: Vehicle(用于刻画机动车)和 User(主类)。具体要求如下:
Vehicle 类有一个 double 类型的变量 speed,用于刻画机动车的速度,一个 int 型变量 power,用于刻画机动车的功率。类中定义了 speedUp(int s)方法,体现机动车有减速功能;定义了 speedDown()方法,体现机动车有减速功能; 定义了 setPower(int p)方法,用于设置机动车的功率; 定义了getPower()方法,用于获取机动车的功率。
机动车的 UML图如图所示。
在主类 User 的 main()方法中用 Vehicle 类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。
实验代码
public class 机动车01 {
public static void main(String[] args) {
Vehicle a = new Vehicle(60.0,100);
a.speedDown(70);
a.speedDown(20);
a.speedUp(20);
}
}
class Vehicle{
private double speed;
private int power;
public void speedUp(int n){
speed += n;
System.out.println("加速后机动车速度为" + speed);
}
public void speedDown(int n){
if(n > speed){
System.out.println("参数错误!");
}else {
speed -= n;
System.out.println("减速后机动车速度为" + speed);
}
}
public Vehicle() {
}
public Vehicle(double speed, int power) {
this.speed = speed;
this.power = power;
System.out.println("机动车速度为:" + speed + "机动车功率为:" + power);
}
public double getSpeed() {
return speed;
}
public void setSpeed(double speed) {
this.speed = speed;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
}
运行截图
实验 2 家中的电视
实验目的
本实验的目的是让学生掌握对象的组合以及参数传递。
实验要求
编写一个 Java 应用程序,模拟家庭买一台电视,即家庭将电视作为自己的一个成员,即
通过调用一个方法将某个电视的引用传递给自己的电视成员。具体要求如下。
有三个源文件: TV.java、 Familiy.java 和 MainClass.java,其中 TV.java 中的 TV 类负
责创建“电视”对象, Family.java 中的 Family 类负责创建“家庭”对象, MainClass.java
是主类。
在主类的 main()方法中首先使用 TV 类创建一个对象 haierTV,然后使用 Familiy 类
再创建一个对象 zhangSanFamily,并将先前 TV 类的实例 haierTV 的引用传递给zhangSanFamily 对象的成员变量 homeTV。
Family 类组合 TV 类的实例的 UML 图如图 4.4 所示。
程序效果示例
程序运行效果如图 4.5 所示。
实验代码
Familiy.java
package 家中的电视02;
public class Familiy {
private TV homeTV;
public void buyTV(TV a){
homeTV = a;
}
public void remoteControl(int a){
System.out.println("将电视更换到" + a + "频道");
homeTV.setChannel(a);
}
public void seeTV(){
System.out.println("在看电视节目");
homeTV.showProgram();
}
}
TV.java
package 家中的电视02;
public class TV {
private int channel;
public void showProgram(){
switch (channel){
case 1:
System.out.println("动画频道");
break;
case 2:
System.out.println("经济频道");
break;
case 3:
System.out.println("少儿频道");
break;
case 4:
System.out.println("电影频道");
break;
case 5:
System.out.println("体育频道");
break;
}
}
public TV() {
}
public TV(int channel) {
this.channel = channel;
}
public int getChannel() {
return channel;
}
public void setChannel(int channel) {
this.channel = channel;
}
}
MainClass.java
package 家中的电视02;
public class MainClass {
public static void main(String[] args) {
TV haierTV =new TV(5);
Familiy zhangSanFamily = new Familiy();
zhangSanFamily.buyTV(haierTV);
System.out.println("haierTV的频道是" + haierTV.getChannel());
System.out.println("zhangSanFamily开始看电视节目");
haierTV.showProgram();
System.out.print("zhangSanFamily");
zhangSanFamily.remoteControl(2);
System.out.println("haierTV的频道是" + haierTV.getChannel());
System.out.print("zhangSanFamily");
zhangSanFamily.seeTV();
}
}
运行截图
实验 3 共饮同井水
实验目的
本实验的目的是让学生掌握类变量与实例变量,以及类
方法与实例方法的区别。
实验要求
编写程序模拟两个村庄共用同一口井水。编写一个 Village 类,该类有一个静态的 int 型
成员变量 waterAmount,用于模拟井水的水量。在主类 Land 的 main()方法中创建两个村庄,
一个村庄改变了 waterAmount 的值,另一个村庄查看 waterAmount 的值。
实验代码
public class 共饮同井水03 {
public static void main(String[] args) {
Village v1 = new Village(100);
Village v2 = new Village();
System.out.println("最初的水量" + v1.getWaterAmount());
//v1用掉20的水,还剩下80
v1.setWaterAmount(80);
//v2查看剩余水量
System.out.println("剩下的水量" + v2.getWaterAmount());
}
}
class Village{
private static int waterAmount;
public Village() {
}
public Village(int waterAmount) {
this.waterAmount = waterAmount;
}
public int getWaterAmount() {
return waterAmount;
}
public void setWaterAmount(int waterAmount) {
this.waterAmount = waterAmount;
}
}
运行截图
实验 4 求方程的根
实验目的
本实验的目的是让学生掌握使用 package 和 import 语句。
实验要求
按照实验要求使用 package 语句将方程的属性即计算根的方法封装在一个有包名的类中,包名是 tom.jiafei,类的名字是 SquareEquation。编写一个 SunRise 的主类,该主类使用
import 语句引入 tom.jiafei 包中的 SquareEquation 类。
实验代码
SquareEquation
package 求方程的根04.tom.jiafei;
import java.util.Scanner;
public class SquareEquation {
public static void function (double a,double b,double c){
double x1=(-b+Math.sqrt(b*b-4*a*c))*1/(2*a);
double x2=(-b-Math.sqrt(b*b-4*a*c))*1/(2*a);
System.out.println("方程根为"+x1);
System.out.println("方程根为"+x2);
}
}
SunRise
package 求方程的根04;
import 求方程的根04.tom.jiafei.SquareEquation;
import java.util.Scanner;
public class SunRise {
public static void main(String[] args) {
double a,b,c;
System.out.println("请分别输入一元二次方程的a,b,c值");
Scanner input=new Scanner(System.in);
boolean T = true;
while(T){
System.out.println("输入a:");
a=input.nextDouble();
System.out.println("输入b:");
b=input.nextDouble();
System.out.println("输入c:");
c=input.nextDouble();
if(b*b-4*a*c<0) {
System.out.println("该方程无解,请重新输入");
}else{
SquareEquation.function(a,b,c);
T = false;
}
}
}
}
运行截图
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)