99网
您的当前位置:首页java程序设计课程--实验报告-实验11

java程序设计课程--实验报告-实验11

来源:99网
《Java开发技术》实验报告

实验序号:实验11 实验项目名称:面向对象设计 学 号 实验地点 实1-316 姓 名 指导教师 专业、班 实验时间 2012-11 -21 一、实验目的及要求 二、实验设备(环境)及要求 PC机,windows xp,软件环境(jdk1.6,tomcat web服务器,Eclipse)    硬件要求:CPU PII 以上,M 内存,100M 硬盘空间。 软件要求:Windows98/Me/XP/NT/2000,IE 5 以上。 开发环境:JDK1.6.0_10 三、实验内容与步骤 求平均值 编写一个方法average,该方法以两个整数为参数,并以双精度形式返回两个整数的平均值。 重载上述方法average,以3个整数为参数,并以双精度形式返回这3个整数的平均值。 编写程序测试上述两个方法。 Test.java的源代码如下: import java.util.Scanner; public class Test { //编写一个方法average public static double Average(int x,int y){ } double result; result = (double)(x+y)/2; return result; public static void main(String args[]){ System.out.println(\"请输入整数a:\"); Scanner scan1=new Scanner(System.in); int a = scan1.nextInt(); System.out.println(\"请输入整数b:\"); Scanner scan2=new Scanner(System.in); int b = scan2.nextInt(); System.out.println(\"请输入整数c:\"); Scanner scan3=new Scanner(System.in); int c = scan3.nextInt(); } double ave1 = Average(a,b); System.out.println(\"Average of \"+ a +\" and \" + b +\" is \"+ ave1); double ave2 = Average(a,b,c); System.out.println(\"Average of \"+ a +\" and \" + b +\" and \" + c+\" is \"+ ave2); } //重载上述方法average public static double Average(int x,int y,int z){ } double result; result = (double)(x+y+z)/3; return result; 修改Coin类(参考例5.3,5.4) 1. 创建一个新类,名为BiasedCoin。 a) 添加一个名为bias的double类型私有数据。这个数据变量表示大于0小于1之间的一个数字,描述硬币投掷出正面结果的概率。如果bias=0.6,硬币投掷出正面的概率为60%。 b) 修改默认的构造方法,给bias赋初值为0.5。 c) 修改flip方法,使其生一个随机数,如果该数字小于bias,则给face赋值为Heads,否则赋值为Tails。 d) 再编写一个构造方法,包含一个double类型参数,该参数代表bias。如果该参数有效(大于0并且小于1),该构造方法将参数值赋给bias变量;否则将0.5赋给bias。调用flip方法对face值进行初始化。 2. 编译该类,确保没有语法错误。 3. 使用3个BiasedCoin对象编写一个程序。使用没有参数的构造方法初始化一个一般的硬币对象。读入一个bias值,另外初始化2个将bias作为构造方法参数的硬币对象。使用一个循环语句对每个对象将硬币投掷100次,计算结果为Heads的次数。循环结束以后,打印3个BiasedCoin对象投掷结果为Heads的次数,查看测试结果是否不同。 BiasedCoin.java的源代码如下: public class BiasedCoin { public final int HEADS=0; public final int TATLS=1; private double bias; private int face; //------------------------- // Sets up the coin by flipping it initially. //-------------------------- public BiasedCoin(){ bias=0.5; flip(); } public BiasedCoin(double bias){ if(0<=bias && bias<1){ this.bias=bias; } else this.bias=0.5; flip(); } //------------------------- // Flips the coin by randomly choosing a face //-------------------------- public void flip() { double i=Math.random(); if (imaxRun) maxRun=currentRun; currentRun=0; } } System.out.println(); System.out.println(\"最大的连续次数为:\"+maxRun); maxRun=0; } 静态成员的使用 Account.java是一个简单的银行账户类,提供了取款,存款,获取余额与账号等方法,并返回一个关于账户的字符串描述信息。假设银行希望监控现有的账户的数量: a) 声明一个私有静态整型变量numAccount用于保存该值(该变量自动被初始化为0)。 b) 修改构造器代码,一旦创建一个银行账户,该变量就自增一次。 c) 添加静态方法numAccounts,返回账户总数。由于该值为静态,它的信息与任何专门的账户都不相关。 编写一个测试程序,创建三个账户,然后用numAccounts方法返回账户总数并打印账户总数。 Account.java的源代码如下: public class Account { private double balance; private String name; private long acctNum; static int numAccounts = 0; public Account(double initBal,String owner,long number){ balance = initBal; name = owner; acctNum = number; numAccounts++; } public static int numAccounts(){ return numAccounts; } public void withdraw(double amount){ if(balance >= amount) balance -= amount; else System.out.println(\"Insufficient funds\"); } public void deposit(double amount){ } } balance += amount; public String toString(){ return \"Name: \" + name + \"\\nAccount Number: \"+acctNum +\"\\nBalance: \"+balance; } AccountTest.java的源代码如下: import java.util.Scanner; public class AccountTest { public static void main(String[] args){ Account a = new Account(103.65,\"zhangsan\ Account b = new Account(500,\"lisi\Account c = new Account(888.88,\"wangwu\System.out.println(a); System.out.println(b); System.out.println(c); System.out.println(\"账户总数\"+Account.numAccounts()); System.out.println(); } } 接口的使用 1,定义一个接口Shape,它含有一个抽象方法 double area( ) 2,定义一个表示三角形的类Triangle,该类实现接口Shape。此类中有两个分别用于存储三角形底边和高度的private成员变量int width和int height,在该类实现的方法area中计算并返回三角形的面积。 3,定义一个表示矩形的类Rectangle,该类实现接口Shape。此类中有两个分别表示矩形长度和高度度的成员变量int width和int height,在该类实现的方法area中计算并返回矩形的面积。 4,定义一个类ShapeTest,该类中有一个方法如下: public static void showArea(Shape s){ System.out.println(“area=”+s.area()); } 在ShapeTest类中定义main函数,在main函数中创建Triang类的对象和Rectangle类的对象,并调用方法showArea两次以输出两个对象的面积。  思考:两次调用showArea方法时调用的area方法各是在哪个类中定义的方法?答:三角形调用showArea方法时调用的area方法是Triangle类中定义的方法,而矩形调用showArea方法时调用的area方法是Rectangle类中定义的方法 Shape.java的源代码如下: public abstract interface Shape { public double Area(); } Triangle.java的源代码如下: public class Triangle implements Shape { } Rectangle.java的源代码如下: public class Rectangle implements Shape { private int width; private int height; public Rectangle(int width,int height){ private int width; private int height; public Triangle(int width,int height){ this.width = width; this.height = height; } public double Area(){ } return width*height/2; } } this.width = width; this.height = height; public double Area(){ return width*height; } ShapeTest.java的源代码如下: public class ShapeTest { } public static void main(String[] args){ Triangle a = new Triangle(3,4); System.out.print(\"三角形的面积:\"); showArea(a); Shape b = new Rectangle(5,6); System.out.println(\"长方形的面积:\"); showArea(b); } System.out.println(\"area=\"+s.Area()); } public static void showArea(Shape s){ 四、实验结果与数据处理 求平均值的实验结果如下图: 修改Coin类的实验结果如下图: 运行无参时的结果如下图: 输入bias的结果如下图: 静态成员的使用的实验结果如下图: 接口的使用的实验结果如下图: 五、分析与讨论 通过本次实验,我大致掌握了静态类成员方法的使用,重载以及接口的使用,接口可以被多个类实现,在本次实验中,接口Shpape中含有抽象方法area,类Triangle和类Rectangle共同调用了接口Shape中的抽象方法area,来求解不同形状的面积,接口还提供方法声明与方法相分离的机制,使实现接口的多个类表现出共同的行为能力,接口中声明的抽象方法在实现接口的多个类中表现出多态性,而两次调用showArea方法时调用的area方法也不相同,三角形调用showArea方法时调用的area方法是Triangle类中定义的方法,而矩形调用showArea方法时调用的area方法是Rectangle类中定义的方法。 六、教师评语 签名: 日期:

成绩

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