收藏 分享(赏)

Java类与对象实验报告.doc

上传人:weiwoduzun 文档编号:4219389 上传时间:2018-12-16 格式:DOC 页数:10 大小:99KB
下载 相关 举报
Java类与对象实验报告.doc_第1页
第1页 / 共10页
Java类与对象实验报告.doc_第2页
第2页 / 共10页
Java类与对象实验报告.doc_第3页
第3页 / 共10页
Java类与对象实验报告.doc_第4页
第4页 / 共10页
Java类与对象实验报告.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、西 安 邮 电 大 学(计算机学院)课内实验报告实验名称: 类与对象 专业名称: 计算机科学与技术班 级: 计科 1405 班 学生姓名: 高宏伟 学 号: 04141152指导教师: 刘霞林实验日期: 2016.9.29一、实验目的通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握 OOP 方式进行程序设计的方法。二、实验要求1 编写一个创建对象和使用对象的方法的程序。2 编写一个包含类成员和示例成员的程序。 3 编写一个使用 Java 包的程序。 三、实验内容(一)三角形、梯形和圆形的类封装 实验

2、要求:编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:a) Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。b) Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的功能。c) Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。 程序模板:AreaAndLength.jav

3、aclass Trangle double sideA,sideB,sideC,area,length;boolean boo;public Trangle(double a,double b,double c) this.sideA=a; /【代码 1】 参数 a,b,c 分别赋值给 sideA,sideB,sideCthis.sideB=b;this.sideC=c;if(sideA+sideB)sideC/【代码 3】给 boo 赋值。 else boo=false;【代码 4】 /给 boo 赋值。double getLength() return sideA+sideB+sideC;

4、【代码 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) this.sideA=a;this.sideB=b;this.sideC=c; /【代码

5、 6】参数 a,b,c 分别赋值给 sideA,sideB,sideCif(sideA+sideB)sideC【代码 8】 /给 boo 赋值。 else boo=false;【代码 9】 /给 boo 赋值。class Lader double above,bottom,height,area; Lader(double a,double b,double h)this.above=a;this.bottom=b;this.height=h;【代码 10】 /方法体,将参数 a,b,c 分别赋值给above,bottom,heightdouble getArea()return (above

6、+bottom)*height/2;【代码 11】 / 方法体,,要求计算出 area 返回class Circle double radius,area;Circle(double r) this.radius=r;【代码 12】 / 方法体double getArea() return Math.PI*radius*radius; /【 代码 13】方法体,要求计算出 area 返回double getLength() return Math.PI*2*radius; /【代码 14】getArea 方法体的代码,要求计算出 length返回void setRadius(double ne

7、wRadius) 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;circle=new Circle(5);【代码 15】 / 创建对象 circletrangle=new Trangle(3,4,5); 【代码 16】/创建对象 trangle。lader=new Lader(2,3

8、,4);【代码 17】 /创建对象 laderlength=circle.getLength();System.out.println(“圆的周长:“+length); area=circle.getArea();System.out.println(“圆的面积:“+area); length=trangle.getLength();System.out.println(“三角形的周长:“+length); area=trangle.getArea();System.out.println(“三角形的面积:“+area); area=lader.getArea();System.out.pri

9、ntln(“梯形的面积:“+area); trangle.setABC(12, 34, 1);area=trangle.getArea();System.out.println(“三角形的面积:“+area); length=trangle.getLength();System.out.println(“三角形的周长:“+length); 实验后的练习:1. 程序中仅仅省略【代码15】,编译能通过吗?不能通过,提示如下Exception in thread “main“ java.lang.Error: Unresolved compilation problems: The local va

10、riable circle may not have been initializedThe local variable circle may not have been initializedat AreaAndLength.Trangle$AreaAndLength.main(Trangle.java:85)2. 程序中仅仅省略【代码16】,编译能通过吗?不能通过,提示如下Exception in thread “main“ java.lang.Error: Unresolved compilation problems: The local variable trangle may n

11、ot have been initializedThe local variable trangle may not have been initializedThe local variable trangle may not have been initializedThe local variable trangle may not have been initializedThe local variable trangle may not have been initializedat AreaAndLength.Trangle$AreaAndLength.main(Trangle.

12、java:89)3. 程序中仅仅省略【代码15】,运行时出现怎样的异常提示? Exception in thread “main“ java.lang.Error: Unresolved compilation problems: The local variable circle may not have been initializedThe local variable circle may not have been initializedat AreaAndLength.Trangle$AreaAndLength.main(Trangle.java:85)1 给Trangle类增加3

