实验4.1  对象的组合(1)

【实验目的】掌握使用对象的组合关系。

【实验要求】编写一个Java应用程序,包含三个类用于计算圆锥的体积。

【实验步骤】

代码:

Circle.java

public class Circle {            
double radius,area;    //“圆”的半径,面积
void setRadius(double r) {    //修改半径
radius=r;
}
double getRadius() {    //获得半径
return radius;
}
double getArea(){      //求面积
area=3.14*radius*radius;
return area;
}
}
Circular.java
public class Circular {               
    Circle bottom;               //Circular将Circle对象作为自己的“底”
    double height;               //圆锥的高
    void setBottom(Circle c) {
       bottom = c;           //将“圆”对象c的引用传递给“圆锥”对象的成员bottom
    }
    void setHeight(double h) {
       height = h;
    }
    double getVolme() {       //圆锥体积
       if(bottom == null)
          return -1;
       else
          return bottom.getArea()*height/3.0;
    }
    double getBottomRadius() {      // 获得圆锥底部的半径
       return bottom.getRadius();
    }
    public void setBottomRadius(double r){     //修改圆锥底部的半径
       bottom.setRadius(r);
    }
}

Example4_8.java

public class Example4_8 {
   public static void main(String args[]) {
       Circle circle = new Circle();     //创建 circle对象(圆)         
       circle.setRadius(10);          //圆的radius(半径)为10
       Circular circular = new Circular();      //创建 circular对象(圆锥)
       System.out.println("circle的引用:"+circle);
       System.out.println("圆锥的bottom的引用:"+circular.bottom);
       circular.setHeight(5);          //修改圆锥的height(高)为5
       circular.setBottom(circle);    //将circle的引用传递给circular的bottom(底)
       System.out.println("circle的引用:"+circle);
       System.out.println("圆锥的bottom的引用:"+circular.bottom);
       System.out.println("圆锥的体积:"+circular.getVolme());
       System.out.println("修改circle的半径,bottom的半径同样变化");
       circle.setRadius(20);         //修改圆的radius(半径)为20
       System.out.println("bottom的半径:"+circular.getBottomRadius());
       System.out.println("重新创建circle,cirlce的引用将发生变化");
       circle = new Circle();        //重新创建circle
       System.out.println("circle的引用:"+circle);
       System.out.println("但是不影响circular的bottom的引用");
       System.out.println("圆锥的bottom的引用:"+circular.bottom);
   }
}

运行结果:

java实现求球的体积 java编写球体体积和面积_jvm

实验4.1  对象的组合(2)

【实验目的】掌握使用对象的组合关系。

【实验要求】编写一个Java应用程序,包含三个类用于模拟手机和SIM卡的组合关系。

【实验步骤】

运行代码:

MobileTelephone.java

public class MobileTelephone { 
    SIM sim;  //组合SIM卡对象
    void setSIM(SIM card) {
        sim = card;
    } 
    long lookNumber(){
        return sim.getNumber();    //委托所包含的sim对象调用其方法 
    }
}

SIM.java

public class SIM {
    long number;  
    SIM(long number){
        this.number = number;
    }
    long getNumber() {
        return number;
    }
}

Example4_9.java

public class Example4_9 {
   public static void main(String args[]) {
       SIM simOne = new SIM(13889776509L);    //创建SIM卡对象实例simOne 
       MobileTelephone mobile = new MobileTelephone();  //创建手机对象实例 
       mobile.setSIM(simOne);  //委托mobile对象调用其方法,并传递参数(card ,卡号)
       System.out.println("手机号码:"+mobile.lookNumber()); 
       SIM simTwo = new SIM(15967563567L);  //创建第二个SIM卡对象实例simTwo 
       mobile.setSIM(simTwo);  //委托mobile对象调用其方法,并传递参数(card ,卡号) 
       System.out.println("手机号码:"+mobile.lookNumber());  
    }
}

运行结果:

java实现求球的体积 java编写球体体积和面积_servlet_02

实验4.2  共饮同井水

【实验目的】掌握类变量与实例变量,以及类方法与实例方法的区别。

【实验要求】编写程序模拟两个村庄共用同一口井水。类Village 有一个静态变量waterAmount,用于模拟井水的水量。主类Land中创建两个村庄,一个村庄改变了waterAmount的值,另一个村庄查看waterAmount的值。

【实验步骤】

运行代码:

Village.java

public class Village {
    static int waterAmount;   //模拟水井的水量
    int peopleNumber;        //村庄的人数
    String name;            //村庄的名字
    Village(String s) {
        name = s;
    }
    static void setWaterAmount(int m) {
       if(m>0)
         waterAmount = m;
    } 
    void drinkWater(int n){
       if( waterAmount-n>=0) {
         waterAmount = waterAmount-n;
         System.out.println(name+"喝了"+n+"升水");
       }
       else
         waterAmount = 0;
    }
 public static int waterAmount() {
  // TODO Auto-generated method stub
    return waterAmount;
 }  
    static int lookWaterAmount() {
       return waterAmount;
    }
    void setPeopleNumber(int n) {
       peopleNumber = n;
    } 
    int getPeopleNumber() {
       return peopleNumber;
    } 
}

Land.java

public class Land {  
   public static void main(String args[]) {
       Village.setWaterAmount(200);   //用类名调用setWaterAmount(int m),并向参数传值200
       int leftWater = Village.waterAmount();     //用Village类的类名访问waterAmount
       System.out.println("水井中有 "+leftWater+" 升水");
       Village zhaoZhuang,maJiaHeZhi;
       zhaoZhuang = new Village("赵庄");
       maJiaHeZhi = new Village("马家河子");
       zhaoZhuang.setPeopleNumber(80);
       maJiaHeZhi.setPeopleNumber(120);
       zhaoZhuang.drinkWater(50);    //zhaoZhuang调用drinkWater(int n),并向参数传值50
       leftWater = maJiaHeZhi.lookWaterAmount();      //maJiaHeZhi调用lookWaterAmount()方法
       String name=;
       System.out.println(name+"发现水井中有 "+leftWater+" 升水");
       maJiaHeZhi.drinkWater(100);
       leftWater =  zhaoZhuang.lookWaterAmount();      //zhaoZhuang调用lookWaterAmount()方法
       name=; 
       System.out.println(name+"发现水井中有 "+leftWater+" 升水");
       int peopleNumber = zhaoZhuang.getPeopleNumber(); 
       System.out.println("赵庄的人口:"+peopleNumber);
       peopleNumber = maJiaHeZhi.getPeopleNumber(); 
       System.out.println("马家河子的人口:"+peopleNumber);
    }
}

运行结果:

java实现求球的体积 java编写球体体积和面积_jvm_03