Java程序设计基础实验二面向对象程序设计

实验二 面向对象程序设计

一、实验目的

1.掌握类来封装对象的属性和功能。

2.掌握对象的组合以及参数传递。

3.掌握类变量与实例变量,以及类方法与实例方法的区别。

4.掌握使用package和import语句。

5.掌握下列知识点:

(1)子类的继承性;

(2)子类对象的创建过程;

(3)成员变量的继承与隐藏;

(4)方法的继承与重写。

6.掌握重写的目的以及怎样使用super关键字。

7.掌握上转型对象的使用。

二、实验内容

1.编写一个Java应用程序,该程序有两个类,即Vehicle(用于刻画机动车)和User主类。

2.编写一个Java应用程序,模拟家庭买一台电视,即家庭将电视作为自己的一个成员,通过调用一个方法将某台电视的引用传递给自己的电视成员。

3.编写程序模拟两个村庄共用同一口井水。

4.要求使用package语句将方程的属性封装在一个有包名的类中。

5.编写程序模拟中国人、美国人是人,北京人是中国人。

6.编写程序按年计算利息的一般方法。

7.编写程序计算各自领取薪水的具体方式。

三、实验步骤与实验结果

1.机动车

源代码:

package chapert1;

public class User {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Vehicle car1,car2;    
	      car1=new Vehicle();
	      car2=new Vehicle();
	      car1.setPower(128);   
	      car2.setPower(76);
	      System.out.println("car1的功率是:"+car1.getPower());
	      System.out.println("car2的功率是:"+car2.getPower());
	      car1.speedUp(80);
	      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());
	}

}
package chapert1;

public class Vehicle {
	double speed;
    int power;
    void speedUp(int s) {      
       speed=speed+s;
    } 
    void speedDown(int d) {   
       speed=speed-d;
    } 
    void setPower(int p) {
       power=p;
    }
    int getPower() {
       return power;
    }
    double getSpeed() {
       return speed;
    }
}

2.家中的电视

源代码:

package chapert2;

public class MainClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TV haierTV = new TV(); 
	       haierTV.setChannel(5);
	       System.out.println("haierTV的频道是"+haierTV.getChannel());
	       Family zhangSanFamily = new Family();
	       zhangSanFamily.buyTV(haierTV);
	       System.out.println("zhangSanFamily开始看电视节目");
	       zhangSanFamily.seeTV();
	       int m=2; 
	       System.out.println("hangSanFamily将电视更换到"+m+"频道");
	       zhangSanFamily.remoteControl(m);
	       System.out.println("haierTV的频道是"+haierTV.getChannel());
	       System.out.println("hangSanFamily再看电视节目");
	       zhangSanFamily.seeTV();
	}

}
package chapert2;

public class Family {
	TV homeTV;
    void buyTV(TV tv) {
       homeTV=tv;
    }
    void remoteControl(int m) {
       homeTV.setChannel(m);  
    }
    void seeTV() {
       homeTV.showProgram();  //homeTV调用showProgram()方法
    }
}
package chapert2;

public class TV {
	int channel;   //电视频道
    void setChannel(int m) {
       if(m>=1){
          channel=m;
       }
    } 
    int getChannel(){
       return channel;
    }
    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;
          default : System.out.println("不能收看"+channel+"频道");
       } 
    }
}

3.共饮同井水

源代码:

package chapert3;

public class Land {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		   Village.setWaterAmount(200);
	       int leftWater =Village.waterAmount;
	       System.out.println("水井中有 "+leftWater+" 升水");
	       Village zhaoZhuang,maJiaHeZhi;
	       zhaoZhuang = new Village("赵庄");
	       maJiaHeZhi = new Village("马家河子");
	       zhaoZhuang.setPeopleNumber(80);
	       maJiaHeZhi.setPeopleNumber(120);
	       zhaoZhuang.drinkWater(50);
	       leftWater = maJiaHeZhi.lookWaterAmount();
	       String name=maJiaHeZhi.name;
	       System.out.println(name+"发现水井中有 "+leftWater+" 升水");
	       maJiaHeZhi.drinkWater(100);
	       leftWater = zhaoZhuang.lookWaterAmount();
	       name=zhaoZhuang.name; 
	       System.out.println(name+"发现水井中有 "+leftWater+" 升水");
	       int peopleNumber = zhaoZhuang.getPeopleNumber(); 
	       System.out.println("赵庄的人口:"+peopleNumber);
	       peopleNumber = maJiaHeZhi.getPeopleNumber(); 
	       System.out.println("马家河子的人口:"+peopleNumber);
	}

}
package chapert3;

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;
    }
    static int lookWaterAmount() {
       return waterAmount;
    }
    void setPeopleNumber(int n) {
       peopleNumber = n;
    } 
    int getPeopleNumber() {
       return peopleNumber;
    } 
}

4.求方程的根

源代码:

package chapert4;

public class SunRise {
	public static void main(String args[]) {
	      SquareEquation equation=new SquareEquation(4,5,1);
	      equation.getRoots();
	      equation.setCoefficient(-3,4,5);
	      equation.getRoots();
	   }
}
package chapert4;

