实验报告(四)继承和多态 (完整代码).doc_第1页
实验报告(四)继承和多态 (完整代码).doc_第2页
实验报告(四)继承和多态 (完整代码).doc_第3页
实验报告(四)继承和多态 (完整代码).doc_第4页
实验报告(四)继承和多态 (完整代码).doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

福建农林大学计算机与信息学院实验报告系 计算机专业年级12级成绩姓名学号实验室机号实验时间教师签字实验(四) 继承和多态一、实验目的和要求1. 掌握面向对象的继承关系2. 理解面向对象的多态3. 掌握方法的重写4. 掌握接口的实现二、实验内容和原理设计一个抽象类Shape,包括2个抽象方法,分别是计算形状的周长和面积。设计具体类Rectangle和Circle,分别表示矩形和圆,它们都是Shapes的子类。使Rectangle和 Circle都实现Comparable接口(根据面积比较大小),编写一个通用的排序程序和一个通用的二分查找程序(自己写代码实现),能对这二种类型的数组进行排序并查找指定的对象。三、实验环境1. 硬件环境:2. 软件环境:JDK1.5四、算法描述及实验步骤1. 算法描述(可以用类图、流程图、伪代码或源程序描述)package test;import javax.swing.JOptionPane;import java.util.Scanner;public class Test public static void main(String args) System.out.println(要创建几个圆?:); Scanner a1 = new Scanner(System.in); int a = a1.nextInt(); System.out.println(总共创建了 + a + 个圆n请输入各个圆的半径:); Shape circle = new Shapea; Scanner input2 = new Scanner(System.in); for (int i = 0; i a; i+) circlei = new Circle(input2.nextDouble(); System.out.println(要创建几个矩形?:); Scanner b2 = new Scanner(System.in); int b = b2.nextInt(); Shape rectangle = new Shapeb; System.out.println(总共创建了 + b + 个矩形n请依次输入各个矩形的长和宽:); Scanner c3 = new Scanner(System.in); for (int i = 0; i b; i+) rectanglei = new Rectangle(c3.nextDouble(), c3.nextDouble(); Shape.sort(circle); String str1 = ; for (int i = 0; i circle.length; i+) str1 += String.valueOf(i + 1) + circlei + n; System.out.println(您所创建的圆按半径由小到大排序如下:n + str1); Shape.sort(rectangle); String str2 = ; for (int i = 0; i rectangle.length; i+) str2 += String.valueOf(i + 1) + rectanglei + n; System.out.println(您所创建的矩形按面积由小到大排序如下:n + str2); System.out.println(要查找的圆的半径?:); Scanner e5 = new Scanner(System.in); double e = e5.nextDouble(); Circle c1 = new Circle(e); if (Shape.search(circle, c1) != 0) System.out.println(所查找的圆的位置及其具体信息为:n + Shape.search(circle, c1) + c1); else System.out.println(未找到符合的圆!); System.out.println(要查找的矩形的长和宽?:); Scanner f6 = new Scanner(System.in); Rectangle r1 = new Rectangle(f6.nextDouble(), f6.nextDouble(); if (Shape.search(rectangle, r1) != 0) System.out.println(所查找的矩形的位置及其具体信息为:n + Shape.search(rectangle, r1) + r1); else System.out.println(未找到符合的矩形!); class Circle extends Shape private double radius; public Circle() this(0); public Circle(double radius) setRadius(radius); public double getRadius() return radius; public void setRadius(double val) this.radius = (val (Circle) o).radius) return 1; else if (radius = 1; i-) currentMax = listi; currentMaxIndex = i; for (int j = i - 1; j = 0; j-) if (Comparable) currentMax).compareTo(listj) 0) currentMax = listj; currentMaxIndex = j; if (currentMaxIndex != i) listcurrentMaxIndex = listi; listi = currentMax; public static int search(Shape list, Shape target) int mid, low = 0, high = list.length - 1; sort(list); while (low = high) mid = (low + high) / 2; if (Comparable) target).compareTo(listmid) 0) low = mid + 1; else return mid + 1; return 0; class Rectangle extends Shape private double length; private double width; public Rectangle(double length, double width) setLength(length); setWidth(width); public double getLength() return length; public void setLength(double val) this.length = (val = 0 ? 1 : val); public double getWidth() return width; public void setWidth(double val) this.width = (val (Rectangle) o).getArea() return 1; else if (getArea() (Rectangle) o).getArea() return -1; else return 0; interface Comparable int compareTo(Object o);2. 实验步骤l 创建一个UML项目,并设计类Shape、Rectangle和Circle,并建立描述Shape、Rectangle、Circle和Comparable间关系的类图l 创建一个Java应用项目l 把UML项目中的类自动生成代码到Java应用项目中l 实现类中的方法及通用的排序和检索程序l 进行编译l 进行测试,使用的测试用例:输入:预期输出:五、调试过程1. 编译过程记录算法实现中发现的语法错误及改正2. 调试过程记录算法实现中发现的逻辑错

温馨提示

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

评论

0/150

提交评论