Java程序设计课程上机实验五报告模板.doc
昆明理工大学信息工程与自动化学院学生实验报告( 2014 2015 学年 第 2 学期 )课程名称:Java程序设计 开课实验室: 信自楼444 2015年 6 月 5 日年级、专业、班学号姓名成绩实验项目名称计算图形面积(正方形和圆形)指导教师 教师评语该同学是否了解实验原理:A.了解B.基本了解C.不了解该同学的实验能力:A.强 B.中等 C.差 该同学的实验是否达到要求:A.达到B.基本达到C.未达到实验报告是否规范:A.规范B.基本规范C.不规范实验过程是否详细记录:A.详细B.一般 C.没有 教师签名: 年 月 日一、上机目的及内容1. 实 验 目 的: 1) 理解Java抽象类与对象、封装、继承的概念;2) 掌握Java抽象类中成员变量和抽象方法的声明与实现;3) 掌握对象的创建与使用;4) 理解包的作用与用法;5) 掌握Java中this关键字的使用;6) 熟悉Java继承与封装的具体使用,熟悉访问权限修饰符的用法。2. 实 验 内 容: 定义两个类Square和Circle,分别表示正方形和圆形 分别在Square类和Circle类中定义c(周长)属性和area方法,并 根据各自图形的公式计算对应的面积 定义父类Shape并抽取属性和方法 新建类TestShape,在该类中新建方法maxArea方法,该方法实现计 算多种图形面积的最大值3. 实 验要求: 1) 画出程序流程图;2) 所有类、变量、方法命名必须规范;二、实验原理及基本技术路线图开始创建抽象类定义属性以及抽象方法创建Square、Circle类重写抽象方法对其进行实现创建测试类,对抽象类及其子类进行测试结束三、所用仪器、材料装有jdk、eclipse的pc机四、实验方法、步骤1.创建抽象类Shape。有抽象方法的类就是抽象类。在Shape类中定义好周长c的属性以及计算周长和面积的抽象方法。2.创建Shape类的子类Square和Circle类,分别在这两个子类中重写、实现Shape的抽象方法。3.创建测试类,定义测试方法比较半径或者边长相等时,哪种图形的面积比较大,并输出最大的面积。五、实验过程原始记录public abstract class Shape /抽象类的创建public double c;/抽象类的周长属性protected Shape()/抽象类的构造方法/抽象方法的定义(周长、面积方法)public abstract double getArea();public abstract double getc();public class Square extends Shape/正方形(抽象类子类一)public double sideLenth;/边长的定义 Square(double sideLenth)/构造方法this.sideLenth=sideLenth;Override/抽象方法的实现public double getArea() /实现求面积才方法/ TODO 自动生成的方法存根return this.sideLenth*this.sideLenth;Overridepublic double getc() /实现求周长的方法/ TODO 自动生成的方法存根c=4*this.sideLenth;return c;public double getSideLenth() return sideLenth;public void setSideLenth(double sideLenth) this.sideLenth = sideLenth;public static void main(String args)Square sq=new Square(4.0);double a,z;sq.setSideLenth(4.0);a=sq.getArea();z=sq.getc();System.out.println("正方形面积是"+a);System.out.print("正方形周长是"+z);public class Circle extends Shape public double radius;/定义半径属性 final double PI=3.14;/pi常量 Circle(double radius)/构造方法 this.radius=radius; Overridepublic double getArea() / TODO 自动生成的方法存根return this.radius*this.radius*PI;Overridepublic double getc() / TODO 自动生成的方法存根c=this.radius*2*PI;return c;public double getRadius() return radius;public void setRadius(double radius) this.radius = radius;public static void main(String args)Circle ci=new Circle(4.0);double c,a;ci.setRadius(4.0);a=ci.getArea();c=ci.getc();System.out.println("圆面积是"+a);System.out.print("圆周长是"+c);public class TestShape /测试类public static void main(String args) / TODO 自动生成的方法存根Shape s1=new Circle(5.0);Shape s2=new Square(5.0);System.out.println("面积是"+s1.getArea()+","+s2.getArea();System.out.print(maxArea(s1,s2).getArea();public static Shape maxArea(Shape s1,Shape s2)Shape s;if(s1.getArea()>s2.getArea()s=s1;elses=s2;return s;六、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须用计算纸或程序运行结果、改进、收获)1Square对抽象方法的实现2.Circle类对抽象方法的实现3.测试类对抽象类的测试感悟:在学长的帮助下,此次实验加深了我对抽象类的了解,学会了如何实现抽象类的抽象方法以及如何利用测试类对类进行测试。我对类的封装、继承以及权限修饰符的使用有了进一步的熟悉和了解。在本次试验中,我再次体验到了Java编程的乐趣,学到了许多与Java编程相关的知识,充实了自己的课堂生活。