public class SquareEquation {
	double a,b,c;
    double root1,root2;
    boolean boo;
    public SquareEquation(double a,double b,double c) {
       this.a=a;
       this.b=b;
       this.c=c;
       if(a!=0)
          boo=true;
       else
         boo=false;
    }
    public void getRoots() {
       if(boo) {
          System.out.println("是一元2次方程");
          double disk=b*b-4*a*c;
          if(disk>=0) {
             root1=(-b+Math.sqrt(disk))/(2*a);
             root2=(-b-Math.sqrt(disk))/(2*a);
             System.out.printf("方程的根:%f,%f\n",root1,root2);
          } 
          else {
             System.out.printf("方程没有实根\n");
          }
       }
       else {
         System.out.println("不是一元2次方程");
       }
    } 
    public void setCoefficient(double a,double b,double c) {
       this.a=a;
       this.b=b;
       this.c=c;
       if(a!=0)
          boo=true;
       else
          boo=false;
   }    
}

5.中国人、北京人和美国人

源代码:

package chapert1;

public class Example {
	   public static void main(String args[]) {
	      Chinese chinaPeople=new Chinese();
	      American americanPeople=new American();
	      Beijingman beijingPeople=new Beijingman();
	      chinaPeople.speakHello();
	      americanPeople.speakHello();
	      beijingPeople.speakHello();
	      chinaPeople.averageHeight();
	      americanPeople.averageHeight();
	      beijingPeople.averageHeight();
	      chinaPeople.averageWeight();
	      americanPeople.averageWeight();
	      beijingPeople.averageWeight();
	      chinaPeople.chinaGongfu();
	      americanPeople.americanBoxing();
	      beijingPeople.beijingOpera() ;
	      beijingPeople.chinaGongfu();
	   }  
	}
package chapert1;

public class People {
	   protected double weight,height;
	   public void speakHello() {
	      System.out.println("yayayaya");
	   }  
	   public void averageHeight() {
	       height=173;
	       System.out.println("average height:"+height);
	   }
	   public void averageWeight() {
	      weight=70;
	      System.out.println("average weight:"+weight);
	   }
	}
package chapert1;

public class Chinese extends People {
    public void speakHello() {   
       System.out.println("您好");
    }    
    public void averageHeight() { 
       height = 168.78;  
       System.out.println("中国人的平均身高:"+height+" 厘米");   
    }
   public void averageWeight() {
	   weight=65;
	   System.out.println("中国人的平均体重:65公斤");
   }
    public void chinaGongfu() {
       System.out.println("坐如钟,站如松,睡如弓");
    }
}
package chapert1;

public class Beijingman extends Chinese {
	   public void averageHeight() {
		   height=17.25;
		   System.out.println("北京人的平均身高: "+height+"厘米");
	   }
	   public void averageWeight() {
		   weight=70;
		   System.out.println("北京人的平均体重:70公斤");
	   }
	   public void beijingOpera() { 
	       System.out.println("花脸、青衣、花旦和老生");
	   }
	}
package chapert1;

public class American extends People {
	   public void speakHello() {
		   System.out.println("How do you do");
	   }
	   public void averageHeight() {
		   height=176;
		   System.out.println("American's average height:"+height+"cm");
	   }
	     public void averageWeight() { 
	        weight = 75;  
	        System.out.println("American's average weight:"+weight+" kg");   
	     }
	     public void americanBoxing() {
	        System.out.println("直拳、钩拳、组合拳");
	     }
	}

6.银行计算利息

源代码:

package chapert2;

public class SaveMoney {
	   public static void main(String args[]) {
	      int amount=8000;
	      ConstructionBank bank1 = new ConstructionBank();
	      bank1.savedMoney = amount;
	      bank1.year = 8.236;
	      bank1.setInterestRate(0.035);
	      double interest1 = bank1.computerInterest();
	      BankOfDalian bank2 = new BankOfDalian();
	      bank2.savedMoney = amount;
	      bank2.year = 8.236;
	      bank2.setInterestRate(0.035);
	      double interest2=bank2.computerInterest();
	      System.out.printf("两个银行利息相差%f元\n",interest2-interest1);
	   }
	}
package chapert2;

public class ConstructionBank extends Bank {
	   double year;
	   public double computerInterest() {
	      super.year=(int)year;
	      double r = year-(int)year;
	      int day=(int)(r*1000);
	      double yearInterest = super.computerInterest();
	      double dayInterest = day*0.0001*savedMoney;
	      interest= yearInterest+dayInterest;
	      System.out.printf("%d元存在建设银行%d年零%d天的利息:%f元\n",
	                         savedMoney,super.year,day,interest);
	      return interest;
	   }
	}
package chapert2;

public class BankOfDalian extends Bank {
	   double year;
	   public double computerInterest() {
	      super.year=(int)year;
	      double r = year-(int)year;
	      int day=(int)(r*1000);
	      double yearInterest = super.computerInterest();
	      double dayInterest = day*0.00012*savedMoney;
	      interest= yearInterest+dayInterest;
	      System.out.printf("%d元存在大连银行%d年零%d天的利息:%f元\n",savedMoney,super.year,day,interest);
	      return interest;
	   }
	}
