上机实践 3 类与对象 实验 1 三角形、梯形和圆形的类封装 1 .答案: 【代码 1 】: sideA=a; sideB=b; sideC=c; 【代码 2 】: a+b>c&&a+c>b&&c+b>a 【代码 3 】: boo=true; 【代码 4 】: boo=false; 【代码 5 】: if(boo) { length=sideA+sideB+sideC; return length; } else { System.out.println(" 不是一个三角形 , 不能计算周长 "); return 0; } 【代码 6 】: sideA=a;sideB=b;sideC=c; 【代码 7 】: a+b>c&&a+c>b&&c+b>a 【代码 8 】: boo=true; 【代码 9 】: boo=false; 【代码 10 】: above=a; bottom=b; height=h; 【代码 11 】: area=(above+bottom)/2*height; return area; 【代码 12 】: radius=r; 【代码 13 】: return 3.14*radius*radius; 【代码 14 】: return 3.14*2*radius; 【代码 15 】: circle=new Circle(10); 【代码 16 】: trangle=new Trangle(3,4,5); 【代码 17 】: lader=new Lader(3,4,10); 【代码 18 】: length=circle.getLength(); 【代码 19 】: area=circle.getArea(); 【代码 20 】: length=trangle.getLength(); 【代码 21 】: area=trangle.getArea(); 【代码 22 】: area=lader.getArea(); 【代码 23 】: trangle.setABC(12,34,1); 【代码 24 】: area=trangle.getArea(); 【代码 25 】: length=trangle.getLength(); 2 .模板代码 AreaAndLength.java class Trangle { double sideA,sideB,sideC,area,length; boolean boo; public Trangle(double a,double b,double c) { 【代码 1 】 // 参数 a,b,c 分别赋值给 sideA,sideB,sideC if( 【代码 2 】 ) //a,b,c 构成三角形的条件表达式 { 【代码 3 】 // 给 boo 赋值。 } else { 【代码 4 】 // 给 boo 赋值。 } } double getLength() { 【代码 5 】 // 方法体,要求计算出 length 的值并返回 } public double getArea() { if(boo) { double p=(sideA+sideB+sideC)/2.0; area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ; return area; } else { System.out.println(" 不是一个三角形 , 不能计算面积 "); return 0; } } public void setABC(double a,double b,double c) { 【代码 6 】 // 参数 a,b,c 分别赋值给 sideA,sideB,sideC if( 【代码 7 】 ) //a,b,c 构成三角形的条件表达式 { 【代码 8 】 // 给 boo 赋值。 } else { 【代码 9 】 // 给 boo 赋值。 } } } class Lader { double above,bottom,height,area; Lader(double a,double b,double h) { 【代码 10 】 // 方法体,将参数 a,b,c 分别赋值给 above,bottom,height } double getArea() { 【代码 11 】 // 方法体, , 要求计算出 area 返回 } } class Circle { double radius,area; Circle(double r) { 【代码 12 】 // 方法体 } double getArea() { 【代码 13 】 // 方法体,要求计算出 area 返回 } double getLength() { 【代码 14 】 //getArea 方法体的代码 , 要求计算出 length 返回 } void setRadius(double newRadius) { radius=newRadius; } double getRadius() { return radius; } } public class AreaAndLength { public static void main(String args[]) { double length,area; Circle circle=null; Trangle trangle; Lader lader; 【代码 15 】 // 创建对象 circle 【代码 16 】 // 创建对象 trangle 。 【代码 17 】 // 创建对象 lader 【代码 18 】 // circle 调用方法返回赋值给 length System.out.println(" 圆的周长 :"+length); 【代码 19 】 // circle 调用方法返回面积并赋值给 area System.out.println(" 圆的面积 :"+area); 【代码 20 】 // trangle 调用方法返回赋值给 length System.out.println(" 三角形的周长 :"+length); 【代码 21 】 // trangle 调用方法返回面积并赋值给 area System.out.println(" 三角形的面积 :"+area); 【代码 22 】 // lader 调用方法返回面积并赋值给 area System.out.println(" 梯形的面积 :"+area); 【代码 23 】 // trangle 调用方法设置三个边,要求将三个边修改为 12,34,1 。 【代码 24 】 // trangle 调用方法返回面积并赋值给 area System.out.println(" 三角形的面积 :"+area); 【代码 25 】 // trangle 调用方法返回赋值给 length System.out.println(" 三角形的周长 :"+length); } } 实验 2 实例成员与类成员 1 .答案: 【代码 1 】: float a; 【代码 2 】: static float b; 【代码 3 】: this.a=a; 【代码 4 】: this.b=b; 【代码 5 】: A.b=100; 【代码 6 】: A.inputB(); 【代码 7 】: cat.setA(200); 【代码 8 】: cat.setB(400); 【代码 9 】: dog.setA(150); 【代码 10 】: dog.setB(300); 【代码 11 】: cat.inputA(); 【代码 12 】: cat.inputB(); 【代码 13 】: dog.inputA(); 【代码 14 】: dog.inputB(); 2 .模板代码 Example.java class A { 【代码 1 】 // 声明一个 float 型实例变量 a 【代码 2 】 // 声明一个 float 型类变量 b, 即 static 变量 b void setA(float a) { 【代码 3 】 // 将参数 a 的值赋值给成员变量 a } void setB(float b) { 【代码 4 】 // 将参数 b 的值赋值给成员变量 b } float getA() { return a; } float getB() { return b; } void inputA() { System.out.println(a); } static void inputB() { System.out.println(b); } } public class Example { public static void main(String args[]) { 【代码 5 】 // 通过类名操作类变量 b, 并赋值 100 【代码 6 】 // 通过类名调用方法 inputB() A cat=new A(); A dog=new A(); 【代码 7 】 //cat 象调用方法 setA(int a) 将 cat 的成员 a 的值设置为 200 【代码 8 】 //cat 调用方法 setB(int b) 将 cat 的成员 b 的值设置为 400 【代码 9 】 //dog 象调用方法 setA(int a) 将 dog 的成员 a 的值设置为 150 【代码 10 】 //dog 调用方法 setB(int b) 将 dog 的成员 b 的值设置为 300 【代码 11 】 //cat 调用 inputA() 。 【代码 12 】 //cat 调用 inputB() 。 【代码 13 】 //dog 调用 inputA() 。 【代码 14 】 //dog 调用 inputB() 。 } } 实验 3 使用 package 语句与 import 语句 1 .答案:无 2 .模板代码 SquareEquation .java package tom.jiafei; 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; } } } SunRise.java import tom.jiafei.*; class SunRise { public static void main(String args[ ]) { SquareEquation equation=new SquareEquation(4,5,1); equation.getRoots(); equation.setCoefficient(-3,4,5); equation.getRoots(); } } 练习 1 教材 108 页,第 3 题第( 2 )小题,请在实验报告中分析运行结果。 教材 108 页,第 3 题第( 3 )小题,请在实验报告中分析运行结果。 教材 108 页,第 3 题第( 4 )小题,请在实验报告中分析运行结果。 练习 2 教材 110 页,第 4 题,请在实验报告中描述程序思路,并展示源代码和运行结果。