面向对象--类的设计与封装二试验报告
浙江大学城市学院实验报告浙江大学城市学院实验报告 课程名称:面向对象程序设计 实验项目名称:类的设计与封装(二) 学生姓名:专业:学号: 实验地点:实验日期:年月日 一. 实验目的和要求 1.掌握类的实例成员与类成员的使用特点,以及两者之间区别 2.掌握类的设计方法。 二、实验内容 1. 程序填空。根据注释中的提示将程序补充完整,并运行程序解释输出结果。 2. 程序填空。将三角形、梯形和圆形等类的程序代码补充完整。 3. 编程实现:设计表示数学上的等差数列对象的类。 三. 实验结果与分析 1. 程序填空,请根据注释中的提示将以下程序补充完整。并运行程序解释输出结果。 class A { _____double a;________________ _____double a;________________ ////声明一个声明一个 doubledouble 类型变量类型变量 a a _____static double b;_______________ _____static double b;_______________////声明一个声明一个 doubledouble 类型的类型的类变量类变量 b b((注注 意此处)意此处) void setA(double a) { _____this.a=a;_____________________this.a=a;________________////将参数将参数 a a 的值赋值给成员变量的值赋值给成员变量 a a } void setB(double b) { ____this.b=b;_____________________this.b=b;_________________////将参数将参数 b b 的值赋值给成员变量的值赋值给成员变量 b b } double getA() { return a; } double getB() { return b; } void outputA() { System.out.println(a); } static void outputB() { System.out.println(b); } } public class Example { public static void main(String args[]) { ____A.b=100;__________________A.b=100;______________////通过类名操作类变量通过类名操作类变量 b,b,并赋值并赋值 100100 __A.outputB();____________A.outputB();__________////通过通过类名类名调用方法调用方法 outputB()outputB() A cat=new A(); A dog=new A(); ___cat.setA(200);_______cat.setA(200);____//cat//cat 调用方法调用方法 setA()setA()将成员将成员 a a 值设为值设为 200200 ___cat.setB(400);______cat.setB(400);___//cat//cat 调用方法调用方法 setB()setB()将成员将成员 b b 值设为值设为 400400 ___dog.setA(200);_____dog.setA(200);__//dog//dog 调用方法调用方法 setA()setA()将成员将成员 a a 值设为值设为 200200 ___cat.setB(900);______cat.setB(900);___//cat//cat 调用方法调用方法 setB()setB()将成员将成员 b b 值设为值设为 900900 ___cat.outputA();______cat.outputA();___//cat//cat 调用方法调用方法 outputA()outputA() ___cat.outputB();_____cat.outputB();__//cat//cat 调用方法调用方法 outputB()outputB() ___dog.outputA();_____dog.outputA();__//dog//dog 调用方法调用方法 outputA()outputA() ___dog.outputB();_____dog.outputB();__//dog//dog 调用方法调用方法 outputB()outputB() } } 2.以下程序设计了三角形、梯形和圆形类,请将程序补充完整。 packagepackage test; classclass Triangle{ doubledouble sideA,sideB,sideC;//三条边 publicpublic Triangle(doubledouble sideA,doubledouble sideB,doubledouble sideC){ //请补充 thisthis.sideA=sideA; thisthis.sideB=sideB; thisthis.sideC=sideC; } doubledouble getLength(){ //请补充 returnreturn thisthis.sideA+thisthis.sideB+thisthis.sideC; } publicpublic doubledouble getArea(){ /* 令p=(sideA+sideB+sideC)/2.0 那么面积是p*(p-sideA)*(p-sideB)*(p-sideC)的平方根; */ doubledouble p=(sideA+sideB+sideC)/2.0; doubledouble Area=Math.sqrt (p*(p-sideA)*(p-sideB)*(p-sideC)); returnreturn Area; } publicpublic voidvoid setABC(doubledouble sideA,doubledouble sideB,doubledouble sideC)//修改 三条边 { //请补充 thisthis.sideA=sideA; } } classclass Lader { doubledouble above,bottom,height;//上底、下底、高 Lader(doubledouble above,doubledouble bottom,doubledouble height) { //请补充 thisthis.above=above; thisthis.bottom=bottom; thisthis.height=height; thisthis.sideB=sideB; thisthis.sideC=sideC; } doubledouble getArea() { //请补充 returnreturn (above+bottom)*height/2.0; } } classclass Circle { doubledouble radius;//半径长度 Circle(