package chapert2;

public class Bank {
	   int savedMoney;
	   int year;
	   double interest;
	   double interestRate = 0.29;
	   public double computerInterest() {
	      interest=year*interestRate*savedMoney;
	      return interest;
	   }
	   public void setInterestRate(double rate) {
	      interestRate = rate;
	   }
	}

7.公司支出的总薪水

源代码:

package chapert3;

import java.util.Iterator;

abstract class Employee {
	   public abstract double earnings();
	}
	class YearWorker extends Employee {
		public double earnings() {
			return 12000;
		}
	}
	class MonthWorker extends Employee {
		public double earnings() {
			return 12*2300;
		}
	}
	class WeekWorker extends Employee {
	   public double earnings(){
		   return 52*780;
	}
	}
	class Company {
	   Employee[] employee;
	   double salaries=0;
	   Company(Employee[] employee) {
	      this.employee=employee;
	   }
	   public double salariesPay() {
	       salaries=0;
	       for (int i=0;i<employee.length;i++) {
			salaries=salaries+employee[i].earnings();
		}
	       return salaries;
	   }    
	}
	public class CompanySalary {
	   public static void main(String args[]) {
	      Employee [] employee=new Employee[29]; //公司有29名雇员
	      for(int i=0;i<employee.length;i++) {   //雇员简单地分成三类
	          if(i%3==0)
	              employee[i]=new WeekWorker();
	          else if(i%3==1)
	              employee[i]=new MonthWorker();
	          else if(i%3==2)
	             employee[i]=new YearWorker();
	      } 
	      Company company=new Company(employee);
	      System.out.println("公司薪水总额:"+company.salariesPay()+"元");
	   }
	}

四、实验总结

通过本次实验掌握了数据类型的转换,多种流程处理的方法。巩固了子类的继承性、成员变量的继承与隐藏、方法的继承与重写,掌握了重写的目的以及怎样使用super关键字。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java 2实用教程(第三版)实验指导与习题解答 清华大学出版社 (编著 耿祥义 张跃平) 实验模版代码 建议使用文档结构图 (选择Word菜单→视图→文档结构图) 上机实践1 初识Java 4 实验1 一个简单的应用程序 4 实验2 一个简单的Java Applet程序 4 实验3 联合编译 5 上机实践2 基本数据类型与控制语句 6 实验1 输出希腊字母表 6 实验2 回文数 6 实验3 猜数字游戏 8 上机实践3 类与对象 9 实验1 三角形、梯形和圆形的类封装 9 实验2 实例成员与类成员 12 实验3 使用package语句与import语句 13 上机实践4 继承与接口 15 实验1 继承 15 实验2 上转型对象 17 实验3 接口回调 18 上机实践5 字符串、时间与数字 19 实验1 String类的常用方法 19 实验2 比较日期的大小 21 实验3 处理大整数 22 上机实践6 组件及事件处理 23 实验1 算术测试 23 实验2 信号灯 25 实验3 布局与日历 28 上机实践7 组件及事件处理2 31 实验1 方程求根 31 实验2 字体对话框 34 实验3 英语单词拼写训练 37 上机实践8 多线程 41 实验1 汉字打字练习 41 实验2 旋转的行星 43 实验3 双线程接力 47 上机实践9 输入输出流 50 实验1 学读汉字 50 实验2 统计英文单词字 53 实验2 读取Zip文件 56 上机实践10 Java 中的网络编程 57 实验1 读取服务器端文件 57 实验2 使用套接字读取服务器端对象 59 实验3 基于UDP的图像传输 62 上机实践11 数据结构 66 实验1 扫雷小游戏 66 实验2 排序与查找 70 实验3 使用TreeSet排序 72 上机实践12 java Swing 74 实验1 JLayeredPane分层窗格 74 实验2 使用表格显示日历 75 实验3 多文档界面(MDI) 78 上机实践1 初识Java 实验1 一个简单的应用程序 2.模板代码 Hello.java package 实验一; public class Hello { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("你好,很高兴学习Java"); //命令行窗口输出"你好,很高兴学习Java" A a=new A(); a.fA(); } } class A { void fA() {System.out.println("we are student"); } } 实验2 一个简单的Java Applet程序 2.模板代码 FirstApplet.java import java.applet.*; import java.awt.*; public class FirstApplet extends Applet { public void paint(Graphics g) { g.setColor(Color.blue); g.drawString("这是一个Java Applet 程序",10,30);//在Java Applet中绘制一行文字:“这是一个Java Applet 程序” g.setColor(Color.red); g.setFont(new Font("宋体",Font.BOLD,36)); g.drawString("我改变了字体",20,50);//在Java Applet中绘制一行文字:“我改变了字体” } }实验3 联合编译 2.模板代码 public class MainClass { public static void main (String args[ ]) { System.out.println("你好,只需编译我") ; //命令行窗口输出"你好,只需编译我" A a=new A(); a.fA(); B b=new B(); b.fB(); } } public class A { void fA() {

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孙同学1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值