您的当前位置:首页实验3 类和对象

实验3 类和对象

2021-04-19 来源:乌哈旅游
实验三 类和对象

一、实验目的:

熟悉类和对象的定义及使用;熟悉static关键字、this关键字,访问权限等。 二、实验内容:

1.编写一个Java应用程序,该程序有2个类:Vehicle(机动车)和User(主类)。

Vehicle类的成员变量有:speed(速度)、power(功率)。成员方法有:speedUp(int s)—加速,speedDown(int d)—减速,setPower(int p)—设置功率,getPower()—获取功率 请按下面给出的程序模版,填写缺少的代码,完成程序。 Vehicle.java

public class Vehicle{ 代码1 //声明double型变量speed 代码2 //声明int型变量power void speedUp(int s) { 代码3 //将s的值累加到speed } void speedDown(int d) { 代码4 //从speed中减去d } void setPower(int p) { 代码5 //将p赋给power } void getPower() { 代码6 //返回power的值 } double getSpeed() { return speed; } }

User.java

public class User { public static void main(String args[]){ Vehicle car1,car2; 代码7 //创建对象car1 代码8 //创建对象car2 car1.setPower(128); car2.setPower(76); System.out.println(“car1的功率是:”+car1.getPower());

System.out.println(“car2的功率是:”+car2.getPower()); 代码9 //car1调用speedUp方法,速度增加80 代码10 //car2调用speedUp方法,速度增加80 System.out.println(“car1目前的速度:”+car1.getSpeed()); System.out.println(“car2目前的速度:”+car2.getSpeed()); car1.speedDown(10); car2.speedDown(20); System.out.println(“car1目前的速度:”+car1.getSpeed()); System.out.println(“car2目前的速度:”+car2.getSpeed()); } }

功能扩展:

在类中定义构造方法,构造具有不同初始值的对象。 改进speedUP()方法,限制speed的值不能超过200。 改进speedDown()方法,限制speed的值不能小于0。

增加一个刹车方法void brake(),调用它能将speed的值变为0。

2.根据下面要求,编写一个Java应用程序: ①定义类StuCard,用到类成员变量(人数)和实例成员变量:学号、姓名、性别、专业、年级、籍贯等 ②初始化的时候用到构造方法,提供两个以上构造方法 ③多个类(业务类StuCard和测试主类),用到包的概念,且分别放到不同的包中 ④用到类成员访问权限,要求类成员变量为Public,实例成员变量为Private ⑤制作公有的set和get方法与外界通过消息调用的方式通信 ⑥在主类中实现对业务类StuCard的读、写、修改属性等功能 在完成以上功能要求的情况下,可以进一步扩展。

3.用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。

 PC类与CPU和HardDisk类关联的UML图如下: 其中,CPU类要求getSpeed()返回speed的值,要求setSpeed(int m)方法将参数m的值赋值给speed。HardDisk类要求getAmount()返回amount的值,要求setAmount(int m)方法将参数m的值赋值给amount。PC类要求setCPU(CPU c)将参数c的值赋值给cpu,要求setHardDisk(HardDisk h)方法将参数h的值赋值给HD,要求show()方法能显示cpu的速度和硬盘的容量。

 主类Test的要求

(1) main方法中创建一个CPU对象cpu,cpu将自己的speed设置为2200;

(2) main方法中创建一个HardDisk对象disk,disk将自己的amount设置为200; (3) main方法中创建一个PC对象pc;

(4) pc调用setCPU(CPU c)方法,调用时实参是cpu;

(5) pc调用setHardDisk(HardDisk h)方法,调用时实参是disk; (6) pc调用show()方法。

CPU speed:int PC setSpeed(int):void cpu:CPU getSpeed():int HD:HardDisk setCPU(CPU):void setHardDisk(HardDisk):void show():void HardDisk amount:int

setAmount(int):void

getAmount():int

4.共饮同井水:编写程序模拟两个村庄公用同一口井水。编写一个Village类,该类有一个静态的成员变量waterAmount,用于模拟井水的水量;实例变量peopleNumber表示村庄的人数,实例变量name表示村庄的名称。定义相应的成员方法操作成员变量。在主类Land的main()方法中创建两个村庄,设置村庄的名称、人数,通过一个村庄改变waterAmount的值,另一个村庄查看该值的结果。

提示:类变量是该类所有对象的共享数据;一般通过类方法操作类变量。

5.分析程序,给出运行结果 class B { int x=100,y=200; public void setX(int x){ x=x; } public void setY(int y){ this.y=y; } public int getXYSum(){ return x+y; } }

public class A{ public static void main(String args[]){ B b=new B(); b.setX(-100); b.setY(-200);

System.out.println(“sum=”+b.getXYSum()); } }

6.分析程序,给出输出结果 public class A{ public static void main(String args[]){ B b=new B(20); add(b); System.out.println(b.intValue()); } public static void add(B m){ int t=777; m.setIntValue(t); } }

class B{ int n; B(int n){ this.n=n; } public void setIntValue(int n){ this.n=n; } int intValue(){ return n; } }

7.分析程序,给出输出结果 public class A{ public static void main(String args[]){ Integer integer=new Integer(20); add(integer); System.out.println(integer.intValue()); } public static void add(Integer m){ int t=777; m=new Integer(t); } }

8.分析程序,给出输出结果 class B{ int n; static int sum=0; void setN(int n){ this.n=n; } int getSum(){ for(int i=1;i<=n;i++) sum=sum+i; return sum; } }

public class A{ public static void main(String args[]){ B b1=new B(),b2=new B(); b1.setN(3); b2.setN(5); int s1=b1.getSum(); int s2=b2.getSum(); System.out.println(s1+s2); } }

9.程序改错:将下面给出的程序修改成正确的代码 class A{ int x=100; static long y; y=200; public void f(){ y=300; } public static void g(){ x=-23; } }

10.程序改错:将下面给出的程序修改成正确的代码 class Tom{ private int x=120; protected int y=20; int z=11;

private void f(){ x=200; System.out.println(x); } void g(){ x=200; System.out.println(x); } }

public class A{ public static void main(String args[]){ Tom tom=new Tom(); tom.x=22; tom.y=33; tom.z=55; tom.f(); tom.g(); } }

因篇幅问题不能全部显示,请点此查看更多更全内容