13、个方法,分别用来返回3个边:sideA、sideB和sideC。double getsideA() return sideA; double getsideB() return sideB; double getsideC() return sideC; 2 让AreaAndLength类中的circle对象调用方法修改半径,然后输出修改后的半径以及修改半径后的圆的面积和周长。circle.setRadius(3);System.out.println(“修改后的半径为“+circle.getRadius();System.out.println(“修改后的面积为“+circle.getAre

14、a();System.out.println(“修改后的周长为“+circle.getLength();(二)实例成员与类成员。 实验要求:按程序模板的要求编写源文件,要特别注意程序的输出结果,并能正确解释输出的结果。 程序运行效果示例:程序运行效果如下图所示: 程序模板:Example.javaclass A 【代码 1】 /声明一个 float 型实例变量 a【代码 2】 /声明一个 float 型类变量 b,void setA(float a) 【代码 3】 /将参数 a 的值赋值给成员变量 avoid setB(float b) 【代码 4】 /将参数 b 的值赋值给成员变量 bflo

15、at 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) A.b=100; /通过类名操作类变量 b,并赋值 100A.inputB(); /通过类名调用方法 inputB()A cat=new A();A dog=new A();cat.setA(200); /cat 调用方法 setA(int a)将

16、 cat 的成员 a 的值设置为 200cat.setB(400); /cat 调用方法 setB(int b)将 cat 的成员 b 的值设置为 400dog.setA(150); /dog 调用方法 setA(int a)将 dog 的成员 a 的值设置为 150dog.setB(300); /dog 调用方法 setB(int b)将 dog 的成员 b 的值设置为 300cat.inputA(); /cat 调用 inputA()。 cat.inputB(); /cat 调用 inputB()。 dog.inputA(); /dog 调用 inputA()。 dog.inputB();

17、 /dog 调用 inputB()。 实验后的练习:1. 将inputA()方法中的System.out.println(a);改写为System.out.println(a+b);编译是否出错?为什么?不会,可以在非静态方法中引用静态变量。2. 将inputB()方法中的System.out.println(b);改写为System.out.println(a+b);编译是否报错?为什么? 会,无法在静态方法中引用非静态变量。 (三)使用package语句与import语句。 实验要求:按实验要求使用package语句,并用import语句使用Java平台提供的包中的类以及自定义包中的类。掌

18、握一些重要的操作步骤。程序模板:模板 1:将模板 1 给出的 Java 源文件命名为 SquareEquation.java,将编译后得到的字节码文件复制到 c:1000tomjiafei 目录中。SquareEquation.javapackage 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=t

19、rue; 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,%fn“,root1,root2); elseSystem.out.printf(“方程没有实根n“);elseSystem.out.println(“不是一元 2 次方程“); publ

20、ic 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;模板 2:将模板 2 给出的 Java 源程序 SunRise.java 保存到 d:2000 中。在编译模板 2给出的 Java 源文件之前,要重新设置 classpath。假设本地机 SDK 的安装目录是 E:jdk1.8。在命令行执行如下命令:set classpath=C:Program Filesjavajdkjrelibrt.jar;.;c:1000或用鼠标右键点击

21、“我的电脑”,弹出快捷菜单,然后选择“属性”命令,弹出“系统属性”对话框,再单击该对话框中的“高级”选项卡,然后单击“环境变量”按钮。将 classpath 的值修改为:E:jdk1.5jrelibrt.jar;.;c:1000C:Program Filesjavajdkjrelibrt.jar;.;c:1000然后重新打开一个命令行窗口,编译模板 2 给出的 Java 源程序。SunRise.javaimport 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();【运行结果】 五 总结本次实验是Java的第二次上机,通过编程和上机实验理解了 Java 语言是如何体现面向对象编程基本思想,了解了类的封装方法,以及如何创建类和对象,了解了成员变量和成员方法的特性,掌握了 OOP 方式进行程序设计的方法。感受到了Java语言独有的魅力,为以后的Java语言编程奠定了基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > Java

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报