北京信息科技大学Java语言程序设计-抽象类和接口_第1页
北京信息科技大学Java语言程序设计-抽象类和接口_第2页
北京信息科技大学Java语言程序设计-抽象类和接口_第3页
北京信息科技大学Java语言程序设计-抽象类和接口_第4页
北京信息科技大学Java语言程序设计-抽象类和接口_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验4 抽象类和接口 【实验宗旨】 每天做一点编程练习。 【实验目的】 1、学习和掌握Java抽象类的定义和使用。 2、学习和掌握Java接口的定义和使用。 3、进一步学习和掌握通用程序设计方法。 【实验步骤(解题过程)】 参见实验2。 【实验内容】 1、(CompareableCirlce类)创建名为CompareableCircle类,它扩展Circle类并实现Compareable接口。画出UML图,实现compareTo方法,使其可以根据面积比较两个圆。编写一个测试程序求出CompareableCircle对象的两个实例中的较大者。 说明:来源编程练习14.2(P399)。java.l

2、ang.Compareable接口参见14.5小节(P378)。Circle类的实现,参见程序清单11.2(P303)。【实验预习】1. 问题描述:该题描述的是创建一个CompareableCircle类来实现两个圆的比较。2. 创建两个CompareableCircle类的实例,利用Comparable接口,并调用ComparableMax方法实现。【附程序代码】SuppressWarnings(unchecked)public class testCompareableCircle/主方法public static void main(Stringargs)CompareableCircl

3、e C1=new CompareableCircle(10);CompareableCircle C2=new CompareableCircle(3);System.out.println(The maxnium Circle is +ComparableMax(C1,C2)+的圆);/比较两个圆的大小public static Comparable ComparableMax(Comparable C1,Comparable C2)if(CpareTo(C2)0)return C1;else return C2;public class CompareableCircle extends

4、Circle implements Comparable/建立个指定半径的圆CompareableCircle(double radius)super(radius);/Comparable接口的方法public int compareTo(Object o)if(getArea()(CompareableCircle)o).getArea()return 1;else if(getArea() (Circle1)o).getArea() return 1; else if (this.getArea() (Circle1)o).getArea() return -1; else return

5、 0; /覆盖Object中的equals方法 public boolean equals(Object o) return this.getArea() = (Circle1)o).getArea(); 【UML图】【实验过程与运行结果】 在实验过程中,不会编写equals的覆盖方法。解决方法:应该是写成; public boolean equals(Object o) return this.getArea() = (Circle1)o).getArea();3、(求几何对象的面积之和)编写一个方法,求数组中所有几何对象的面积之和。方法签名如下: public static double

6、sumArea(GeometricObject a) 编写测试程序,创建4个对象(两个圆形和两个矩形)的数组,然后使用sumArea方法求它们的总面积。 说明:来源:编程练习14.8(P400);分别实现Geometric Object类(程序清单14-1(P372)、Rectangle类(程序清单11-3(P305)和Circle类(程序清单11-2(P303);建立GeometricObject类层次结构(图14-2(P372)。 【附程序代码】public class Area public static void main(String args) new Area(); public

7、 Area() GeometricObject a = new Circle(5), new Circle(6), new Rectangle(2, 3), new Rectangle(2, 3); System.out.println(The total area is + sumArea(a); public static double sumArea(GeometricObject a) double sum = 0; for (int i = 0; i a.length; i+) sum += ai.getArea(); return sum; /矩形类class Rectangle

8、extends GeometricObject private double width; private double height; /创建一个指定长和宽的矩形 public Rectangle(double width, double height) this.width = width; this.height = height; /返回矩形的宽 public double getWidth() return width; /设定矩形的宽 public void setWidth(double width) this.width = width; /返回举矩形的高 public dou

9、ble getHeight() return height; /设定矩形的高 public void setHeight(double height) this.height = height; /返回矩形面积 public double getArea() return width*height; /求矩形的周长 public double getPerimeter() return 2*(width + height); /覆盖equals方法 public boolean equals(Rectangle rectangle) return (width = rectangle.getW

10、idth() & (height = rectangle.getHeight(); /返回基本信息 public String toString() return Rectangle width = + width + and height = + height; 【运行结果】【思考题】 1、练习1和练习2中,使用了不同的方法建立了可比较的Circle类。结合编程实现,说说你对不同设计方案的想法和体会。利用不同的设计方案可易于解决不同的实际问题。2、练习3中,如果将方法sumArea的参数数组定义为Cirlce,可以实现相应的功能吗?定义为Object呢?为什么?结合本题,说说你对通用程序设计的理解。前者不可以,后者可以。编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。3、说说抽象类和接口的相同和不同之处。.相同点 都不能被直接实例化,都可以通过继承实现其抽象方法。 都是面向抽象编程的技术基础,实现了诸多的设计模式。不同点 接口支持多继承;抽象类不能实现多继承。 接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。 接

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论